MongoDB等NoSQL数据库的ERD等价物是什么?
答案 0 :(得分:27)
看起来你问similar question on Quora。
如前所述,ERD只是您要存储的数据的映射以及该数据之间的关系。
您仍然可以使用MongoDB制作ERD,因为您仍想跟踪数据和关系。最大的区别是MongoDB没有连接,所以当你将ERD翻译成实际的模式时,你必须做出一些关于实现关系的具体决定。
特别是,在决定如何实际存储这些数据时,您需要做出"embed vs. reference"决定。仍然允许关系,只是没有强制执行。 MongoDB的许多包装器实际上提供了跨集合的查找,以抽象出一些复杂性。
即使MongoDB没有强制执行架构,也不建议完全随机进行。对您期望在系统中拥有的数据进行建模仍然是一个非常好的主意,而这正是ERD为您提供的。
所以我猜ERD的等价物是the ERD?
答案 1 :(得分:2)
我知道没有标准的方法来绘制面向文档的“架构”。
我确信您可以使用ERD来映射您的架构,但由于文档数据库不真正支持 - 或者更重要的是强制执行 - 数据之间的关系,因此它只会像您的代码在内部受到纪律处理一样有用加强这种关系。
答案 2 :(得分:2)
我一直在考虑同样的问题。 我得出以下结论: 如果NoSQL数据库通常是无模式的,那么实际上你没有一个“模式”来在图表中说明。
因此,我认为你应该采取“以身作则”的方法。 您可以绘制一些思维图,说明存储在NoSQL DB(例如MongoDB)中时数据的样子。
由于这些数据库非常动态,您还可以创建一些派生的思维导图,以显示今天的数据如何及时发展。
也看一下这个话题。
答案 3 :(得分:1)
您也可以使用UML类图。
答案 4 :(得分:1)
Moon Modeler支持MongoDB的架构设计。它允许用户定义具有嵌套结构的图。
答案 5 :(得分:0)
MongoDB确实支持“联接”,只是不支持SQL INNER JOIN(默认的SQL联接)。虽然“联接”的概念通常与SQL相关联,但是MongoDB确实具有其数据处理管道阶段的聚合框架。 $ lookup管道阶段用于创建SQL中的LEFT JOIN的等效项。也就是说,关系左侧的所有文档以及关系右侧的所有相关文档都将通过管道。修改文档以将关系包括在新文档中。
因此,我假设实体关系图确实在MongoDB中起作用。文档在db中肯定是彼此相关的,我们应该对这些关系进行可视化,包括基数关系,例如完全参与,部分参与,实体薄弱/强大等。
当然,MongoDB还引入了嵌入式文档和引用文档的概念,因此我认为它为ERD模型增添了更多风味。我当然希望看到可视化图中映射的嵌入式和引用关系。
剩下的问题是,那里有什么? Mongoose for NodeJS有什么用? Ruby的Mongoid?如果您在各自的存储库中检查其对应的ORM(对象关系映射器),那么您将看到它们的ERD。但是就其完整性而言,也许还有很多需要改进的地方,欢迎开源社区做出贡献。