时光荏苒,记忆犹新!
为什么数据库迁移如此重要?必须首先了解该问题与当今现代企业的成功有何直接关系。自从引入 SQL 以来,数据的重要性呈指数级增长,因此需要学习和应用 SQL 数据库的概念。学术界和工业界都发现了数据的新用途和引人注目的用途。这自然导致大学教授关系原则。随着毕业生进入劳动力市场,关系数据库被用于系统开发,这导致许多企业运行遗留软件系统,这些系统现在正在努力扩展和满足现代 Internet 客户的需求。
依赖遗留系统可能会导致落后于使用现代解决方案和基于云的服务(包括 NoSQL)的小型初创企业。这些初创企业可以将他们的产品扩展到远远超出传统系统所能提供的范围。这些公司失去的市场份额为行业解决方案开辟了一个新市场,这些解决方案可以帮助拥有遗留系统的企业将其数据基础设施迁移到 NoSQL,并教育工程团队如何有效实施它,以期维持和重新获得失去的市场份额。
实现这一飞跃并不像看起来那么难。接下来,我们将介绍 SQL 和 NoSQL 数据建模的基础知识(以及比较)。
NoSQL 数据建模的基本原则与用于 SQL 的基本原则相同。差异归结为数据的非规范化与规范化以及由此导致的共享方法的微小转变。下面的维恩图显示了 SQL 和 NoSQL 数据建模的高级视图。
创建实体关系图、了解应用程序的访问模式,然后使用索引优化数据吞吐量的过程对于 SQL 和 NoSQL 都是相同的。因此,现在让我们重点了解规范化和非规范化之间的区别。
创建实体关系图、了解应用程序的访问模式,然后使用索引优化数据吞吐量的过程对于 SQL 和 NoSQL 都是相同的。因此,让我们重点了解规范化和非规范化之间的差异。
什么是规范化?......就像其他人一样
规范化的目标是减少数据冗余和使用的数据存储量,以及提高数据完整性。在他的论文“数据库关系模型的进一步规范化”中,Edgar Codd 定义了四种形式的数据规范化:
形式 | 目的 |
1NF (第一范式) | 从数据模型中移除不必要的插入、更新和删除依赖——所有值都必须是原子的 |
2NF | 优化你的数据模型,这样当需要新的数据类型时,就不需要重构模式——非键值必须与主键有明确的联系 |
3NF | 移除数据模型中的传递依赖 |
4NF | 确定未来可能发生变化的统计数据;更改数据模型关系,以便查询这些统计信息是中性的 |
遵循此过程会生成一组具有明确定义的约束的表,这些约束可以满足减少数据冗余和保持数据完整性的目标。
什么是非规范化?— 只有特殊数据需要申请!
非规范化的目标是以最有效的方式设计所有访问模式。数据访问模式是一个主要焦点,需要仔细分析才能获得这种效率。这是通过将数据组合或嵌套到一个结构中来完成的,这样可以加快读取和写入速度并避免连接的开销。
有些人认为 NoSQL 是无模式的;然而,事实并非如此。所有应用程序都有一个固有的逻辑数据结构,它仍然存在于 NoSQL 数据库中——它只是隐式存储。通过利用此功能,可以减少连接,允许应用程序使用一次查找来检索所有必要的信息。
在进入示例之前,让我们首先回顾一下 NoSQL 数据模型的可能变体。
对于 SQL 数据解决方案,表是核心数据模型。但是,NoSQL 数据解决方案有多种模型可供选择。这主要取决于您使用的 NoSQL 数据库——四种最流行的类型:
键值对?
面向列
基于图形
文档导向
许多 NoSQL 数据库支持其中的两个或多个模型。这些被称为“多模型”数据库。
快速说明:在后面的部分中,一个简单的音乐站点用于演示反规范化。下面模型中使用的数据——乐队和歌曲名称——取自该示例。
键值对
对于键值对 NoSQL 数据库,模型由键和值组成:
首要的关键 | 价值 |
乐队名称 | 酷玩乐队 |
但对于更复杂的数据结构,值可以是一个 JSON 对象,其深度和复杂度更高。通常,文本用作 JSON 结构的可视化模型。
1个
主键:乐队名称
2个
价值:
3个
{
4个
???“乐队名称”:“酷玩乐队”,
5个
???“年”:2002年,
6个
???“产地”:“英国谢菲尔德”
7
???}
面向列
对于面向列的 NoSQL 数据库,可以使用表(或“列族”,因为它们与关系表根本不同)来显示列数据结构。表可以有多个标题行——每个数据结构一个:
主 键 | 属性 | ||
乐队名称 | 年 | 起源 | 乐队 成员 |
北极猴 | 2002年 | 英国谢菲尔德 | 亚历克斯·特纳、杰米·库克、尼克·奥马利、 马特·赫尔德斯 |
歌名 | 年 | 峰值图表位置 | |
当太阳下山时 | 2018 | 1个 |
该模型显示了两个数据结构, Band Name 和 Song Name 。
基于图形
对于基于图的 NoSQL 数据库,模型由节点和边组成。数据结构被放入节点中,关系由将一个节点连接到另一个节点的边表示。例如,可视化一个乐队、乐队演奏的歌曲和乐队成员可能会以这种方式建模:
文档导向
面向文档的 NoSQL 数据库有一个主键和一个 JSON 值。
1个
主键:Arctic Monkeys
2个
价值:
3个
{
4个
???“乐队名称”:“北极猴子”,
5个
???“年”:2002年,
6个
???"产地": "英国谢菲尔德",
7
???“乐队成员”: [
8个
??????“亚历克斯·特纳”,
9
??????“杰米·库克”,
10
“尼克奥马利”,
11
??????“马特·赫尔德斯”
12
??????],
13
???“流派”:[
14
??????“独立摇滚”,
15
??????“车库摇滚”,
16
??????“后朋克复兴”,
17
??????“迷幻摇滚”,
18
??????“另类摇滚”
19
??????]
20
???}
因为所有 SQL 模型都使用表,所以用表描述从 SQL 到 NoSQL 的迁移过程可能是更适用的描述,更能引起 SQL 背景的共鸣。因此,在以下部分中,将使用表模型。
了解有关 NoSQL 数据库的基础知识后,让我们深入了解非规范化的工作原理。
为了演示非规范化的核心概念,我们将从头开始介绍数据解决方案的设计。但是,您很可能已经完成了构建当前 SQL 数据解决方案的初始阶段。?
创建任何数据解决方案时,无论是 SQL 还是 NoSQL,您都应该考虑遵循以下步骤:
了解您的应用程序 ——使用最适合说明您的问题域及其设计的设计工具和流程。对于这个例子,我使用接线图。
构建实体关系图 ——捕获数据结构和它们之间的关系。
定义您的访问模式 ——应该组合在一起的数据,以便根据应用程序的需求实现最佳数据传输。
设计您的主键和索引 – 分析设计主键和索引以实现最佳数据传输的最佳方式。
本文由本站原创或投稿者首发,转载请注明来源!
本文链接:http://www.ziti66.com/net/html/176.html
下面有请小扒菜。。。
本站投稿暂时请将内容发送至指定邮箱,审核内容健康后放出,原创内容将优先置顶展现!
邮箱:liye1122#126.com
❤安全运行天 Copyright © 2018-2025 66字体网 版权所有.
本站采用创作共用版权 CC BY-NC-SA 3.0 CN 许可协议,转载或复制请注明出处