什么时候应该使用列族NoSQL解决方案而不是键值、文档存储、图形数据库?

3
我了解不同解决方案之间的技术差异,但我似乎找不到不同类型NoSQL解决方案的具体优缺点和何时使用一种类型而不是另一种类型的具体示例。
我在网上找到的所有信息都给出了非常模糊的建议,无法清楚地指示何时使用其中一种,而不是另一种,并且它们似乎可以互换使用,没有明确表明使用一种优于另一种的优势。
2个回答

5

面向文档

例子:MongoDB,CouchDB

优点:异构数据、面向对象的工作方式、敏捷开发

它们的优势在于不需要一致的数据结构。当您的需求以及数据库布局经常变化时,或者您正在处理属于一起但外观非常不同的数据集时,它们非常有用。当您有很多只有两个名为“key”和“value”的列的表时,那么这些值得一看。

图形数据库

例子:Neo4j,GiraffeDB

优点:数据挖掘

它们的重点是通过与其他数据的关系来定义数据。当您有许多具有主键的表,这些主键是其他两个表的主键(也许还描述了它们之间的关系),那么这些可能适合您。

键值存储

例子:Redis,Cassandra,MemcacheDB

优点:通过已知键快速查找值

它们非常简单,但这使它们快速且易于使用。当您不需要存储过程、约束、触发器以及所有这些高级数据库功能,而只想快速存储和检索数据时,那么这些适合您。

不幸的是,它们假定您确切地知道要查找什么。需要用户157641的个人资料?没问题,只需要微秒。但是当您想要年龄介于16岁和24岁之间、最喜欢的食物是“华夫饼干”并在过去24小时内登录的所有用户的名称时怎么办?很遗憾。当您没有明确且唯一的键来获取特定结果时,无法轻松地从键值存储中获取它。


9
Cassandra不是一个列族存储系统吗?(问这个问题是因为许多人可能有同样的疑问) - pinkpanther

4

有一篇优秀的文章介绍了NoSQL数据库的类型以及何时使用它们...请阅读这篇文章

你将会获得很好的理解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接