59.关系型与document类型数据模型对比

现假设有如下两个类:

   

class Department(object):

def __init__(self, dept_id, name, desc, employees=[]):

self.dept_id = dept_id

self.name = name

self.desc = desc

self.employees = employees

   

   

class Employee(object):

def __init__(self, emp_id, name, age, gender, dept_id):

self.emp_id = emp_id

self.name = name

self.age = age

self.gender = gender

self.dept_id = dept_id

   

   

这两个类的数据在关系型数据库中存储方式:新建两张表

department

  • dept_id
  • name
  • desc

employee

  • emp_id
  • name
  • age
  • gender
  • dept_id

   

将每个数据实体拆分为一个独立的数据表,同时使用主外键关联关系将多个数据表关联起来,从而确保没有任何冗余的数据,一份数据,只会放在一个数据表中比如dept name(部门名称)就只会放在department表中,不会在employee表中也放一个dept name,如果说你要查看某个员工的部门名称,那么必须通过员工表中的外键,dept_id,找到在部门表中对应的记录,然后找到部门名称

   

es文档数据模型

   

{

"deptId": "1",

"name": "研发部门",

"desc": "负责公司的所有研发项目",

"employees": [

{

"empId": "1",

"name": "张三",

"age": 28,

"gender": ""

},

{

"empId": "2",

"name": "王兰",

"age": 25,

"gender": ""

},

{

"empId": "3",

"name": "李四",

"age": 34,

"gender": ""

}

]

}

以下可以看出es是更加类似于面向对象的数据模型,将所有由关联关系的数据,放在一个doc中,以 json类型数据体现,整个数据的关系以及完整的数据,都放在了一起。

原文地址:https://www.cnblogs.com/liuqianli/p/8542111.html