pgsql - mongodb 数据迁移
1. 面临的问题。
A. 由于PGSQL为关系型数据库。MONGODB为文档型 JSON数据库。不能直接进行数据导入。只能通过程序进行导入。
B. 数据类型不匹配 pgsql中的JSONB类型在JAVA中只能表现为String类型。
C.MONGODB在JAVA中可以直接表现为存储对象。不需要遵守严格的SCHEME规则。
D.数据量大需要自动进行复制。并转换数据类型。
2.数据迁移步骤。
A.定义新的数据模型。(实体类) 尽可能与原来的设计保持一致。但数据类型需要变化。
设计原则:
1.如果存在外键关联查询的情况。
如果是关联数据会频繁的变化的,则采用引用ID关联。
如果主表数据量比较大。关联数据不会频繁变化的数据。则采用嵌入对象的设计方式。
嵌入对象如果是一对一就存储对象类型实体类型或者JSONObject类型。
如果是一对多,就存储对象集合LIST,或者JSONArray。
2.注意事项
1. 数据源对象需要复制的字段名称必须与数据复制目标对象严格一致包括大小写。
2. 在数据目标类上注解 Document(collection = 集合名(表名)) 目的是,指定存储和查询操作的集合名称。
3. 由于mongodb中数据必须要有唯一标识 类型为ObjectId,所以要指定字段为ID。在JAVA中定义 String
类型字段 统一命名为 _id,并且注解 @Id
4.由于之前的源数据存在ID的引用对应关系。所以必须在数据迁移的时候保持原来的数据主键标识。便于后续的关联查询。这里统一定义为 Long 类型 。命名为 id。并且注解为 @AutoIncKey 目的是执行保存之前更新自增长ID。
5.所有字段必须为public .
6.先建立controller 专门用作迁移数据。只指定一个表。
首先查询所有源表数据。所有字段保存在List中
循环源表通过类复制工具类Copy方法进行复制。
7.执行 mongoTemplet.save(对象) 直接进行循环保存。