Yan*_*nis 1 azure amazon-simpledb elasticsearch azure-cosmosdb
就......而言
按照重要的顺序,但不介意一般的答案,因为我很欣赏我可能要求太多:)
谢谢
编辑:我正在寻找一个将作为单一权威数据存储的数据库,我需要存储的文件的所有属性,以便出于各种商业原因进行索引.因此我知道其他解决方案不会做我想要的.
TL;博士; 如果您正在使用JavaScript并构建浏览器应用程序,那么node.js和DocumentDB就是天堂般的匹配.如果您使用的是.NET和/或其他Azure服务,那么DocumentDB会受到青睐.如果您正在使用其他AWS服务,那么SimpleDB可能会更好.
我知道像这样的问题并不适合Stack Overflow,但我经常看到像这样的答案的价值,而我在SO上最受欢迎的答案基本上是由证据支持的知情意见.我没有使用过SimpleDB,但在决定使用DocumentDB之前我已经查过了它.我很快就拒绝了它......尽管在决定使用DocumentDB之前我确实认真对待AWS Lambda.所以:
可扩展性.DocumentDB具有非常直接和显式的缩放模型 - 如果您需要每秒更多空间或更多操作,则添加更多集合.SimpleDB的缩放模型类似,除了不那么简单,因为您添加了重载的域,以提供类型分离(思考表)和可伸缩性.您可以根据需要扩展.
表现.由于我从未在其上构建任何内容,因此我无法对SimpleDB的性能发表任何看法.但是,我对DocumentDB的性能印象非常深刻.对于简单的基于id的读取,延迟小于10ms,并且我获得了令人印象深刻的延迟和查询吞吐量.我们当前应用程序的DocumentDB实现在功能等效的MongoDB/node.js实现的1/4时间内返回复杂的n维聚合(使用documentdb-lumenize在DocumentDB上的存储过程中完成).您必须在您的实际应用程序上进行自己的性能测试,以获得明确的答案.
维修.两者都比传统数据存储更容易实现.没有那么多旋钮来维持它们中的任何一个.SimpleDB默认地理分布您的数据.您必须在DocumentDB中手动执行等效操作.可能,但更难.DocumentDB具有良好的导入/导出工具,其备份解决方案即将进行大幅升级.
易用性/学习曲线.如果您是JavaScript程序员,那么DocumentDB有很多值得推荐的程序员.DocumentDB本身使用JSON.SimpleDB使用XML.DocumentDB具有以JavaScript编写的支持ACID的存储过程.你需要将SimpleDB与其他东西结合起来(Lambda可能,但XML/JavaScript不匹配会使这不太理想)来获得等价物.两者都允许使用SQL,但DocumentDB也允许使用JavaScript本机查询.
为了在DocumentDB上取得成功,你必须克服一个巨大的心态障碍.尽管它们都通过添加更多域/集合来扩展,但SimpleDB域在概念上更接近于表.DocumentDB团队选择"集合"这个词是不幸的,因为它们更像是分区,不应该被认为是表格.困难的部分是习惯于将所有不同的数据类型存储在同一个集合中.一旦你克服了这一点,我发现DocumentDB的方法令人耳目一新,非常灵活.我可以有效地建模继承和类型混合.集合nay分区有一个目的 - 可伸缩性.域用于可伸缩性和数据类型分离,这在实践中实际上更难.
成本.这里不多说.两者都允许您逐步扩大成本.对于非常小的实现,DocumentDB可能更昂贵,因为最小的使用单位是单个集合,最低为25美元/月.您必须进行自己的建模/假设分析,以确定哪种方法对您来说更便宜.请注意,Azure一般都是积极的,甚至在某些情况下推动AWS降价.我的直觉是,对于大多数应用来说,它们的成本大致相等.
其他想法:
你写道,"我需要存储的文件的所有属性都被编入索引".DocumentDB的一个非常好的功能是您可以指定索引的大小默认情况下,每个字段都被索引为每个字节的3字节哈希索引,这是非常节省空间的.我不知道SimpleDB是否具有等效功能.
这有点像比较苹果和橙子.我认为DocumentDB在其数据模型中与MongoDB或CouchDB类似,在其使用执行模型中考虑VoltDB(尽管VoltBD sprocs是用Java编写的).SimpleDB感觉更像是一个简单的XML对象存储.如果你已经有了一个大的XML思维模式,那么它可能会更容易,但我认为今天有更多的人使用JSON而不是XML.
在JavaScript中编写支持ACID的存储过程是一项只有DocumentDB具有的杀手级功能.有人说存储过程的日子结束了; 您应该将所有这些逻辑放在应用程序服务器层中.如果您实现了一个简单的CRUD API,那么几乎每个应用程序都需要某种类型的事务,其中一次更改多行.如果没有数据存储中的事务支持,这很难正确地完成.即使您使用NoSQL数据库实现了等效的事务,实现的开销也会消除您通过选择NoSQL而不是SQL获得的任何开发/性能/可伸缩性优势.
DocumentDB的用户定义函数和触发器(也用JavaScript编写)可能很有用,虽然我认为此时触发器实现已经瘫痪,但我还没有找到UDF的用途.
DocumentDB具有内置附件支持.您需要手动与S3集成以获得AWS上的等效项.
DocumentDB具有地理索引和运算符.
SimpleDB的每个文档限制1K是一个严重的限制.这告诉我它主要用于日志记录或作为S3的索引而不是完整的文档存储.DocumentDB的限制是512K.
如果与SimpleDB的比较就像是苹果到橙子,那么与ElasticSearch的比较就像苹果到消防引擎.我对ElasticSearch的印象是它全是关于全文搜索和分析.我认为作为主要交易商店的空间/执行/ api效率并不高.它建立在Lucene之上,其设计不具备可靠性/耐用性,是您的主要商店.此外,即使托管,它也更像是IaaS产品,而DocumentDB和SimpleDB是真正的PaaS产品.ElasticSearch的维护工作要高得多.
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |