Возможна ли блокировка файла sqlite в файловой системе NFS?
Допустим, есть два сценария Python, которые хотят записать данные в одну и ту же таблицу, которая хранится в файле SQLite с использованиемsqlite3
модуль. SQLite-файл хранится в файловой системе NFS. вSQLite-FAQ Я читаю:
SQLite использует блокировки чтения / записи для управления доступом к базе данных. [...] Но будьте осторожны: этот механизм блокировки может работать некорректно, если файл базы данных хранится в файловой системе NFS. Это связано с тем, что блокировка файлов fcntl () нарушена во многих реализациях NFS. Следует избегать размещения файлов базы данных SQLite в NFS, если несколько процессов могут пытаться получить доступ к файлу одновременно.
Означает ли это, что это невозможно вообще или есть какой-то способ гарантировать, что один процесс ожидает, пока другой не будет завершен?
ВСТАВКИ не сложны. Лишь некоторые:
INSERT_STATEMENT = "INSERT INTO some_table (row, col, val) VALUES (?, ?, ?)"
connection.executemany(INSERT_STATEMENT, triples)
И вставленные множества не пересекаются.
Еще один вопрос: возникают ли проблемы NFS, когда два процесса пытаются записать в одну и ту же таблицу или когда они пытаются записать в одну и ту же базу данных (которая является файлом)? Было бы обходным решением позволить каждому процессу создать свою собственную таблицу в той же базе данных (файле) и записать в нее?