我非常感兴趣的是非关系型数据库,但由于很多原因只熟悉它的一小部分。所以我想列出您使用的所有NoSQL技术的基本用例,优缺点。
如果您在使用某些技术,有趣的经验等工作期间遇到一些具体问题,欢迎您与社区分享。
我个人使用过:
MongoDB的:
Usecases:如果您需要良好的聚合功能,自动复制,我认为是最好的之一。规模很大。有许多功能允许使用它像日常使用数据库,如果由于某种原因你不想使用SQL解决方案 - Mongo可能是一个很好的选择。如果你需要动态查询,mongo也很棒。还有mongodb支持索引 - 它也是重要的功能。
优点:快速,规模大,易于使用,内部地理空间索引
缺点:相对较慢的写操作,阻塞原子操作可能会产生很多问题。内存消耗过程可以“吃掉”所有可用内存。
Couchdb:
Usecases:我在Wiki喜欢的项目中使用它,我认为这个案例是完美的数据库。每个文档在更新期间自动保存在新版本中的事实有助于查看所有更改。用于累积,偶尔更改数据,以运行预定义的查询。
优点:易于使用,面向REST的界面,版本。
缺点:当文档数量非常庞大(超过50万)时,性能出现问题,有点纯粹的查询功能(可以通过添加Lucene来解决)
SimpleDB的:
Usecases:这是来自亚马逊的数据服务,是他们提供的所有内容中最便宜的。功能非常有限,因此如果您想使用亚马逊服务,主要用例是使用它,但可以尽可能少地支付。
优点:便宜,所有数据都像文字一样存储 - 操作简单,易于使用。
缺点:非常多的限制(文档大小,集合大小,属性数,属性大小)。所有数据像文本一样存储的方式在按日期或按数字排序时也会产生其他问题(因为它使用词典排序,在保存日期或数字时需要一些解决方法)。
答案 0 :(得分:3)
<强>卡桑德拉强>
Cassandra是完美的解决方案,如果写作是你的主要目标,它的设计可以写很多(在某些情况下写作可能比阅读更快),因此它非常适合日志记录。它对数据分析也非常有用。除了Cassandra建立了地理分布特征。
优势支持Apache(良好的社区和高质量),快速写作,没有单点失败。扩展时易于管理(易于部署和扩展群集)。
弱点索引实现有问题,索引查询有一些限制,如果使用索引插入性能下降。流数据传输的问题。