以最佳方式存储分层数据:NoSQL 或 SQL

Kus*_*shi 7 mysql nested-sets adjacency-list hierarchical-data nosql

我正在处理分层数据,如树结构。我想知道将它们存储在数据库中的最佳方式是什么。

我从 MySQL 中的邻接表开始。但随着数据的增加,性能似乎会下降。我有大约 20,000 行存储在具有父子关系的 MySQL 表中,并且将来还会增加。获取数据需要很长时间,因为我必须根据树的深度编写许多自连接。

所以我正在寻找存储此类数据的最佳方法。在一次地方,我发现嵌套集比邻接列表更好。然后我被建议考虑 NoSQL,如果这能解决我的问题。所以我现在很困惑是继续使用 SQL 还是进入 No SQL,或者是否有其他最好的方法来处理此类数据。

那么有人可以建议我什么是最好的方法吗?

LMe*_*yer 4

如果 MySQL 给你带来的麻烦比它解决的问题还多,我会考虑一下 MongoDB、CouchDB 或 ElasticSearch(取决于你的用例)。甚至可能是 Neo4j。您的选择应该归结为几个要点,例如复制、扩展能力、一致性……我建议您在做出决定之前仔细阅读一些官方文档。这是比较的起点。

使用 NoSQL 将摆脱所有连接并提高性能,但您仍然需要使用邻接列表、嵌套集、物化路径等来实现适当的层次结构......

请记住,上述 NoSQL 技术几乎都使用最终一致性,这本质上意味着您的数据在给定时间在某些节点之间可能不一致。如果这是一个问题,您应该坚持使用 RDBMS。