将数据从关系数据库迁移到NoSQL

时间:2013-07-24 11:07:23

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

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

我有一个JEE6应用程序利用Hibernate ORM继续使用MySQL,但现在我们希望转向NoSQL解决方案,但需要将现有数据带给我们

由于 w ^

5 个答案:

答案 0 :(得分:6)

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

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

  

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

     

2. 考虑如何在文档商店中表示您的模型。

     

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

     

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

答案 1 :(得分:1)

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

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

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

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我做了M110JS" MongoDB for Node.js Developers"来自蒙哥大学https://university.mongodb.com/的课程,可以全心全意地推荐它(它也是免费的)。

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

它只是经常开始,所以这只是一种长期的方法。

答案 4 :(得分:0)

一些对新访问者有用的信息和链接: 从 RDBMS 迁移到 NoSQL 的可能性很大,但我建议阅读 NoSQL 的数据库设计。你正在处理完全不同的动物。这不会是从一个 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