2013-04-09 30 views
0

將AppEngine與Python結合使用,HRD按順序檢索記錄(通過索引字段是遞增整數時間戳),我們可以在30-45秒內得到15,000條記錄。 (使用批量和限制)我做了兩個並行查詢的實驗,但仍達到相同的整體吞吐量。使用appengine改進數據庫記錄檢索吞吐量

有沒有辦法改善這個總數而不更改任何代碼?我希望我們可以付出更多,並獲得更好的數據庫吞吐量。 (您可以爲更大的前端支付更多費用,但這不會影響數據庫吞吐量。)

我們將更改我們的代碼以將多個基礎數據項存儲在一個數據庫記錄中,但希望短期解決方法。

編輯:這些日誌記錄被下載到另一個系統。我們將在未來修復它並知道如何去做,但我寧願先處理更重要的事情。

+2

只是出於好奇,爲什麼你想要一次檢索這麼多的實體?如果你有這樣的要求,那麼你的設計可能會有問題,而不是HRD的性能。 – 2013-04-09 04:01:16

+0

我會繼續上面的@ illia-frenkel所說的。也許考慮設計你的應用程序以包含使用'memcache'並且可以被緩存?由於您沒有提供更多信息,因此我建議您觀看** App Engine數據存儲下的封面** http://www.youtube.com/watch?v=tx5gdoNpcZM和**使用App Engine構建可伸縮的Web應用程序**來自Google IO 2008的http://www.youtube.com/watch?v=Oh9_t5W6MTE。同時閱讀Jeff Dean的http://highscalability.com/numbers-everyone-應該知道 – stun 2013-04-09 04:41:09

+0

我已經添加了一個澄清編輯。我見過其他類似表現的報道。谷歌讓你支付更多的前端性能,所以我希望他們可以讓你支付更多的數據庫吞吐量。 – 2013-04-09 06:58:02

回答

0

也許你可以緩存你的記錄,就像使用內存緩存:

https://developers.google.com/appengine/docs/python/memcache/

這肯定可以加快應用程序的訪問。我不認爲App Engine數據存儲區是爲速度而設計的,但對於可擴展性爲。然而,Memcache是​​。

順便說一句,如果你是有意識有關GAE提供了按你所支付的,那麼也許你可以嘗試建立自己的App Engine雲計算與性能:

兩者都有積極的社區支持。我在當地的環境中使用CapeDwarf,但它仍然處於測試階段,但它工作正常。

+0

由於數據和查詢的性質,Memcache在這種情況下不起作用。我將數據下載到本地工作站,並使用MongoDB,每秒可以檢索30k條記錄,其中包括一個複雜的查詢和單線程的Python代碼,可以跨越它們進行上下文處理。最終我們計劃使用AWS或類似的東西。我仍然有些驚訝,數據存儲每30-45秒會給您15k條記錄,無論您是支付Google $ 0還是隻有一個低端前端,或者支付了數百條並有數百條。 – 2013-04-09 18:03:11

+0

好吧,我看,無論如何,爲什麼不使用純粹的MongoDB解決方案,這可能會更快。他們說MongoDB是最快的... – xybrek 2013-04-09 18:36:19

+0

我們知道中長期應該做什麼。這個問題純粹是在短期內做什麼 - 我真的希望答案包括向Google多付一點錢以獲得改進的性能。 – 2013-04-10 00:04:06

1

嘗試拆分不同實體組上的記錄。這可能會迫使他們去不同的物理服務器。從多個線程或實例並行讀取實體組。 使用緩存功能對於大型表格不適用。

+0

我們的計劃是將更多的記錄填充到AppEngine看到的每條記錄中,這對哪些記錄都有幫助。使用不同的實體組是類似的開發工作量,並且是更新代碼時我會考慮的。可悲的是,這不是一個短期的解決方案。 – 2013-04-09 18:05:43

-1

移至任何內存數據庫。如果您擁有Oracle數據庫,則使用TimesTen將提高多倍的吞吐量。

+0

問題是關於在谷歌appengine的數據庫。這不是預言,也不適用於時間。 – 2013-10-10 21:16:26