代码之家  ›  专栏  ›  技术社区  ›  Mike Trpcic

哪个键/值存储最有前途/最稳定?

  •  59
  • Mike Trpcic  · 技术社区  · 14 年前

    1. 库奇达
    2. 蒙哥达
    3. 东京内阁
    4. 伯克利数据库
    5. 卡桑德拉

    我确信还有更多的人在我的搜索工作中失败了。有了所有的信息,很难在所有竞争者之间找到可靠的比较。我的标准和问题是:

    1. 为什么?
    2. 哪一个最快?
    3. 哪一个最稳定?
    4. 哪一个最容易设置和安装?

    编辑:
    到目前为止,Redis似乎是最好的解决方案,但这只是因为我得到了一个可靠的响应(来自ardsrk)。我在寻找更多像他这样的答案,因为它们为我指明了有用的定量信息的方向。你喜欢哪个键值存储 为什么? ?


    如果有人对CouchDB、Riak或MongoDB有经验,我很想听听你对他们的经验(如果你能对其中的几个进行比较分析,我会更乐意听你的)

    15 回复  |  直到 8 年前
        1
  •  26
  •   Community kfsone    7 年前

    你推荐哪一种?为什么?

    我推荐Redis。为什么?继续阅读!!

    我说不出是不是最快的。但Redis是 fast 它将所有数据保存在RAM中。最近,虚拟内存功能被添加,但所有的键仍然留在主内存中,只有很少使用的值被交换到磁盘上。

    哪一个最稳定?

    GitHub Instagram ,等等。

    哪一个最容易设置和安装?

    Redis很容易安装。抓住那个 source 在Linux系统中运行 make install . 这就产生了 redis-server 二进制文件,你可以把它放在你的路径上并启动它。

    默认情况下绑定到端口6379。看一看 redis.conf 源代码提供了更多的配置和设置选项。

    Redis拥有出色的 Ruby Python 支持。

    Xorlev's comment 下面:Memcached只是一个简单的键值存储。Redis支持复杂的 data types 类似于列表、集合和排序集合,同时提供 simple interface 到这些数据类型。

    make 32bit 这使得即使在64位机器上,所有指针的大小也只有32位。这在RAM小于4GB的机器上节省了大量内存。

        2
  •  25
  •   Vetle    13 年前


    这与键值存储无关。它们已经有几十年的历史了(例如伯克利DB)。为什么现在这么大惊小怪?

    因此,你应该忽略任何时尚的产品,不提供这方面。其中包括Redis、MongoDB、CouchDB等,并专注于真正的分布式解决方案,如cassandra、riak等。

    否则,您将失去sql提供给您的所有好东西(临时查询、老板的水晶报表、第三方工具和库),而得不到任何回报。

        3
  •  8
  •   AdamKG    14 年前

    http://pycon.blip.tv/file/3257303/

    他说Reddit使用PostGres作为键值存储,大概有一个简单的2列表;根据他的谈话,它的基准测试速度比他们尝试过的任何其他关键价值商店都快。当然,它非常成熟。

    最终,超频是正确的;你的用例决定了最好的商店。但rdmbs长期以来一直被用作键值存储,而且速度也非常快。

        4
  •  7
  •   MattGrommes    14 年前

    我一直在玩MongoDB,它有一个优点使它非常适合我的应用程序,那就是能够在数据库中直接存储复杂的地图/列表。我有一个很大的映射,其中每个值都是一个列表,我不需要做任何特殊的事情,只需编写和检索它,而不需要知道所有不同的键和列表值。我对其他选项不太了解,但速度和能力使Mongo非常适合我的应用。另外,Java驱动程序非常简单易用。

        5
  •  7
  •   user JaredPar    11 年前

    它们都有不同的特点。别忘了 Project Voldemort LinkedIn在每次发布之前都会在其产品中使用/测试。

    berkeleydb是一个非常基本的、低级的存储引擎,也许可以从这个讨论中解脱出来。在它的基础上构建了几个关键价值系统,以提供诸如复制、版本控制、编码等附加功能。

    另外,您的应用程序需要什么?一些解决方案包含可能不必要的复杂性。例如,如果您只存储不会更改的静态数据,则可以将它们存储在数据的SHA-1内容哈希下(即使用内容哈希作为密钥)。在这种情况下,您不必担心新鲜度、同步、版本控制,许多复杂的问题都可以消除。

        6
  •  6
  •   tommy chheng    14 年前

    你要做的一个区别是你会用DB做什么? 不要因为它很时髦就跳上船。你需要键值存储吗?或者你需要一个基于文档的商店?您的内存占用要求是什么?在一个小的虚拟机上运行还是在一个单独的虚拟机上运行?

    我建议先列出您的需求,然后看看哪些需求与您的需求重叠。

    我在scribd幻灯片中列出了更多关于为什么我更喜欢mongodb的细节 http://tommy.chheng.com/index.php/2010/02/mongodb-for-natural-development/

        7
  •  6
  •   drr    14 年前

    memcached是内存存储。memcachedb使用Berkeley DB作为其数据存储。

        8
  •  5
  •   Ferruccio    14 年前

    我只有伯克利DB的经验,所以我会提到我喜欢它的地方。

    • 它很快
    • 它非常成熟和稳定
    • 它有C、C++、java和AMP;开箱即用的装订。其他语言绑定可用。我相信Python自带绑定作为其“电池”的一部分。

    我遇到的唯一缺点是C绑定是新的,似乎并不支持所有功能。

        9
  •  4
  •   mikerobi    14 年前

        10
  •  4
  •   Bert    13 年前

    哪个键值存储最有希望/最稳定?

    G-WAN KV store 看起来相当 有前途的

    DB engine            Traversal
    -----------          ----------------------------
    SQLite               0.261 ms  (b-tree)
    Tokyo-Cabinet (TC)   4.188 ms  (hash table)
    TC-FIXED             0.103 ms  (fixed-size array)
    G-WAN KV             0.010 ms  (unamed)
    

    此外,它还被G-wanwebserver内部使用,以其高并发性能(即 问题)。

        11
  •  3
  •   Xorlev    14 年前

    我真的很喜欢 就我个人而言。

    Python有 python内存缓存

    我还没有用过Ruby客户端,但是快速的Google搜索会发现 RMEMACHE公司

        12
  •  2
  •   yfeldblum    14 年前

    Cassandra 似乎很受欢迎。

    Cassandra在Digg、Facebook、Twitter、Reddit、Rackspace、Cloudkick、Cisco、SimpleGeo、Ooyala、OpenX以及更多拥有大型活动数据集的公司都有使用。最大的生产集群在150多台机器上拥有超过100 TB的数据。

        13
  •  1
  •   grokk    14 年前

        14
  •  1
  •   Alex M    12 年前

    正如其他人所说,这取决于你的需要。例如,我喜欢最适合我的应用程序的东西。

    我首先使用memcached来实现快速读写访问。正如javaapi使用SpyMemcached一样,它提供了一个非常简单的接口,您可以用来编写和读取数据。由于内存泄漏(没有更多的RAM),我被要求寻找另一种解决方案,而且我无法正确扩展,仅仅增加单个进程的内存似乎不是一个好的成就。

    它支持Python、Ruby、.Net等,通过webconsole和客户机工具进行轻松配置。它运行稳定。通过一些测试,我能够为200-400字节长的记录每秒写10k。不过,阅读成绩要高得多(都是本地测试)。做你的决定很有趣。

        15
  •  1
  •   Community kfsone    7 年前

    comparison 在他们和couchDB之间。

    似乎mongoDB是最受欢迎的。它支持分片和复制,最终是一致的,在ruby(mongoid)中有很好的支持。它也有一个比其他两个更丰富的功能集。所有mongo、redis和memchache都可以将键值存储在内存中,但是redis似乎要快得多 this post

    我想说它们有不同的用法,mongoDB可能适合于大型数据集和文档存储,而memchache和redis更适合于存储缓存或日志。