Katakanlah ada dua skrip python yang ingin menulis data ke tabel yang sama yang disimpan dalam file SQLite menggunakan modul sqlite3
. File SQLite disimpan pada sistem file NFS. Di SQLite-FAQ saya membaca:
SQLite menggunakan kunci pembaca/penulis untuk mengontrol akses ke database. [...] Namun berhati-hatilah: mekanisme penguncian ini mungkin tidak berfungsi dengan benar jika file database disimpan pada sistem file NFS. Hal ini karena penguncian file fcntl() rusak pada banyak implementasi NFS. Anda harus menghindari meletakkan file database SQLite di NFS jika beberapa proses mungkin mencoba mengakses file secara bersamaan.
Apakah ini berarti proses tersebut tidak mungkin dilakukan sama sekali atau adakah cara untuk memastikan bahwa satu proses menunggu hingga proses lainnya selesai?
INSERT tidak rumit. Hanya beberapa:
INSERT_STATEMENT = "INSERT INTO some_table (row, col, val) VALUES (?, ?, ?)"
connection.executemany(INSERT_STATEMENT, triples)
Dan himpunan yang disisipkan terputus-putus.
Pertanyaan lebih lanjut: Apakah Masalah NFS terjadi ketika dua proses mencoba menulis ke tabel yang sama atau ketika mereka mencoba menulis ke database yang sama (yang berupa file)? Apakah solusinya adalah membiarkan setiap proses membuat tabelnya sendiri di database (file) yang sama dan menulis ke sana?