我正在寻找一个最终一致的键值数据存储,我决定在 Amazon SimpleDB 和 Riak 之间进行选择,所以任何人都可以分享他们比较两者的宝贵经验。
在此先感谢费德里克
我正在寻找一个最终一致的键值数据存储,我决定在 Amazon SimpleDB 和 Riak 之间进行选择,所以任何人都可以分享他们比较两者的宝贵经验。
在此先感谢费德里克
Riak 是一个键值对存储。您存储的数据值对数据库是不透明的,因此您没有二级索引。但是,如果您的数据是 JSON(或 XML,我认为),您确实有能力运行 map-reduce。您可以对所有数据运行 map-reduce,也可以只对一个子集(“种子键”)运行。它还具有“链接行走”功能,文档可以引用其他文档,这些文档可以自动获取。他们目前没有像 CouchDB 这样的增量 map-reduce,这意味着任何辅助查询(非键)都非常昂贵。他们有计划解决这个问题。
SimpleDB 实际上介于 docstore 和 keystore 之间:每个 key->item 支持多个属性,但它只深入一层。您可以查询您的键或属性值。
在生产中,Riak 应该是相当“不干涉”的。如果它很慢或已满,只需启动一个新服务器并告诉它加入集群。(与 CouchDB 或 MongoDB 不同,您必须使用多个配置文件进行操作)。
SimpleDB 可能会受到冲击(我听说每秒有数万个请求),但您负责数据扩展(即不要违反它们的域大小限制,否则它会变慢)。
我已经使用 SimpleDB 大约 6 个月了。我将使用它进行生产。它运作良好,但我希望它更快。我执行 %like% 查询以进行搜索,但我似乎无法让它潜入超过几 MB 每秒的值。但非 %like% 搜索要快得多。我觉得如果亚马逊的某个人用老式的 c 而不是 Erlang 编写了一些算法,它可以加快速度,但我又是 ac coder。
此外,最近打开的域上的前几个查询将花费更长的时间,因为系统会将其全部读入。
总的来说,它对我有用,但如果我想扩大规模,我将不得不采用其他方式。
另外,我认为我几乎所有的使用都是免费的——有大量的空间分配等等。
确保您计划 SimpleDB 当前没有“只读”访问模式等。任何可以使用它的用户都可以编辑它。
——汤姆