1、关系型数据库迁移MongoDB实践技术创新,变革未来提纲 迁移规划 Schema设计 应用迁移 数据迁移(基千数据迁移(基千talend)迁移规划3提纲 迁移规划 Schema设计 应用迁移 数据迁移文档型模式优势5 丰富的数据模型,自然数据表示(JSON) 将相关数据嵌入到子文档和数组支持对任何元素的索引和丰富的查询 数据聚合到个结构(预连接) 编程变得简单高效的性能 动态模式数据模型很容易发展 适应快速变化:敏捷方法RDBMSMongoDBDatabaseDatabaseTableCollectionRowDocumentIndexIndexJOINEmbedded Document or
2、 Reference数据模型:关系型 到 MongoDB(文 档 型 )6RelationalMongoDB Documentfirst_name: Paul, surname: Miller city: London,location: 45.123,47.232, cars: model: Bentley, year: 1973,value: 100000, , model: Rolls Royce, year: 1965,value: 330000, RDBMS-Blogging Platform7以文章为中心的 数据模型,外围包括了分类、用户、 标签、备注等5张 表。ER图MongoD
3、B:Schema Design8文章为主文档嵌套 了备注、标签、分 类信息记录。用户信息存在较多 冗余,独立存储在 外部文档。MongoDB:Schema DesignMongoDB:建模模型9嵌入为1:1或1:Many(父子关系) 所有权和控制文档16 mb的限制,考虑文档的增长引用_id领域中引用相关文档应用程序运行2阶段查询来检索数据 数据重复 vs 性能模型较复杂MongoDB:索引设计101: _id索引索引:是绝大多数集合默认建立的索引,对千每个插入的 数据,MongoDB都会自动生成条唯的_id字段2:单键索引单键索引3:复合索引复合索引:查询多个条件时,建立复合索引4:过 期
4、索 引过 期 索 引 :在段时间后会过期的索引,自动删除之前数据5:全文索引全文索引:对字符串与字符串数组创建全文课搜索的索引6:地理位置索引地理位置索引将些点的位置存储在MongoDB中,创建索引后,可以按照位置 来查找其他点。提纲 迁移规划 Schema设计 应用迁移 数据迁移MongoDB驱动和框架MongoDB CRUD 与SQL 语句对比https:/ 整合TableuaReportingReportsVisualizations提纲 迁移规划 Schema设计 应用迁移 数据迁移数据模型:关系型 到 MongoDB(文 档 型 )16RelationalMongoDB Docume
5、ntfirst_name: Paul, surname: Miller city: London,location: 45.123,47.232, cars: model: Bentley, year: 1973,value: 100000, , model: Rolls Royce, year: 1965,value: 330000, 数据迁移方法方法一方法一:手工编写程序手工编写程序通过程序将源数据生成JSON结构,使用mongoimport工具导 入。或者读取文件直接写入数据库。方 法 二方 法 二 :ETL工具数据迁移工具数据迁移通过ETL工具将数据从关系型数据迁移至MongoDB,包
6、括:Informatica、Pentaho、Talend和Kettle等工具,从源数据库提取数 据、转换为目标MongoDB 架构、再将数据分段导入。数据迁移案例:Oracle - MongoDB例子:Oracle 数据源结构:MongoDB 目标数据结构:Talend 配置流程Step 1)建立数据源(MongoDBConnection,OracleConnection)Step 2)配置导入主表、子表数据模块(OracleInput)Step 3)配置主、子表关联关系(tmap)Step 4)数 据 排 序 (tSortRow可 选 )Step 5)导 入 MongoDB数据库(MongoDBOutput)Step 6)生成导出结构报告(tLogRow)Talend 迁移操作流程Step 1)建立数据源(MongoDBConnection,OracleConnection)Step 2)配置导入主表、子表数据模块(OracleInput)Step 3)配置主、子表关联关系(tmap)Step 4)数 据 排 序 (tSortRow可 选 )Step 5)导 入 MongoDB数据库(MongoDBOutput)Step 6)生成导出结构报告(tLogRow)谢谢 谢!谢!