在此演示文稿中,随着数据变大,有一个图表显示了以下水平可伸缩性上限:
键值&gt;列系列&gt; <文档数据库>图数据库
http://youtu.be/UodTzseLh04?t=13m36s
换句话说,随着数据越来越多(即复杂),您可以让数据库增长的限制越来越低。
与键值存储相比,为什么数据大小不像文档数据库那样可扩展?我是否回答了我自己的问题,他说“连接数据的自由度越大,分区数据越难”?
(“我正在尝试做的事情”部分,每个人通常都会问:我有一个数据库,其模式很像树状,但偶尔会有2个父节点。我在我的原型中使用了Neo4j但对于生产规模的应用程序,我需要更多地考虑分区。我将不得不使用Mongo DB,因为Graph Databases不能轻易分区,并且为我的“多父母”关系编写代码会更难在Mongo DB。所以我想知道是否值得花更多的钱并使用键值存储 - 或者至少是一个列系列商店。
答案 0 :(得分:2)
对于图形数据库......我会考虑看看Titan的可扩展性。 https://github.com/thinkaurelius/titan。
他们最近写了一篇关于他们的数据库引擎如何存储扩展/性能数据的好文章:http://thinkaurelius.com/2013/11/01/a-letter-regarding-native-graph-databases/
Titan也可以配置为与Cassandra携手合作,因此您也可以获得柱状数据库的好处。
我认为你通过理解关系(一个与另一个实体相关的实体)和可扩展性来达到目标。
您必须管理的“联接”或“联系”越多,扩展的难度就越大。
键/值系统假设您将关联应用程序中的数据。没有查询的概念,因此为了扩展,您可以根据键进行分片。非常简单且可扩展。
如果您阅读了一些关于Titan的文章,很容易理解为什么很难扩展图形数据库之类的东西。