将 mongoDB 集合转换为 mySQL 数据库

convert mongoDB Collection to mySQL Database

我的项目是在 spring 4 MVC + Hibernate 中使用 MongoDB 创建的。现在,我必须用 MySQL 将它转换成 Hibernate。我的问题是我有太多 MongoDB bson 和 json 格式的集合。如何将该文件转换为 MySQL table 格式?这可能吗?

您的 MongoDB 集合中的文档代表项目中某些 classes(POJO、域对象等)的序列化形式。据推测,您从 MongoDB 读取此数据并将其反序列化为 class 形式并在您的项目中使用它,例如将其显示给最终用户、在计算中使用它、从中生成报告等。

现在,您更愿意在 MySQL 中托管该数据,因此您想知道如何将数据从 MongoDB 迁移到 MySQL,但是由于持久性格式完全不同,您想知道如何做到这一点。

这里有两个选项:

  • 使用您的应用程序代码从 MongoDB 中读取数据,将其反序列化到您的 classes 中,然后使用 JDBC 或ORM映射层等
  • 使用mongoexport从MongoDB中导出数据(以JSON格式),然后编写某种能够将此数据映射为所需格式的适配器您的 MySQL 数据模型。

这些方法的非功能性(尤其是读写方面)会有所不同,但从根本上讲,这两种方法非常相似;他们都 (1) 从 MongoDB 读取; (2)将文档数据映射到关系模型; (3) 将映射后的数据写入MySQL。这个流程最棘手的方面是没有。 2 因为只有您了解您的数据和关系模型,所以没有任何工具可以神奇地为您做到这一点。第三方工具如何充分了解您的文档模型和关系模型以便能够为您执行此转换?

您可以调查 MongoDB JDBC 驱动程序或使用 Apache Drill 之类的东西来促进 JDBC 对您的 Mongo 数据库的查询。由于这些可能 return java.sql.ResultSet 您将处理更适合写入 MySQL 的结果格式,但很可能这仍然与您的目标关系模型不匹配,因此您仍然需要某种形式的转换代码。

Mongodb 是非关系数据库,而 MySQL 是关系数据库。关键区别在于非关系数据库包含可以包含层次结构的文档(JSON 对象),而关系数据库期望对象被规范化并分解为表。因此,不可能简单地将 bson 数据从 MongoDB 转换为 MySQL 可以理解的内容。您将需要编写一些代码来从 MongoDB 读取数据并将其写入 MySQL.