0

在此演示文稿中,有一张图表显示了随着数据变大,以下水平可扩展性上限:

键值 > 列族 > 文档数据库 > 图数据库

http://youtu.be/UodTzseLh04?t=13m36s

换句话说,随着数据变得更加连接(即复杂),您可以让数据库增长的限制越来越低。

与键值存储相比,为什么文档数据库的数据大小没有那么可扩展?我是否通过说“连接数据的自由度越大,数据分区越难”来回答我自己的问题?

每个人通常都会问的“我正在尝试做的事情”部分:我有一个数据库,其架构大部分是树状的,但偶尔会有两个父节点。我在原型中使用了 Neo4j,但用于生产规模应用程序我需要更多地考虑分区。我将不得不使用 Mongo DB,因为图形数据库不容易分区,并且在 Mongo DB 中为我的“多父”关系编写代码将更加困难。所以我'我想知道是否值得加倍努力并使用键值存储 - 或者至少是列族存储)。

4

1 回答 1

2

对于图形数据库......我会考虑看看 Titan 的可扩展性。 https://github.com/thinkaurelius/titan

他们最近写了一篇关于他们的数据库引擎如何存储扩展/性能数据的好博客文章:http: //thinkaurelius.com/2013/11/01/a-letter-regarding-native-graph-databases/

Titan 还可以配置为与 Cassandra 协同工作,因此您也可以从列式数据库中受益。

我认为您对关系(一个实体与另一个实体相关)和可扩展性的理解一针见血。

您必须管理的“连接”或“连接”越多,扩展就越困难。

键/值系统假设您将在应用程序中关联数据。没有查询的概念,因此为了扩展,您可以根据键进行分片。非常简单且非常可扩展。

如果您阅读了一些关于 Titan 的文章,就很容易理解为什么很难扩展像图形数据库这样的东西。

于 2013-11-06T15:01:57.180 回答