目录
开发敏捷性与数据库可管理性
NoSQL 业务和数据模型设计流程
RDBMS 数据建模对 NoSQL 的影响
NoSQL 数据模型变体
NoSQL 数据模型可视化
新的 NoSQL 数据建模机会
首页 数据库 mysql教程 NoSQL 数据建模

NoSQL 数据建模

Jun 07, 2016 pm 04:39 PM
data model nosql

RDBMS 的数据建模多年来一直是一个定义明确的学科。逻辑到物理映射和规范化/反规范化等技术已被专业人士(包括新手用户)广泛实践。然而,随着

RDBMS 的数据建模多年来一直是一个定义明确的学科。逻辑到物理映射和规范化/反规范化等技术已被专业人士(包括新手用户)广泛实践。然而,随着最近 NoSQL 数据库的出现,数据建模的相关性面临着新的挑战。一般来说,NoSQL 从业者关注物理数据模型设计而不是传统的概念/逻辑数据模型过程,原因如下:

  • 以开发人员为中心的思维方式 – 通过 NoSQL 数据库中灵活的模式(或无模式)支持,应用程序开发人员通常承担数据模型设计的责任。他们根深蒂固地认为数据库模式是应用程序逻辑的一个组成部分。
  • 在大规模横向扩展分布式环境中运行的高性能查询 - 与传统的集中式纵向扩展系统(包括 RDBMS 层)相反,现代应用程序在分布式横向扩展环境中运行。为了实现横向扩展,应用程序开发人员必须首先通过集中的物理数据模型设计来解决可扩展性和性能问题,从而放弃传统的概念、逻辑和物理数据模型设计过程。
  • 大数据和非结构化数据——传统的关系型数据库管理系统(RDBMS)由于其严格固定的模式和有限的横向扩展能力,长期以来因缺乏对大数据和非结构化数据的支持而受到诟病。相比之下,NoSQL 数据库从一开始就被设想为能够使用在分布式横向扩展环境中运行的灵活模式来存储大型非结构化数据。

在这篇博文中,我们探讨了 NoSQL 数据建模中其他重要的思维方式变化:通过灵活模式实现开发敏捷性与数据库可管理性;业务和数据模型设计过程; RDBMS 在 NoSQL 数据建模中的作用;影响数据建模的 NoSQL 变体; NoSQL 逻辑和物理数据建模的可视化方法。我们以 NoSQL 数据建模未来的巅峰来结束这篇文章。

开发敏捷性与数据库可管理性

当今 NoSQL 中备受推崇的一个特性是应用程序开发敏捷性。这种敏捷性部分是通过灵活的模式实现的,开发人员可以完全控制数据在 NoSQL 数据库中的存储和组织方式。开发人员可以在应用程序代码中即时创建或修改数据库对象,而无需依赖 DBA 执行。结果确实提高了应用程序开发和部署的敏捷性。

然而,灵活的模式并非没有挑战。例如,由于缺乏 DBA 的监督,动态创建的数据库对象可能会导致不可预见的数据库管理问题。此外,无监督的模式更改增加了 DBA 诊断相关问题的挑战。通常,此类故障排除需要 DBA 检查用编程语言(例如 Java)而不是 RDBMS DDL(数据定义语言)编写的应用程序代码,而这是大多数 DBA 不具备的技能。

NoSQL 业务和数据模型设计流程

在传统的软件工程实践中,良好的业务和(关系)数据模型设计是中型到大型软件项目成功的关键。当 NoSQL 开发人员承担业务/数据模型设计所有权时,出现了另一个困境:数据建模工具。例如,传统的 RDBMS 逻辑和物理数据模型由专门的专业人员使用 PowerDesigner 或 ER/Studio 等商业工具进行管理和发布。

考虑到 NoSQL 技术的新生状态,还没有适合此类任务的专业品质的数据建模工具。利益相关者检查应用程序源代码以发现数据模型信息的情况并不罕见。对于企业主或产品经理等非技术用户来说,这是一项艰巨的任务。其他方法,例如从生产数据库中采样实际数据,可能同样费力且乏味。

很明显,需要对自动化和工具进行大量投资。为了帮助缓解这一挑战,我们建议 NoSQL 项目使用下图所示的业务和数据模型设计流程(以 MongoDB 以文档为中心的模型进行说明):

NoSQL 数据建模

