【问题标题】:KyotoCabinet and multiple processes?京都内阁和多个流程?
【发布时间】:2012-07-18 20:57:31
【问题描述】:

我已经阅读了文档,但几乎没有发现关于多个进程(读取器和写入器)访问单个 kyotocabinet 数据库的信息。看来您可以创建多个读取器,但除非您指定 ONOLOCK 多个写入器将阻止尝试打开数据库。任何人都可以阐明这是如何工作的或是否可能?我知道KyotoTycoon 是一种选择,但我特别对KyotoCabinet 感到好奇。

【问题讨论】:

    标签: nosql tokyo-cabinet kyotocabinet


    【解决方案1】:

    在 tokyocabinet 手册页上找到了这个:

    Tokyo Cabinet 提供两种连接数据库的模式:“reader”和“writer”。阅读器可以进行检索,但不能存储或删除。作家可以执行所有访问方法。当通过文件锁定连接到数据库时执行进程之间的排除控制。当写入器连接到数据库时,读取器和写入器都不能连接。当一个读取器连接到数据库时,可以连接其他读取器,但写入器不能。根据这种机制,在多任务环境下通过同时连接保证数据的一致性。

    那么猜测,这也适用于京都。

    【讨论】:

    【解决方案2】:

    Kyoto Cabinet 是线程安全的,但您不能同时让单独的进程读取和写入。只要没有连接写入器,就可以有多个读取器进程。

    来自website

    多进程共享一个数据库

    多个进程不能同时访问一个数据库文件。一种 数据库文件被读写锁锁定,而进程是 连接到它。注意 `BasicDB::ONOLOCK' 选项不应该是 用于逃避文件锁定机制。此选项适用于 针对某些文件系统(例如 NFS)的解决方法 支持文件锁定机制。

    如果你想让多个进程共享一个数据库,请使用京都 取而代之的是大亨。它是一个轻量级的数据库服务器作为网络 京都内阁的界面。

    【讨论】:

    • 您链接到的页面包含的段落与另一个答案关于东京的引述几乎相同:“京都内阁提供了两种连接数据库的模式:'reader' 和 'writer'.... 虽然一个 writer 连接到数据库,reader 和 writer 都不能连接。当 reader 连接到数据库时,其他 reader 可以连接,但 writer 不能。"
    • @Reid - 我重读了一遍,我认为你是对的。只要没有连接写入器,您就可以有多个读取器进程。不支持使用 ONOLOCK 允许同时读取器和写入器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多