我正在处理分层数据,如在树结构中。我想知道在数据库中存储它们的最佳方法是什么。
我从mysql中的邻接列表开始。但随着数据的增长,表现似乎有所下降。我有大约20000行存储在一个带有父子关系的mysql表中,并且将来还会增加。获取数据需要很长时间,因为我必须根据树的深度编写许多自连接。
所以我在寻找存储这种数据的最佳方法。我发现嵌套集比邻接列表更好。然后我被建议去看看nosql,如果这能解决我的问题的话。所以我现在很困惑是继续使用sql还是不使用sql,或者是否还有其他处理此类数据的最佳方法。
有人能告诉我什么是最好的方法吗??

最佳答案

如果mysql给你带来的麻烦比它解决的要多,我会看看mongodb、couchdb或elasticsearch(取决于你的用例)。甚至可能是Neo4J。您的选择应该归结到几个方面,如复制、扩展容量、一致性…我建议你在决定之前仔细阅读一些官方文件。这里有一个starting point用于比较。
使用nosql将消除所有连接并提高性能,但您仍然需要使用邻接列表、嵌套集、物化路径等实现适当的层次结构…
请记住,上面提到的nosql技术几乎都使用最终一致性,这实际上意味着您的数据在某些节点之间可能在给定的时间不一致。如果这是一个问题,你应该坚持rdbms。

10-06 13:35
查看更多