【发布时间】:2015-08-29 04:38:16
【问题描述】:
哪种数据库(和架构,如果适用)最适合存储和检索可放置在任意定义树的任何节点的数据(位置、时间戳)?例如:您拥有的一本书的位置:
Book
| |
Home Work
| | | | |
Bedroom Bathroom Den Office Conf room
| | | | |
Closet Underbed EntCtr Closet Desk
| |
Top Shelf Bottom Shelf
XXXX
对于每个项目记录,项目的位置可能看起来不同,但可能是相同的根节点和主节点,但除此之外,项目实际所在的位置可能有不同的分支和叶子。并且随着每个添加的项目,树本身可能会增长(您最终可以将特定性添加到“卧室壁橱中的顶架”节点,将新项目放置在 2-3 个子位置之一)。
我认为 SQL 数据库可能并不理想,因为树可以任意扩展并且可能完全不同,具体取决于用户,但不确定像 Mongo 这样的 NoSQL 数据库如何处理任何更新/扩展(例如,如果示例书从现有节点移动到更深一层或两层的新节点)。如果使用 SQL db,树级别的深度/宽度可能会受到限制,但列标签可能会有所不同,另一方面,如果项目移动到新位置,Mongo 可以简单地为项目创建一个新文档。
非常感谢数据库专家的任何见解!
【问题讨论】:
-
您绝对可以在关系数据库中表示一棵树,但是有许多不同的方法可以做到这一点,每种方法都有不同的权衡。如果没有更多关于您打算进行哪些查询和转换的详细信息,就不可能回答哪个是最好的。
标签: mysql mongodb database-design database