2015-02-10 53 views
6

我正在嘗試使用Dynamo DB。我正在嘗試測試Dynamo數據庫表,但是我無法在此獲得外鍵。如何在DynamoDB中分配foreignkey?

+0

你究竟是什麼意思? DynamoDB不是關係數據庫。你應該說你的實際問題是什麼,而不是要求一個特定的解決方案。此外,您的評論以上內容不會添加任何內容到對話中。 – mkobit 2015-02-10 17:14:02

+0

我們應該在Dynamo DB中定義外鍵嗎? – 2015-02-12 05:57:51

+0

外鍵在SQL Server中。 – 2015-02-12 05:58:11

回答

7

DynamoDB沒有外鍵。這是一個不支持這種關係數據的NoSQL數據庫。在表之間沒有維護數據完整性,所以這種行爲不是內置的。如果你想要這種行爲,你將不得不以不同的方式在DynamoDB中建模數據存儲。

FAQ解釋,這不是關係數據庫:

雖然亞馬遜DynamoDB剷球數據庫 的可擴展性,管理,性能和可靠性的核心問題,它不 擁有所有的關係數據庫的功能。它不支持複雜的關係查詢(例如連接)或複雜的 事務。如果您的工作負載需要此功能,或者您正在尋找與現有關係引擎的兼容性,您可能希望在Amazon RDS或Amazon EC2上運行關係引擎。雖然關係數據庫引擎提供強大的功能和特性,但是將工作負載擴展到單個關係數據庫實例之外的工作是 ,非常複雜,需要大量時間和專業知識。

+0

沿着這個問題的脈絡 - 在另一個表中使用另一個表(稱爲Users.id)的哈希鍵是一個好主意,比方說'Payments.id',因此您可以直接搜索'Payments.id = = Users.id'在Dynamo中創建類似外鍵的映射並允許直接查詢? 我只能看到它不是自我記錄,除非您將它稱爲Payments.userId並將其設置爲散列鍵,但是當命名散列鍵索引(如Payments.Id,用戶)時,在所有數據庫中失去一致性。身份證,錢包,身份證等 – anon58192932 2017-04-25 21:45:50

+1

我剛剛意識到,您可以獲得與全局二級索引的外鍵關係,並且如果您需要排序的外鍵防止掃描和過濾,則可以將範圍鍵添加到全局二級指標。這應該允許您仍然爲每個不同的表維護唯一的ID,同時仍然添加像查詢一樣的外鍵,並保留範圍鍵的最佳部分,這是自動排序和關鍵條件表達式比較操作(例如>,<, <=, > =和! =。 – anon58192932 2017-04-25 22:37:40