Я использую Tokyo Cabinet с модулем tc
в python. Я храню свои данные в формате TDB. Я ожидал, что таблица будет блокироваться только на время записи. К сожалению, я вижу, что когда файл открыт в «режиме записи», другие процессы не могут его читать. Это стандартное поведение, проблема с обертками или я что-то не так делаю? Или, может быть, есть другие случаи, когда операции блокируются?
Какие условия вызывают блокировку Кабинета министров Токио
Ответы (1)
Согласно спецификации:
Tokyo Cabinet предоставляет два режима подключения к базе данных: «чтение» и «запись». Читатель может выполнять извлечение, но не может сохранять или удалять. Писатель может выполнять все методы доступа. Контроль исключений между процессами осуществляется при подключении к БД путем блокировки файлов. Пока модуль записи подключен к базе данных, ни читатели, ни писатели не могут быть подключены. Пока модуль чтения подключен к базе данных, другие читатели могут подключаться, а писатели – нет. Согласно этому механизму согласованность данных гарантируется при одновременных подключениях в многозадачной среде.
Вы можете либо создать и закрыть модуль записи для каждой операции записи, либо использовать Tokyo Tyrant для обеспечения одновременного доступа.