9

是否有可能/是否有工具/最佳实践等将数据从关系数据库迁移到 NoSQL 格式。

我有一个使用 Hibernate ORM 持久保存到 MySQL 的 JEE6 应用程序,但现在我们希望迁移到 NoSQL 解决方案,但需要随身携带现有数据

谢谢

4

5 回答 5

9

有一些工具可以帮助迁移,但归根结底,MySQL 是一个关系数据库,其结构与 noSQL 数据库完全不同。

最后,您几乎总是必须执行本文所述的这四个步骤(指的是 mongoDB,您没有指定,但它适用于任何一个):

1.了解 MongoDB。下载它,阅读教程,尝试一些玩具项目。

2.考虑如何在其文档存储中表示您的模型。

3.将数据从数据库迁移到 MongoDB,可能只需针对数据库编写一堆SELECT * FROM语句,然后使用您选择的语言将数据加载到您的 MongoDB 模型中。

4.重写您的应用程序代码以通过 insert() 或 find() 等语句查询 MongoDB。

于 2013-07-24T12:02:02.223 回答
3

为了简化一点,Oracle 数据库将完全掌握数据库中存储的内容。Oracle 或任何 RDBMS 将通过维护存储在表中的数据块之间的关系来做到这一点。

另一方面,基于文档的数据库主要存储数据在系统中的使用方式。它使用键值对来实现这一点,其中键在其中扮演某些关键变量。

这将取决于要迁移的系统的复杂性、卷、要提供的功能等。虽然有多种方法可以从 RDBMS 迁移到基于 json 的数据库,但标准方法将涉及在现有 SQL DB 上构建视图和分阶段迁移。

当然,这种迁移的基本过程是从 Schema 重新设计开始作为第一步。在 Mongo JSON 或 BSON 等文档结构中,大多数父子关系可以容纳到单个结构(或文档)中。例如,Person_ID、Car_Ownership_ID 可以结合起来生成一个列出汽车所有所有者的 json 文档。

一个健全的模式设计过程将考虑某些目标,同时对 RDBMS 中的完全规范化的数据库进行非规范化。作为一个很好的第二步,除了某些外部连接之外,大多数 JOIN 将需要组合成交织的集合以便更容易访问。

Schema 准备好后,可以使用 ETL 过程或替代脚本来提取、转换和加载带有 RDBMS 中数据副本的新原理图。

于 2018-03-19T14:38:56.110 回答
1

将数据迁移到 NoSQL。在我看来,MongoDB 是一个不错的选择。有一个工具Tapdata Replicator可以将 MySQL、Oracle、SQLServer 复制到 MongoDB。它允许您设置源数据库和目标数据库,然后将数据从源映射到目标。您可以在 MongoDB 中设置新的数据模型,无需任何代码。例如,源数据库 MySQL 中有 20 张表,您可以在 MongoDB 中设计数据模式,集成到 3 或 5 个集合中。此外,您可以选择 1:1 克隆。

于 2019-07-30T04:29:04.273 回答
0

一些对新访问者有用的信息和链接: 从 RDBMS 迁移到 NoSQL 很有可能,但我建议阅读 NoSQL 的数据库设计。你正在处理完全不同的动物。这不是您从一个 RDBMS 到另一个 RDBMS 的典型 ETL/1:1 迁移。基本上设计用于高效的读/写和扩展(因此考虑 CPU、查询的内存使用,而不是像规范化 SQL 世界那样最小化磁盘空间)。通过选择正确的分区键进行扩展设计。根据数据访问要求,您的数据模型很可能会非常非规范化甚至在多个集合中复制副本。一旦您的设计完成,您就可以使用 Java SDK 为您选择的 NoSQL DB 编写此迁移。以下是一些帮助您入门的链接:

https://docs.microsoft.com/en-us/azure/cosmos-db/modeling-data https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-modeling-nosql.html

于 2021-01-04T03:08:31.350 回答
-1

我从 Mongo 大学https://university.mongodb.com/上学习了 M110JS “MongoDB for Node.js Developers”课程,并且可以全心全意地推荐它(它也是免费的)。

它确实涵盖了(我认为只有一周的时间)SQL 和 NOSQL 之间的差异,例如何时不使用外键而是嵌入文档、冒着重复风险等以及如何处理它。

它只是每隔一段时间才开始,所以这只是一个长期的方法。

于 2015-01-15T00:03:39.293 回答