Elasticsearch-81-关系型数据库与document类型数据模型对比

Java类

有如下两个类,部门类和员工类

1
2
3
4
5
6
7
8
public class Department {

private Integer deptId;
private String name;
private String desc;
private List<Employee> employees;

}

1
2
3
4
5
6
7
8
9
public class Employee {

private Integer empId;
private String name;
private Integer age;
private String gender;
private Department dept;

}

关系型数据库

在关系型数据库中上面的java类可能对应的就是两张表

1
2
3
4
department表: 
dept_id
name
desc

1
2
3
4
5
6
employee表:
emp_id
name
age
gender
dept_id

关系型数据库中,每个数据实体都拆分为一个独立的表,然后通过主外键将数据关联起来

document文档数据模型

在非关系型数据库中,就是document文档数据模型,里面存放的数据可能就是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"deptId": "1",
"name": "研发部门",
"desc": "负责公司的所有研发项目",
"employees": [
{
"empId": "1",
"name": "张三",
"age": 28,
"gender": "男"
},
{
"empId": "2",
"name": "王兰",
"age": 25,
"gender": "女"
},
{
"empId": "3",
"name": "李四",
"age": 34,
"gender": "男"
}
]
}

这种document数据模型,类似于面向对象的数据模型,将所有由关联关系的数据,放到一个doc json类型的数据中,整个数据的关系还有完整的数据 都放在了一起