Возможна ли блокировка файла sqlite в файловой системе NFS?

Допустим, есть два скрипта Python, которые хотят записывать данные в одну и ту же таблицу, которая хранится в файле SQLite, используя модуль sqlite3. Файл SQLite-хранится в файловой системе NFS. В SQLite-FAQ я прочитал:

SQLite использует блокировки чтения/записи для управления доступом к базе данных. [...] Но будьте осторожны:этот механизм блокировки может работать неправильно если файл базы данных хранится в файловой системе NFS. Это потому что Блокировка файла fcntl()не работает во многих реализациях NFS. Вам следует избегайте размещения файлов базы данных SQLite в NFS, если несколько процессов могут попробуйте одновременно получить доступ к файлу.

Означает ли это, что это вообще невозможно, или есть какой-то способ гарантировать, что один процесс ждет, пока не завершится другой?

INSERT не является сложным. Просто некоторые:

INSERT_STATEMENT = "INSERT INTO some_table (row, col, val) VALUES (?, ?, ?)"
connection.executemany(INSERT_STATEMENT, triples)

И вставленные множества не пересекаются.

Еще один вопрос:Возникают ли проблемы с NFS-, когда два процесса пытаются записать в одну и ту же таблицу или когда они пытаются записать в одну и ту же базу данных, (которая является файлом)? Было бы обходным решением позволить каждому процессу создавать свою собственную таблицу в одном и том же файле )базы данных (и записывать в нее?

12
задан Aufwind 28 March 2012 в 12:34
поделиться