2017-08-02 130 views
0

我正在創建一個DynamoDB中的人員表,我想標記這些人。如何在DynamoDB中獲取具有特定值的項目?

爲了演示的目的可以說,這些標籤都只是串......「高」,「短」,「喜歡棒球」等等......

我如何可以設置數據,以便我能迅速用特定標籤查詢所有人,就像所有「高大」的人一樣?

我可以避免掃描表嗎?我可以避免創建多個表嗎?這對於關係數據結構來說實際上是一個更好的用例嗎?如果我隨時拿出新標籤怎麼辦?在這種情況下,關係不起作用。

更新:

People Tags Mappings ====== ==== ======== John firefighter John > firefighter Sally young John > young Joe owner Sally > owner Anne staff Anne > owner Chris zebra-lover Chris > zebra-lover Ben 42 Ben > zebra-lover

回答

1

一般來說,當你想查詢這不是主鍵的屬性,以避免掃描,您可以使用global secondary keys。對於您的情況可能無法正常工作,因爲您可能希望一次爲多個標籤標記人員。

因此,我寧願去一個單獨的表,其中只包含標籤映射到人。在該表中,一個項目應該是一個標籤到一個人的映射。如果一個人有多個標籤,只需在其中添加多個項目。

通過這種方式,您可以查詢給定標記的標記表以獲取所有正在搜索的人的主鍵,然後再對人物表執行另一個查詢以獲取其詳細信息。

這也適用於新標籤,因爲它們只是表示標籤表中的其他項目。

+0

我已經差不多了。讓我用我的理解來更新我的問題... – Costa

+0

因此,如果我想要所有的斑馬愛好者,我會查詢我的斑馬愛好者的映射表,並且它會吐出一個人的id列表(或我們的名字例如)...然後,我們將爲每個名稱執行多個獲取項目請求?如果我們有成千上萬的斑馬愛好者呢?明智的表現還算不錯嗎? – Costa

+0

在您更新的問題中,您有三張桌子,但您只需要兩張桌子。 「標籤」 - 你有可用的表是沒有必要的。而是在「映射」 - 表中使用標籤作爲主鍵。然後,您可以查詢該表的標籤並獲取屬於這些標籤的人員。 – Dunedan

相關問題