RDBMS 的数据建模多年来一直是一个定义明确的学科。逻辑到物理映射和规范化/反规范化等技术已被专业人士(包括新手用户)广泛实践。然而,随着
RDBMS 的数据建模多年来一直是一个定义明确的学科。逻辑到物理映射和规范化/反规范化等技术已被专业人士(包括新手用户)广泛实践。然而,随着最近 NoSQL 数据库的出现,数据建模的相关性面临着新的挑战。一般来说,NoSQL 从业者关注物理数据模型设计而不是传统的概念/逻辑数据模型过程,原因如下:
在这篇博文中,我们探讨了 NoSQL 数据建模中其他重要的思维方式变化:通过灵活模式实现开发敏捷性与数据库可管理性;业务和数据模型设计过程; RDBMS 在 NoSQL 数据建模中的作用;影响数据建模的 NoSQL 变体; NoSQL 逻辑和物理数据建模的可视化方法。我们以 NoSQL 数据建模未来的巅峰来结束这篇文章。
当今 NoSQL 中备受推崇的一个特性是应用程序开发敏捷性。这种敏捷性部分是通过灵活的模式实现的,开发人员可以完全控制数据在 NoSQL 数据库中的存储和组织方式。开发人员可以在应用程序代码中即时创建或修改数据库对象,而无需依赖 DBA 执行。结果确实提高了应用程序开发和部署的敏捷性。
然而,灵活的模式并非没有挑战。例如,由于缺乏 DBA 的监督,动态创建的数据库对象可能会导致不可预见的数据库管理问题。此外,无监督的模式更改增加了 DBA 诊断相关问题的挑战。通常,此类故障排除需要 DBA 检查用编程语言(例如 Java)而不是 RDBMS DDL(数据定义语言)编写的应用程序代码,而这是大多数 DBA 不具备的技能。
在传统的软件工程实践中,良好的业务和(关系)数据模型设计是中型到大型软件项目成功的关键。当 NoSQL 开发人员承担业务/数据模型设计所有权时,出现了另一个困境:数据建模工具。例如,传统的 RDBMS 逻辑和物理数据模型由专门的专业人员使用 PowerDesigner 或 ER/Studio 等商业工具进行管理和发布。
考虑到 NoSQL 技术的新生状态,还没有适合此类任务的专业品质的数据建模工具。利益相关者检查应用程序源代码以发现数据模型信息的情况并不罕见。对于企业主或产品经理等非技术用户来说,这是一项艰巨的任务。其他方法,例如从生产数据库中采样实际数据,可能同样费力且乏味。
很明显,需要对自动化和工具进行大量投资。为了帮助缓解这一挑战,我们建议 NoSQL 项目使用下图所示的业务和数据模型设计流程(以 MongoDB 以文档为中心的模型进行说明):
图1
有趣的是,老式 RDBMS 数据建模技术对于那些刚接触 NoSQL 技术的人来说仍然发挥着有意义的作用。以以文档为中心的 MongoDB 为例,下图说明了如何将关系数据模型映射到类似的 MongoDB 以文档为中心的数据模型:
图2
在关系世界中,逻辑数据模型可以在不同的 RDBMS 产品之间合理移植。在物理数据模型中,存储子句或非标准 SQL 扩展等设计规范可能因供应商而异。各种 SQL 标准,例如 ANSI/ISO 等行业机构定义的 SQL-92 和最新的 SQL:2008,可以帮助应用程序跨不同数据库平台进行移植。
然而,在NoSQL世界中,不同NoSQL数据库之间的物理数据模型差异很大;对于 RDBMS,没有与 SQL-92 相媲美的行业标准。因此,它有助于理解各种 NoSQL 数据库模型的关键差异:
下图展示了基于模型复杂性和可扩展性的比较情况:
图3
值得一提的是,对于NoSQL数据模型来说,存在从简单的键值存储到高度复杂的图数据库的自然演化路径,如下图所示:
图4
对于概念数据模型,可以继续使用实体关系图等图表技术来对 NoSQL 应用程序进行建模。然而,逻辑和物理 NoSQL 数据建模需要新的思维,因为每个 NoSQL 产品都采用不同的本机结构。以 MongoDB 等以文档为中心的数据模型为例,可以直观地使用以下三种可视化方法中的任何一种:
优点 – 它通过直观的视觉表示自然地传达复杂的文档模型。
缺点 – 如果没有专门的工具支持,可视化会导致使用不统一约定或符号的临时绘图。
优点 – 它可以轻松地将分层模型逆向工程为存储在 NoSQL 数据库(如 MongoDB)中的现有 JSON 文档的可视化表示。
缺点 – 截至撰写本文时,JSON Designer 仅可在 iPhone / iPad 上使用。此外,它不包括本机数据库对象,例如 MongoDB 索引。
图5
优点 – 提供商业工具支持。
缺点 – 它需要繁琐的手动准备和图表排列来表示复杂且深层嵌套的文档结构。
图6
在以后的文章中,我们将介绍其他 NoSQL 产品的特定数据模型可视化技术,例如基于列族结构的 Cassandra。
像任何新兴技术一样,NoSQL 将随着成为主流而成熟。我们为 NoSQL 设想了以下新的数据建模机会:
译文地址:NoSQL数据建模,感谢原作者分享。