簡體   English   中英

DynamoDB(NOSQL)數據庫設計

[英]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個表(員工,項目,技能)創建鍵對值。

進入表EmployeeSkillsProjectMembers ,每個表包含來自其他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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM