繁体   English   中英

如何用 UML 绘制 NoSQL 数据库(面向文档)?

[英]How to draw a NoSQL database (document oriented) with UML?

我是使用 NoSQL 的初学者,旨在建立一个类似 uber 的数据库。 是否可以使用 UML 绘制 CouchDB 数据库(面向文档),特别是如何进行连接? 或者还有其他更适合 NoSQL 数据库建模的替代方案吗?

无论实现技术如何,您都可以使用UML class 图表到 model 实体和应用程序域的聚合。 您还可以 model 一个更具体的实现,它使用NoSQL数据库,特别是文档存储,例如 CouchDB。 存储在数据库中的对象被一种脱水(即 object 数据没有它们的行为)成一个文档。

您将面临以下挑战:

  1. 文档世界和 object 世界之间的映射:一个文档可能包含多个相关对象(不需要连接),以及指向其他对象的链接(另请参阅 嵌入/嵌套文档与文档引用)。

  2. 潜在的非结构化(或松散结构)文档:文档数据库对于文档的内容非常灵活,并且完全允许将完全不相关的类的对象混合到同一个文档集合中。 此外,文档的字段/属性/成员可能是动态的和不断发展的。 然而,在实践中,collections 通常包含类似的对象,这些对象主要在字段方面有所不同(例如,承认隐式类的存在)。 如果需要,甚至可以根据模式验证文档以确保一致性。

  3. UML 类基于强类型,而文档中的类型与其内容的 rest 一样灵活(例如, from的字段可能是一个文档中的日期2000-04-02或另一个文档中的字符串"a long time ago" )。

因此,在开始之前,您需要考虑映射策略 我的建议是在 UML 中专注于 object model 的设计,并将文档视为相关文档的方便分组( DDD 聚合可能在这方面有所帮助)。 以下经验法则可能有助于建模:

  • 连接(例如独立文档之间的链接)将由关联表示。
  • 对象与其他对象的系统分组,可能表明存在某种更强的关系,例如 UML 组合。
  • 因文档而异的字段将使用可选属性(多重性0..10..* )或封闭 object 的概括/专业化表示,具体取决于解释变化的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM