我对非关系型数据库非常感兴趣,但由于很多原因只熟悉其中的一小部分。因此,我想列出您使用的所有NoSQL技术及其基本用例、优缺点。
如果您在使用某些技术期间遇到了特定问题,有趣的经验等,欢迎与社区分享。
个人使用过:
Mongodb:
用例:对我而言,如果需要良好的聚合功能、自动复制,则是最佳选择之一。适用于大规模操作。具有许多功能,可以像日常使用数据库一样使用,如果出于某种原因不想使用SQL解决方案,则Mongo可能是一个很好的选择。另外,mongo非常适合需要动态查询的情况。此外,mongodb支持索引-这也是重要的功能。
优点:快速,可扩展性好,易于使用,内部地理空间索引
缺点:相对较慢的写入操作,阻塞原子操作可能会带来很多问题。内存消耗过程可能会“吃掉”所有可用内存。
Couchdb:
用例:我将其用于类似Wiki的项目,我认为对于这种情况来说是完美的数据库。每个文档在更新期间自动保存为新版本的事实有助于查看所有更改。用于累积、偶尔更改数据,并运行预定义查询。
优点:易于使用,面向REST接口,版本控制。
缺点:当文档数量相当大(超过50万)时,性能问题比较严重,查询功能不太强大(可以通过添加Lucene来解决)
SimpleDB:
用例:这是Amazon提供的数据服务中最便宜的东西。非常有限的功能,因此主要用例是如果您想使用Amazon服务,但尽可能少地支付费用。
优点:便宜,所有数据都像文本一样存储-简单易操作,易于使用。
缺点:限制很多(文档大小、集合大小、属性计数、属性大小)。所有数据都像文本一样存储的方式也会在按日期或数字排序时创建额外的问题(因为它使用词典排序,需要在保存日期或数字时进行一些解决方案)。