我理解不同解决方案之间的技术差异。但我似乎无法找到不同类型的NoSQL解决方案的优缺点的具体示例,以及何时使用一种类型而不是另一种类型。
我在网上找到的所有信息都提供了关于何时使用一种类型与另一种类型的非常模糊的建议。而且它们似乎都能够互换使用而没有明确指出使用一个优于另一个的优势。
答案 0 :(得分:5)
这是摘录of a blog post I wrote a while ago。
示例: MongoDB,CouchDB
优势:异构数据,面向工作,敏捷开发
他们的优势在于他们不需要一致的数据结构。当您的需求和数据库布局不断变化,或者处理属于一起但看起来非常不同的数据集时,它们非常有用。如果你有很多表有两个名为“key”和“value”的列,那么这些可能值得研究。
示例: Neo4j,GiraffeDB
优势:数据挖掘
他们的重点是通过与其他数据的关系来定义数据。如果你有很多带主键的表,这些表是另外两个表的主键(也许有一些描述它们之间关系的数据),那么这些表可能适合你。
示例: Redis,Cassandra,MemcacheDB
优势:通过已知密钥快速查找值
它们非常简单,但这使它们快速且易于使用。当您不需要存储过程,约束,触发器和所有这些高级数据库功能时,您只需要快速存储和检索数据,那么这些都适合您。
不幸的是,他们认为你确切地知道你在寻找什么。您需要User157641的个人资料吗?没问题,只需几微秒。但是当你想要年龄在16到24岁之间的所有用户的名字时,有什么“华夫饼”作为他们最喜欢的食物并且在过去的24小时内登录了什么?倒霉。如果您没有明确且唯一的特定结果密钥,则无法轻松地将其从K-V商店中取出。
答案 1 :(得分:2)
有一篇很好的文章描述了nosql数据库的类型以及何时使用什么..阅读this
你会得到很好的理解。