2012-03-30 125 views
2

我剛剛嘗試過來自亞馬遜的dynamodb示例。亞馬遜DynamoDB客戶端很慢

我明白數據庫本身的優點,但我發現它使用http連接來寫入和讀取數據。 如果我有1000次寫入/秒,這是否意味着我需要1000個連接可用來寫入?如果是這樣,對客戶端服務器來說不是太重了嗎?

有沒有什麼辦法使用TCP作爲正常的數據庫連接?謝謝。

回答

0

對於每個查詢,您都沒有打開連接,您正在提出請求。因爲你在亞馬遜內部的高速網絡中,即使使用http,延遲也非常低。當然,TCP可能會「更快」,但這只是在比較非現實世界中的連接速度。使用HTTP獲得的真正好處是可以非常輕鬆地將其擴展出來。他們所做的是在每個請求上添加幾毫秒的延遲,並作爲回報,他們保證請求將少於10毫秒。在他們的文檔中,他們聲明他們保證的響應時間是單位數毫秒。

因此,如果你只是比較協議,那麼肯定HTTP比TCP慢。但是當你真正看待這個產品時,你會發現它的速度遠沒有那麼慢,當你開始考慮大數據集時,它可能是你設計的最快的數據庫之一。

+0

含義AWS SDK會自己維護一個連接池嗎?那麼我應該爲每個請求創建一個靜態客戶端對象還是更好地初始化一個新對象? – PeiSong 2012-04-04 03:19:41

+0

http沒有真正的連接池。 Http擁有你稱之爲永久連接並保持活力的http://en.wikipedia.org/wiki/HTTP_persistent_connection。但爲了從應用程序中獲得最高性能,您需要一次打開多個連接。您可以爲每個線程創建一個SimpleDB實例。 – bwight 2012-04-04 14:36:13

1

吞吐量爲1000次寫/秒意味着您的數據以這種方式分發,以保證您在一秒鐘內成功寫入數據1000次。 dynamodb在可擴展的環境中確實快速可靠。

0

如果你想在1000每秒寫入,那麼你就需要爲表配置寫入吞吐量爲1000假定每個數據項大小爲1KB,如果是小於1KB較小或較大,使用四捨五入數與1KB劃分爲後例如1.6kb/1kb = 1.6〜2即寫入吞吐量必須爲2000,每秒寫入1000次。即使在http連接之後,我發現它非常快,因爲我們的插入服務也運行在同一個EC2區域中。