Mongo非关系型数据库关系化
2017-03-03 00:00
363 查看
摘要: 非结构化数据结构化
Mongo接入分表策略梳理:
mongo基本信息:
连接信息:
host:选填 默认 localhost
port:选填 默认 27017
username: 选填 默认 admin
password: 选填
数据库对象关系:
一个数据库连接对应多个数据库
一个数据库对应多个collection
一个collection对应多个document
接入流程:
填写连接信息
选择数据库
选择collection,并填写相应的document模板
用户预览根据模板生成的bdp表结构schema
用户对预览表结构schema进行自定义修改
根据schema取数同步
技术要点:
抽象mongo文档的数据结构关系,假设有如下模板文档,凡出现1对多的关系则分表,使用父文档的主键(索引)作为外键依赖:
将会生成如下table列表,分为三张表Demo,Demo.familyMembers, Demo.Demo.familyMembers.attributes, 并分别与父文档通过_id或者ArrayIndex建立联系:
3、3张表根据schema取数据如下:
Mongo接入分表策略梳理:
mongo基本信息:
连接信息:
host:选填 默认 localhost
port:选填 默认 27017
username: 选填 默认 admin
password: 选填
数据库对象关系:
一个数据库连接对应多个数据库
一个数据库对应多个collection
一个collection对应多个document
接入流程:
填写连接信息
选择数据库
选择collection,并填写相应的document模板
用户预览根据模板生成的bdp表结构schema
用户对预览表结构schema进行自定义修改
根据schema取数同步
技术要点:
抽象mongo文档的数据结构关系,假设有如下模板文档,凡出现1对多的关系则分表,使用父文档的主键(索引)作为外键依赖:
{ "_id" : 0, "hometown" : "Hollywood Hills", "familyName" : "Partridge", "familyMembers" : [ { "attributes" : [ { "name" : "instrument", "value" : "singer" }, { "name" : "role", "value" : "mom" } ], "age" : 42, "firstname" : "Shirley" }, { "attributes" : [ { "name" : "instrument", "value" : "guitar" }, { "name" : "role", "value" : "son" } ], "age" : 18, "firstname" : "Keith" }, { "attributes" : [ { "name" : "instrument", "value" : "keyboard" }, { "name" : "role", "value" : "sister" } ], "age" : 16, "firstname" : "Laurie" } ] }
将会生成如下table列表,分为三张表Demo,Demo.familyMembers, Demo.Demo.familyMembers.attributes, 并分别与父文档通过_id或者ArrayIndex建立联系:
[ { "name": "Demo", "collection": "Demo", "uniq_keys": [ "_id" ], "base_path": "", "columns": [ { "name": "_id", "path": "_id" }, { "name": "hometown", "path": "hometown" }, { "name": "familyName", "path": "familyName" } ] }, { "name": "Demo.familyMembers", "collection": "Demo", "base_path": "familyMembers", "columns": [ { "name": "_id", "path": "_id" }, { "name": "familyMembers._index", "path": "familyMembers._index" }, { "name": "age", "path": "familyMembers.age" }, { "name": "firstname", "path": "familyMembers.firstname" } ], "uniq_keys": [ "_id", "familyMembers._index" ] }, { "name": "Demo.familyMembers.attributes", "collection": "Demo", "base_path": "familyMembers.attributes", "columns": [ { "name": "_id", "path": "_id" }, { "name": "familyMembers._index", "path": "familyMembers._index" }, { "name": "familyMembers.attributes._index", "path": "familyMembers.attributes._index" }, { "name": "name", "path": "familyMembers.attributes.name" }, { "name": "value", "path": "familyMembers.attributes.value" } ], "uniq_keys": [ "_id", "familyMembers._index", "familyMembers.attributes._index" ] } ]
3、3张表根据schema取数据如下:
Demo ************************************************** [0, u'Hollywood Hills', u'Partridge'] Demo.familyMembers ************************************************** [0, 0, 42, u'Shirley'] [0, 1, 18, u'Keith'] [0, 2, 16, u'Laurie'] Demo.familyMembers.attributes ************************************************** [0, 0, 0, u'instrument', u'singer'] [0, 0, 1, u'role', u'mom'] [0, 1, 0, u'instrument', u'guitar'] [0, 1, 1, u'role', u'son'] [0, 2, 0, u'instrument', u'keyboard'] [0, 2, 1, u'role', u'sister']
相关文章推荐
- 关系和非关系型数据库入门
- 非关系型数据库NoSql之mongo
- sqoop操作 关系和非关系型数据库之间数据迁移
- 关系和非关系型数据库入门
- 关系型数据库与非关系型之间关系与比较
- mongodb 3.2 实战(一)非关系型数据库设计,如何进行mongo的数据库设计?
- mongo数据库--非关系型数据库
- 非关系型数据库中的「关系」实现
- 【NOSQL】非关系型数据库MongoDB ( 用MongoDB的文档结构描述数据关系 )
- 关系与非关系型数据库
- 关系数据库范式(1NF, 2NF, 3NF, BCNF)基本概念
- 关系数据库设计范式
- sqlserver 中怎样查看一个数据库中表的关系
- 关系型数据库和非关系型数据库
- 关系数据库
- 选择关系型数据库还是非关系型数据库
- Sonar 数据库表关系整理一(rule相关)
- 关系数据库不具有可扩展性(SQL Databases Don't Scale)
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
- jae的mongo数据库管理工具(原创)