【发布时间】:2010-03-29 23:16:06
【问题描述】:
我将制作一个包含很多类似项目(数百万)的应用程序,我想将它们存储在 MySQL 数据库中,因为我想做很多统计数据并搜索特定列的特定值。
但同时,我将存储所有项目之间的关系,它们在许多连接的二叉树状结构(传递闭包)中相关,而关系数据库不擅长这种结构,所以我会喜欢在 Neo4j 中存储对此类数据有良好性能的所有关系。
我的计划是将除了 MySQL 数据库中的关系以及与item_id 的所有关系之外的所有数据都存储在 Neo4j 数据库中。当我想查找树时,我首先在 Neo4j 中搜索树中的所有 item_id:s,然后在 MySQL 数据库中搜索查询中的所有指定项,如下所示:
SELECT * FROM items WHERE item_id = 45 OR item_id = 345435 OR item_id = 343 OR item_id = 78 OR item_id = 4522 OR item_id = 676 OR item_id = 443 OR item_id = 4255 OR item_id = 4345
这是个好主意,还是我错了?我以前没有使用过图形数据库。有没有更好的方法来解决我的问题?在这种情况下 MySQL 查询将如何执行?
【问题讨论】:
-
可以用“IN”子句替换不同的“OR” :)
-
@Jonas 你最后做了什么。我很想知道您是如何解决问题的?
-
对于这个问题的新读者:在书中Continuous Enterprise Development in Java 和this code 使用了这个架构解决方案。有一章证明选择混合两个数据库是合理的。
标签: architecture mysql hierarchical-data neo4j graph-databases