[英]DynamoDB (NOSQL) database design
我對關系數據庫中的表有以下架構。
雇員
- 員工ID
- 名稱
-電子郵件
-密碼
-is_manager
專案
-project_id
-標題
-說明
-所有者
- 經理
技能專長
-skill_id
-技能
員工技能
-employee_skill_id
- 員工ID
-skill_id
項目會員
-project_member_id
-project_id
- 員工ID
我想在NOSQL數據庫設計中實現相同的目標。
我知道要為前3個表(員工,項目,技能)創建鍵對值。
進入表EmployeeSkills和ProjectMembers ,每個表包含來自其他2個主表的信息。 如何在NOSQL數據庫中表示呢?
我應該創建2個類似於RDBMS時尚的新表,還是應該將此信息作為主表屬性的鍵對值包括在內? 請提出建議。
提前致謝。
設計架構可以有多種方法。 在完成模式之前,您應該做的第一件事就是查看將對數據執行哪種查詢。
以下是我可以想到的主要模式,同樣可以根據查詢進行修改:
Employees
- employee_id
- name
- email
- password
- is_manager
- listOfProjects // There are list/map or Set data type which can be used
- listOfSkills
Projects
- project_id
- title
- description
- owner
- manager
Skills
- skill_id
- skill
listOfProjects中的數據將是主表中的projectId列表。
在上述架構中,優點是單次讀取即可獲得員工的所有信息。 一個缺點是,如果您要搜索具有某些技能/項目的所有員工,那么我將不推薦這種模式。
如果要進行查詢而不是使用單獨的表
EmployeeSkills
- skill_id (hash)
- employee_id (range)
Create GSI of above table with
- employee_id (hash)
- skill_id (range)
ProjectMembers
- project_id (hash)
- employee_id (range)
Create GSI of above table with
- employee_id (hash)
- project_Id (range)
編輯基於注釋更新架構以支持查詢
希望能有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.