📜  从 SQL 迁移到 NoSQL 数据库的策略

📅  最后修改于: 2022-05-13 01:55:09.784000             🧑  作者: Mango

从 SQL 迁移到 NoSQL 数据库的策略

传统上,在许多软件项目中,我们可能使用过 Oracle、SQL Server、MySQL 等 RDBMS,并且可能使用结构化查询语言 (SQL) 来支持事务。如今,NoSQL 数据库经常在许多地方使用,甚至作为单独的软件或与 RDBMS 和 NoSQL 软件混合使用。在本文中,让我们看看从 SQL 迁移到 NoSQL 数据库的策略。

NoSQL 数据库的优点:

  1. 摆脱了关系模型涉及的严格关系(如外键)、使用 Joins 与其他表的关系、对象关系映射等,取而代之的是基于文档的 NoSQL 数据库(如 MongoDB、CouchDB 等),支持封装并可以实现类似的性质RDBMS 设施。
  2. 以整数数组的形式存储数据,作为单个实体等,很容易有助于减少复杂的连接以带来输出。
  3. 在优化概念上,RavenDB 类的 NoSQL 数据库支持索引功能,可以快速帮助拉取数据。
  4. 与 RDBMS 数据库一样,NoSQL 数据库不支持用于唯一标识的 int 数据类型,但它支持 String 键。由于这个原因,还使用了一些其他字符串键,它们有助于减少查询并加快查找速度。一个典型的例子是没有两个用户可以有一个唯一的电子邮件 ID。通过使用字符串键的概念,登录过程变得简单,避免了许多复杂的查询过程。
  5. RavenDB 类的 NoSQL 数据库支持关系。即使不使用关系和复杂的连接,也可以顺利过渡到 NoSQL。

NoSQL 中可用的替代解决方案以支持 RDBMS 的有用功能

  1. 在 RavenDB 类型的 NoSQL 数据库中可以看到 ACID 的重要概念,即 Atomic(A)、Consistent(C)、Isolated(I)、Durable(D)。特别是在支持事务并且可以进行原子写入的情况下。
  2. 在 NoSQL 中可以通过不同的概念(例如非规范化)来提高性能。无需创建复杂的主键和外键关系并创建复杂的连接来检索数据,而是将整个数据放置在单个文档中。例如,GFG 中的帖子将文章的内容、评论、喜欢和分享放在一个文档或集合中,以帮助快速检索数据。
  3. 一致性是 RDBMS 的一个非常重要的特性。在NoSQL中,可以通过BASE(即基本可用、软状态、最终一致)的方式来实现。 RavenDB 类型的 NoSQL 支持写入是 ACID/按 ID 读取是 ACID,但查询是 BASE。它支持WaitForIndexesAfterSaveChanges () 这显然使 RavenDB 阻塞其他事务,直到 COMMIT 完成并更新必要的更改。即使它有WaitForNonStaleResults方法也支持一致性。在 MongoDB 中,同样可以通过阻塞写入来实现,但它支持更新

从 SQL 迁移到 NoSQL 时的重要因素:

从 SQL 迁移到 NoSQL 需要考虑的一些重要因素:

1. 重新设计模式:只有数据层和模式需要根据 NoSQL 优化模型进行更改。在业务逻辑中,不需要更改。

2.重构:数据逻辑和RDBMS模式需要重构为NoSQL优化模型。

3. 先托管并根据需要进行优化:在所提出的技术中,必须进行托管,并且在此基础上,如果需要,优化流程以获得更好的性能。

几个术语:

在等同于 RDBMS 的 NoSQL 中几乎不需要看到术语。为此,让我们将 Couchdatabase 服务器用于 NoSQL,将 SQLServer 用于 RDBMS

Couchdatabase ServerSQL ServerImportant notes on understanding similarities and also NoSQL concepts
ClusterServerThe cluster provides more scalability and high availability.
BucketDatabaseFor performance improvement, a built-in cache is provided by the bucket.
ScopeSchema“dbo” is the schema name in SQL Server but not always
CollectionTableMore flexibility is provided via collections. As there is no need to strongly provide the column definition and constraints, more flexibility is seen in NoSQL.
DocumentRowData is available in the format of JSON
N1QLTSQLThere is no strict rule like keeping constraints and table mapping. But still, it can able to provide similar support using N1QL which is sometimes called SQL++
Document KeyPrimary KeyDocument keys are unique to collection similar to Primary key
IndexIndexIndexes are created on JSON fields

接下来,让我们看看 SQL Server 数据库和 Couch 数据库的数据类型区别

SQL Server JSON data typeNarration
char, varchar, nvarchar, etcstringWhenever there is a need to specify alphanumeric data along with special characters, we can go for a string in JSON.
integer, decimal, float, real, etcnumberThere is no specific difference between integer and decimal but as a numeric pattern alone it is represented in JSON.
bitbooleanTo represent true/false
date, DateTime, time, etcstringIn a text pattern, alone date/time values are specified

在从 SQL Server 转换到 Couch 数据库或任何其他 NoSQL 数据库时,需要注意上述术语。因此,应该进行重构,如果需要,还需要重新设计模式。

任何 NoSQL 数据库的主要强大优势是 JSON 格式的数据表示。它在云中高度可移植,因此最适合 Web 和移动应用程序。现在所有的 REST 服务都只提供 JSON 格式的响应。通过使用简单的集合/文档,它们很容易被捕获并存储在 NoSQL 数据库中,如果它已被放置在 RDBMS 中,通过使用上述术语,需要以低成本进行重新设计,并且我们可以在检索中获得更高的速度数据的。

我们在每个 NoSQL 数据库中都提供了更简单的导入工具,前提是我们能够以 JSON 格式从任何 RDBMS 传输数据。因此 JSON 是任何 RDBMS 和 NoSQL 数据库之间通信的关键方式。在某种程度上 XML 也支持。

结论:

如今,迁移到 NoSQL 数据库是更好的选择,因为在 AWS(Amazon Web Services)和 Azure 等云架构中,NoSQL 是最常用的数据库。因此,战略性地转向 NoSQL 是最佳选择。