我已经阅读了文档,发现很少有关于访问单个 kyotocabinet 数据库的多个进程(读取器和写入器)。看来您可以创建多个读取器,但除非您指定 ONOLOCK 多个写入器将阻止尝试打开数据库。任何人都可以阐明这是如何工作的或是否可能?我知道KyotoTycoon 是一种选择,但我特别对KyotoCabinet 感到好奇。
问问题
2099 次
2 回答
4
在 tokyocabinet 手册页上找到了这个:
Tokyo Cabinet 提供两种连接数据库的模式:“reader”和“writer”。阅读器可以进行检索,但不能存储或删除。作家可以执行所有访问方法。当通过文件锁定连接到数据库时执行进程之间的排除控制。当写入器连接到数据库时,读取器和写入器都不能连接。当一个读取器连接到数据库时,可以连接其他读取器,但写入器不能。根据这种机制,在多任务环境下通过同时连接来保证数据的一致性。
那么猜测,这也适用于京都。
于 2012-07-18T21:22:08.373 回答
1
京都内阁是线程安全的,但你不能同时读取和写入单独的进程。只要没有连接写入器,您就可以有多个读取器进程。
从网站:
多进程共享一个数据库
多个进程不能同时访问一个数据库文件。当一个进程连接到数据库文件时,它被读写锁锁定。请注意,不应使用 `BasicDB::ONOLOCK' 选项来逃避文件锁定机制。此选项适用于针对不支持文件锁定机制的某些文件系统(例如 NFS)的解决方法。
如果要让多个进程共享一个数据库,请改用京都大亨。它是作为京都内阁网络接口的轻量级数据库服务器。
于 2012-11-19T05:20:41.570 回答