图1

  • 业务需求和领域模型:在高层,人们可以继续使用与数据库无关的方法(例如领域驱动设计)来捕获和定义业务需求
  • 查询模式和应用程序对象模型:在生成初步业务需求和域模型后,可以使用 UML 类或对象图迭代并行地分析顶级用户访问模式和应用程序模型。借助 RDMS,应用程序可以使用声明性查询(即使用单个 SQL 表连接)或导航方法(即遍历嵌入在应用程序逻辑中的各个表)来实现数据库访问。后一种方法通常需要对象关系映射 (ORM) 层来简化繁琐的管道工作。从本质上讲,几乎所有 NoSQL 数据库都属于后一类。 MongoDB 可以通过 JSON 文档模型、SQL 子集查询和全面的二级索引功能来支持这两种方法。
  • JSON 文档模型和 MongoDB 集合/文档:这部分是进行本机物理数据建模的地方。人们必须了解特定 NoSQL 产品的优点和缺点,以便进行有效的模式设计并提供有效的高性能查询。例如,对关注者和关注者等社交网络实体进行建模与对在线博客应用程序进行建模有很大不同。因此,社交网络应用程序最好使用 Neo4j 等图形 NoSQL 数据库来实现,而在线博客应用程序可以使用 MongoDB 等其他类型的 NoSQL 来实现。

RDBMS 数据建模对 NoSQL 的影响

有趣的是,老式 RDBMS 数据建模技术对于那些刚接触 NoSQL 技术的人来说仍然发挥着有意义的作用。以以文档为中心的 MongoDB 为例,下图说明了如何将关系数据模型映射到类似的 MongoDB 以文档为中心的数据模型:

NoSQL 数据建模

图2

NoSQL 数据模型变体

在关系世界中,逻辑数据模型可以在不同的 RDBMS 产品之间合理移植。在物理数据模型中,存储子句或非标准 SQL 扩展等设计规范可能因供应商而异。各种 SQL 标准,例如 ANSI/ISO 等行业机构定义的 SQL-92 和最新的 SQL:2008,可以帮助应用程序跨不同数据库平台进行移植。

然而,在NoSQL世界中,不同NoSQL数据库之间的物理数据模型差异很大;对于 RDBMS,没有与 SQL-92 相媲美的行业标准。因此,它有助于理解各种 NoSQL 数据库模型的关键差异:

  • 键值存储 – 由具有 1-n 个有效值
  • 的唯一键组成的集合
  • 列族 – 分布式数据存储,其中列由唯一键、键值以及区分当前值和过时值的时间戳组成
  • 文档数据库 – 存储和管理文档及其元数据(类型、标题、作者、创建/修改/删除日期等)的系统
  • 图数据库 - 使用图论将数据表示和存储为节点(人、企业、帐户或其他实体)、节点属性和边(将节点/属性相互连接的线)的系统

下图展示了基于模型复杂性和可扩展性的比较情况:

NoSQL 数据建模

图3

值得一提的是,对于NoSQL数据模型来说,存在从简单的键值存储到高度复杂的图数据库的自然演化路径,如下图所示:

NoSQL 数据建模

图4

NoSQL 数据模型可视化

对于概念数据模型,可以继续使用实体关系图等图表技术来对 NoSQL 应用程序进行建模。然而,逻辑和物理 NoSQL 数据建模需要新的思维,因为每个 NoSQL 产品都采用不同的本机结构。以 MongoDB 等以文档为中心的数据模型为例,可以直观地使用以下三种可视化方法中的任何一种:

  • MongoDB 集合的原生可视化表示,支持嵌套子文档(参见上面的图 2)

优点 – 它通过直观的视觉表示自然地传达复杂的文档模型。
缺点 – 如果没有专门的工具支持,可视化会导致使用不统一约定或符号的临时绘图。

  • 使用 JSON Designer 对选定的示例文档进行逆向工程(参见下面的图 5)

优点 – 它可以轻松地将分层模型逆向工程为存储在 NoSQL 数据库(如 MongoDB)中的现有 JSON 文档的可视化表示。
缺点 – 截至撰写本文时,JSON Designer 仅可在 iPhone / iPad 上使用。此外,它不包括本机数据库对象,例如 MongoDB 索引。

NoSQL 数据建模

图5

  • 传统的 RDBMS 数据建模工具,如 PowerDesigner(参见下图 6)

优点 – 提供商业工具支持。
缺点 – 它需要繁琐的手动准备和图表排列来表示复杂且深层嵌套的文档结构。

NoSQL 数据建模

图6

在以后的文章中,我们将介绍其他 NoSQL 产品的特定数据模型可视化技术,例如基于列族结构的 Cassandra。

新的 NoSQL 数据建模机会

像任何新兴技术一样,NoSQL 将随着成为主流而成熟。我们为 NoSQL 设想了以下新的数据建模机会:

  • 可重用的数据模型设计模式(一些特定于产品,一些不可知),有助于减少应用程序开发工作量和成本
  • 统一的NoSQL模型存储库以支持不同的NoSQL产品
  • 为(数据)模型驱动的设计流程和工具提供双向、往返工程支持
  • 从应用程序源代码中自动提取数据模型
  • 自动化代码-模型-数据一致性验证和一致性一致性指标
  • 对应用程序/数据模型变更管理进行强有力的控制,并在应用程序代码、嵌入式数据模型和 NoSQL 数据库中的实际数据之间进行主动跟踪和协调
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Spring Boot与NoSQL数据库的整合使用 Spring Boot与NoSQL数据库的整合使用 Jun 22, 2023 pm 10:34 PM

