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