我已经阅读了文档,发现很少有关于访问单个kyotocabinet数据库的多个进程(读者和编写者)。看来您可以创建多个读取器,但除非您指定ONOLOCK,否则多个编写器将阻止尝试打开数据库。任何人都可以阐明它是如何工作的或是否有可能?我理解KyotoTycoon是一种选择,但我特别关注KyotoCabinet。
答案 0 :(得分:4)
在tokyocabinet手册页上找到了这个:
Tokyo Cabinet提供两种连接数据库的模式:“reader”和“writer”。读者可以执行检索但不能存储或删除。作者可以执行所有访问方法。通过文件锁定连接到数据库时,将执行进程之间的排除控制。当作者连接到数据库时,读者和作者都无法连接。当读者连接到数据库时,其他读者可以连接,但作者不能。根据这种机制,在多任务环境中同时连接可以保证数据的一致性。
然后猜测,这也适用于京都。
答案 1 :(得分:1)
Kyoto Cabinet是线程安全的,但你不能同时拥有单独的读写过程。只要没有连接编写器,就可以有多个读取器进程。
来自website:
按多个流程共享一个数据库
多个进程无法同时访问一个数据库文件。一个 进程所在的数据库文件被读写器锁定锁定 连接到它。请注意,`BasicDB :: ONOLOCK'选项不应该是 用于逃避文件锁定机制。此选项适用于 针对某些文件系统(如NFS)的解决方法 支持文件锁定机制。
如果要让多个进程共享一个数据库,请使用Kyoto 大亨相反。它是一个轻量级的数据库服务器作为网络 与京都内阁的接口。