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
將每個數據實體拆分為一個獨立的數據表,同時使用主外鍵關聯關系將多個數據表關聯起來,從而確保沒有任何冗余的數據,一份數據,只會放在一個數據表中
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類型數據體現,整個數據的關系以及完整的數據,都放在了一起。
59.關系型與document類型數據模型對比