【问题标题】:Migrate data from relational DB to NoSQL将数据从关系数据库迁移到 NoSQL
【发布时间】:2013-07-24 11:07:22
【问题描述】:

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

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

谢谢 W

【问题讨论】:

    标签: database jakarta-ee nosql relational-database java-ee-6


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 我想将 sqlite3 迁移到 pouchDB。我想知道,我需要手动将每个表写为文档吗?或者还有其他迁移数据库的方法吗?
    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        一些对新访问者有用的信息和链接: 很有可能从 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

        【讨论】:

          【解决方案5】:

          我参加了 Mongo 大学 https://university.mongodb.com/ 的 M110JS“面向 Node.js 开发人员的 MongoDB”课程,并且可以全心全意地推荐它(它也是免费的)。

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

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

          【讨论】:

            猜你喜欢
            • 2014-12-09
            • 1970-01-01
            • 2017-11-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-02-01
            • 2018-10-27
            • 1970-01-01
            相关资源
            最近更新 更多