• 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类型数据体现,整个数据的关系以及完整的数据,都放在了一起。

  • 相关阅读:
    031.NET5_ActionFilter的自定义和执行特点
    030.NET5_Autofac单抽象多实现属性注入
    029.NET5_Autofac单抽象多实现构造函数注入
    028.NET5_Autofac通过类支持AOP
    vue 设置回车input提交
    vscode设置全局自动换行
    vscode 插件大全
    SQL Server 2019基础配置
    SQL Server 2019 安装教程
    phpstudy(php环境)设置内网访问
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8542111.html
Copyright © 2020-2023  润新知