随着互联网的发展,大数据分析和实时信息处理成为了企业的一个重要需求。为了满足这样的需求,传统的关系型数据库已经不再满足业务和技术发展的需要。相反,使用NoSQL数据库已经成为了一个重要的选择。在这篇文章中,我们将讨论SpringBoot与NoSQL数据库的整合使用,以实现现代应用程序的开发和部署。什么是NoSQL数据库?NoSQL是notonlySQL

Trezor冷钱包:Model One与Model T的特性和使用指南 Trezor冷钱包:Model One与Model T的特性和使用指南 Jan 19, 2024 pm 04:12 PM

在许多中心化交易所出现问题后,越来越多的币圈投资者开始将资产转移到冷钱包中,以减少中心化交易所带来的风险。本文将介绍全球最早的冷钱包供应商Trezor,自2014年推出首款冷钱包至今,在全球多个国家销售。Trezor的产品包括2014年推出的ModelOne和2018年推出的进阶版本ModelT。下面将继续介绍这两款产品与其他冷钱包的区别。什么是Trezor冷钱包?2014年,Trezor推出了第一款冷钱包ModelOne。除了常见的BTC、ETH、USDT等币种外,该钱包还支持超过1000种其

PHP和NoSQL数据库的应用 PHP和NoSQL数据库的应用 Jun 19, 2023 pm 03:25 PM

在现代的网络应用程序开发中,PHP和NoSQL数据库已经成为了非常受欢迎的技术选择。在过去,PHP曾被广泛应用于开发动态网站和Web应用程序,而NoSQL数据库则是最近才出现的全新的数据存储技术,它提供了更加灵活和可扩展的解决方案。在这篇文章中,我们将会探讨PHP和NoSQL数据库在实际应用中的情况。PHP是一种服务器端编程语言,最初

使用PHP和MongoDB实现NoSQL数据库,满足不同用户需求 使用PHP和MongoDB实现NoSQL数据库,满足不同用户需求 Jun 26, 2023 pm 11:39 PM

NoSQL(NotOnlySQL)数据库是近年来快速发展的一类数据库,与传统关系型数据库相比,其具有更好的可扩展性和性能,并支持更多的数据类型和数据存储方式。其中,MongoDB是一款使用文档数据库模型的NoSQL数据库,被广泛应用于Web应用、移动应用、物联网设备等领域。本文将介绍如何使用PHP编写MongoDB数据库的基本操作,并通过实例演示如何满足

nosql与mysql的区别是什么 nosql与mysql的区别是什么 May 06, 2019 pm 02:39 PM

nosql与mysql的区别是:1、MySQL是一个基于表格设计的关系数据库,而NoSQL本质上是非关系型的基于文档的设计;2、MySQL的严格模式限制并不容易扩展,而NoSQL可以通过动态模式特性轻松扩展等等。

Redis与NoSQL数据库的比较 Redis与NoSQL数据库的比较 May 11, 2023 am 10:52 AM

随着互联网的快速发展,数据量也在不断增加。因此,数据管理成为了一个非常重要的课题。NoSQL(非关系型数据库)已经成为处理大数据问题的热门解决方案之一。而Redis又是一款十分流行的NoSQL数据管理软件。本文将分析和比较Redis和其他NoSQL数据库之间的异同点,帮助理解它们的特点和优缺点。一、Redis概述Redis是一个基于内存的存储系统,允许用户使

data文件夹里面是什么数据 data文件夹里面是什么数据 May 05, 2023 pm 04:30 PM

data文件夹里面是系统及程序的数据,比如软件的设置和安装包等,Data文件夹中各个文件夹则代表的是不同类型的数据存放文件夹,无论Data文件指的是文件名Data还是扩展名data,都是系统或程序自定义的数据文件,Data是数据保存的备份类文件,一般可以用meidaplayer、记事本或word打开。

Java API 开发中使用 MongoDB 进行 NoSQL 处理 Java API 开发中使用 MongoDB 进行 NoSQL 处理 Jun 18, 2023 am 10:24 AM

随着互联网的发展,数据量越来越大,要对这些数据进行有效的存储和处理变得尤为重要。NoSQL(NotOnlySQL)数据库因其高性能、可伸缩性和便捷性而备受关注,相比传统的关系型数据库,它们更加灵活,适用于各种不同的数据处理场景。MongoDB是一款非常流行的NoSQL数据库,在Java开发中也经常被使用。本文将介绍在JavaAPI开发中

See all articles