2017-09-11 19 views
0

的密鑰假設我有stafforganization_id分區鍵staff_id作爲排序鍵的主鍵組成。另一方面,我有department本地二級索引與department_id排序鍵讀不同的局部副索引一個DynamoDB表

{ 
    ... 
    KeySchema: [ 
    { AttributeName: "organization_id", KeyType: "HASH"}, 
    { AttributeName: "staff_id", KeyType: "RANGE" } 
    ], 
    LocalSecondaryIndexes: [ 
    { 
     IndexName: "department", 
     KeySchema: [ 
      { AttributeName: "organization_id", KeyType: "HASH"}, 
      { AttributeName: "department_id", KeyType: "RANGE" } 
     ], 
     Projection: { 
      ProjectionType: "KEYS_ONLY" 
     } 
    } 
    ], 
    AttributeDefinitions: [ 
    { AttributeName: "organization_id", AttributeType: "S" }, 
    { AttributeName: "staff_id", AttributeType: "S" }, 
    { AttributeName: "department_id", AttributeType: "S" } 
    ] 
    ... 
} 

正如人們可以很容易地弄清楚,有許多項目與不同staff_id共享相同department索引鍵。我需要查詢給定organization_id的組織的部門列表。有沒有辦法從staff表中檢索這個列表?我不想保留另一個departments表。我是DynamoDB的新手,所以如果您對整體桌面設計有任何意見/建議,那麼非常歡迎。

回答

2

截至目前,在DynamoDB中沒有獨特的直接功能,但您可以通過以下方式實現此功能。

  1. 查詢你LSI,並獲得organizationId所有記錄,然後在應用層面,你發現不同的值。(這是的NoSql DB的非常普遍的做法)

  2. 當你有提到創建另一個表,現在我建議你創建另一個表,你可以直接檢索只能選擇值

    這樣
  3. CloudSearch:可集成到DynamoDB表,那麼你可以在Cloudsearch而不是表直接搜索,但是這是非常有用的,當你有多個搜索查詢和m記錄的錯誤。

感謝

+0

我結束了維持'departments'表。 – kokeksibir

相關問題