2012-01-28 29 views
4

我有一個應用程序,我已經建立,如果一切順利可以生成大量的數據。目前,我正在使用MySQL數據庫來存儲信息,並利用INNER和LEFT連接查詢來過濾數據。無論如何,我現在要用dynamodb玩一玩,但我想我會問人們是否認爲它適合以下數據結構,或者我是否應該使用關係數據庫。亞馬遜DynamoDB - 規模和收益,但它是一個合適

例如,假設我有一個project_id作爲主鍵的項目表。現在每個「項目」都可以有許多與之關聯的用戶。現在,當經理A登錄時,他可能想看到他的團隊成員擁有的所有項目。在RDS模型其次,這可能是結構化:

**project**      **project_to_user** 
    project_id PK     project_id 
    project_title     user_id 

    select p.project_id,p.project_title from project as p inner join project_to_user as pto on p.project_id = pto.user_id WHERE pto.user_id IN(1,2,3,4); 

現在,我在理論上可以保持類似的結構dynamodb不過,我必須先選擇project_to_user所有project_ids每個USER_ID(很多讀取)或者可能是掃描,如果user_id是一組user_id。然後我可以根據那些返回的ID選擇所有項目(可能通過代碼刪除重複項)。或者,我認爲我可以廢棄project_to_user表並在項目上具有user_ids屬性,並在該表上執行掃描。我知道掃描並不是使用dynamodb的最佳方法,但是這可以通過面部來抵消,第一種方法可能會造成很多讀取?

我的應用程序沒有很多表格,我知道它是amazon dynamodb的一個很好的候選者,但是我應該堅持關係模型嗎?

我知道這看起來很開放,但我對DynamoDB提供的規模前景感到興奮,但是我想知道它是否最適合這類事情。但是,如果我堅持關係模型,我可以看到數據庫管理成爲主要的頭痛問題。我已經重新設計了數據庫來適應dynamodb模型,但這只是這些「JOIN」點,讓我猶豫跳躍,並會欣賞人們可能擁有的任何見解。

對於MongoDB來說,我已經習慣了NoSQL,但據我所知,我必須比Amazon DynamoDB(它是亞馬遜的專業版)管理該設置更多

非常感謝

*編輯* 有可能是因爲許多搜索user_ID的查詢作爲有可能是爲PROJECT_ID,如果不是更多,但每個項目還需要單獨確定

+0

我注意到現有的用戶也受益於DynamoDB的免費套餐,所以我打開玩一玩,但仍然會欣賞一些指導 – TommyBs 2012-01-28 15:24:27

+0

您有用戶,項目,經理等,這怎麼會產生大量的數據的?我認爲關係數據庫更適合於你的數據裏面有關係。 – 2012-01-28 15:36:21

+0

嗨,感謝您的回覆,它的規模擴大了。所以越來越多的人註冊並創建自己的項目並擁有自己的用戶。所以我猜想數據的大小對於特定的「對象」保持不變,因爲它具有一定數量的字段。但隨着越來越多的人註冊它的規模增加。例如,一個社交網站如何成長。用戶有關係,所以更多的人知道誰註冊成長等等。如果你不需要'加入'選擇,nosql是一個不錯的選擇。 – TommyBs 2012-01-28 16:15:32

回答

0

的拇指規則是這樣的 - 如果你的問題很大可以使用DynamoDB,那麼這是一個很好的選擇。關於連接,您需要在應用程序級別的代碼中執行此操作。

如果您能夠在Dynamo中設計表以滿足您的查詢,那麼完全託管(零管理)和無限比例數據庫的好處就是優勢。

最近他們支持GSI,這使得查詢更加靈活。