东京柜和京都柜有什么区别?

24

FAL Labs有多个东京和京都产品:

  • Tokyo Cabinet和Kyoto Cabinet都是轻量级数据库库
  • Tokyo Tyrant和Kyoto Tycoon都是轻量级数据库服务器

有人可以解释一下东京和京都产品之间的区别吗?

4个回答

14

Tokyo Cabinet更完整和稳定,而Kyoto尚不够成熟(今天是2010年12月8日),存在一些问题。Kyoto是用C++编写的,(更)简单,比Tokyo(用C编写)简单,但这种简单性也导致了一些差距。Kyoto的性能比Tokyo稍差一点,但在使用线程时效果更佳(至少文档承诺如此)。

来自官方文档:

<< 2007年,Tokyo Cabinet作为QDBM的继任者开发出来,目的如下。实现了这些目的之后,Tokyo Cabinet可以替代传统的DBM产品。

(...)

2009年,Kyoto Cabinet作为QDBM的另一个继任者开发出来。与同类产品(Tokyo Cabinet)相比,追求以下优势。但是,至少在单线程操作中,Tokyo Cabinet的性能高于Kyoto Cabinet。

>>

我两个都用过,但我仍然更喜欢Tokyo,因为我在Kyoto遇到了问题:在Kyoto Cabinet数据库中使用File Hash Database,如何避免文件大小增加? 没有人能帮我解决这个问题。 我仍然不知道如何解决它。

根据我的个人经验,我发现编译和安装Kyoto更容易,并且使用起来也更容易。我在Tokyo库依赖方面遇到了很大的问题,并且无法将本地库与Java接口链接起来。 在Kyoto中一切都很好,在第一次尝试中顺利运行。 但是,正如我之前所说的,我感觉使用Tokyo对数据库有更多的控制。


你好。你还遇到了哪些京都问题? - Jeff
请问一下,Tokyo Cabinet是否支持内存中的B+树实现,如何实现呢?因为在某些网络文章中发现它支持,但找不到任何文档说明如何操作。很抱歉这样问,但是找不到有经验的Tokyo用户帮助解决这个问题。 - Arpssss
1
现在怎么样?你还觉得东京比京都更发达吗? - amertkara
我不知道。我停止使用那个了。如果有人能分享他们的经验,那就太好了。 - Felipe

7

Tokyo Cabinet和Tyrant是用C语言编写的LGPL授权。Kyoto Cabinet和Tycoon是用C++语言编写的GPLv3授权。

Kyoto Tyrant支持在内存中过期的记录,因此可以替代memcached。

开发者表示,Kyoto*不是Tokyo*的继承者,而只是一种营销策略;如果您不打算开发商业产品,请使用Kyoto。它更加新颖和优秀。

我建议您阅读开发者的博客(包括日语和英语),并仔细阅读头文件(如果您要使用该库)。

祝您好运。


1
京都大宝库刚刚推出了一个插件,可以暴露一个Memcached服务器。东京暴君也具有相同的功能,但没有键过期。 - Tobu

2
在我的使用案例中,两者最重要的区别是TC具有“表数据库”,而KC没有。是的,您可以将任意数据序列化为字符串并将其存储为项目值,但是这样做就无法搜索该值,或者需要遍历整个数据集并反序列化每个项目,或者重新发明轮子并手动索引数据。东京柜的TDB为嵌套数据提供了出色的查询功能(索引、数字和字符串比较,甚至在“字段”内使用正则表达式)。Kyoto只是一个KV存储库;TC也是一个强大的面向文档的数据库。

1

另外,根据我的测试,京都协议仅基于HTTP - 更加开放,但比东京协议的二进制协议慢。


1
KyotoTycoon基于HTTP协议,而不是Kyoto。 - MechanTOurS
当然。"Kyoto" 没有任何意义。产品分别称为 Kyoto Cabinet (lib) 和 Kyoto Tycoon (server)。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接