同时使用图数据库和文档数据库

7
我正在考虑一种设置,即将实体存储在文档数据库(例如CouchDB)和图形数据库(例如Neo4j)中。 理念是将每个实体的信息(数据,blob,值,复杂的内部结构)存储在文档数据库中,同时将实体关系(父项,子项,相关实体)存储在图形数据库中。
有人尝试过或见过这样的设置吗?我应该期待什么样的问题?首先想到的是2阶段提交。但是备份也很棘手。
2个回答

4

您可以查看书籍"七周七数据库"。第八章介绍了如何通过CouchDB、Neo4j和Redis构建一个多语言结构。


0

Ran,

由于CouchDB和大多数(全部?)文档/ kv存储不支持事务,因此您需要停止担心2阶段提交。例如,您可以在Neo4j和MySQL之间执行XA事务,但不能在CouchDB或其相关方案之间执行。

实际上,为了简单起见,为什么不采用纯图形数据库架构呢?您可以获得更好的表达能力和事务处理 - 添加第二种存储类型的理由是什么呢?


3
如果你有一些非常大的上下文(例如构建包含每个节点内容的网站图),我认为使用一个文档数据库进行双重设置是合理的。 - ulkas
除非内容是视频和图像的大块,否则将其全部保存在图形中不会有任何问题。 - akollegger
3
@Andreas - 啊 - 但是我确实有blob。但更重要的是,每个节点上都有大量未经结构化的属性 - 我想对实体运行报告和批处理。图形数据库会严重减慢我的速度,并会施加我不想处理的容量限制。 - Ran Biron
1
@Ran 我明白了。同意重要的是你想要向数据提出的问题。你可以使用类似于Spring Data的交叉存储持久化来将正确的位保存到正确的存储桶中。 - akollegger
arangodb(https://github.com/triAGENS/ArangoDB)似乎将文档和图形数据库功能结合在了一起。 - poseid

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