2016-07-12 9 views
0

我正在尋找一種解決方案,該解決方案將託管接近靜態的200GB結構化乾淨數據集,並在數據上提供JSON API以在Web應用程序中進行查詢。解決方案主機200GB的數據和提供聚合的JSON API?

我的每行數據是這樣的,我有大約700萬行:

parent_org,org,spend,count,product_code,product_name,date 
A31,A81001,1003223.2,14,QX0081,Rosiflora,2014-01-01 

的數據幾乎是完全靜態的 - 它每月更新一次。我想支持像簡單聚合查詢:

  • 得到首發QX,通過組織產品代碼的總開支,每月
  • 獲得由上級單位A31的總開支,每月

而且我希望通過RESTful JSON API提供這些查詢,以便我可以在Web應用程序中使用這些數據。

我不需要做連接,我只有一張桌子。

解決方案我已經調查:

  • 到目前爲止我一直使用的是Postgres(與Web應用程序提供的API),但我開始達到什麼我可以用索引做限制和物化視圖,沒有專用硬件+比我擁有更多的技能
  • Google雲數據存儲:適用於大小約爲這個大小的結構化數據,並且具有烘焙的JSON API,但不會進行聚合(所以我無法支持我的「總支出」查詢以上)
  • Google BigTable:絕對可以做這個大小的數據,可以做聚合,可以建立我的使用App Engine的自己的API?可能需要將數據轉換爲hbase才能導入。
  • 谷歌的BigQuery:在快速聚集,就需要推出自己的API與BigTable的,容易導入數據

我想知道如果有上面我需要一個通用的解決方案。如果沒有,我也會很樂意提供關於託管這些數據和提供JSON API的最佳設置的任何建議。

更新:看來,BigQuery和Cloud SQL支持類似於SQL的查詢,但云SQL可能不足夠大(見註釋)和BigQuery的昂貴得很快,因爲你通過查詢支付,就違反對於一個公共Web應用程序而言並不理想。數據存儲是很好的價值,但不做聚合,所以我不得不預先聚合並有多個表。

+0

雲SQL是一個選項嗎?大小調整常見問題 - https://cloud.google.com/sql/faq#sizeqps –

+0

@SolomonDuskis謝謝。它看起來像它會足夠大:)是否有可能在這個大小的數據集上執行?或者是答案(就像Postgres一樣)「直到你用真實數據進行嘗試時纔會知道」? – Richard

+0

我不知道。我自己更喜歡Cloud Bigtable。讓我看看是否可以讓雲端SQL中的某個人訪問。 –

回答

1

看一看ElasticSearch。它是JSON,REST,雲,分佈式,聚合查詢等等。它可能是也可能不是你想要的。

+0

謝謝!它可能會處理這麼多的數據嗎? – Richard

+0

它旨在運行在雲(彈性羣集)中。它可以通過產生更多的節點來動態擴展。顯然,這需要知道如何實現這種服務的架構師(比如在AWS上)。我用它在一個小型項目中,但我不得不研究聚類方面。我不爲他們工作,所以我可以/想說的是我不知道有任何上限。這取決於你投入多少錢/節點。 – pid

+1

免費獲得它,學習一些教程,然後在桌面PC或類似的設置上用程序生成的數據進行測試。需要2-3個工作日才能用10-100 GB的測試數據研究和測試一個非常簡單的設置。直指您所需要的,忽略所有其他功能,否則將花費太多時間來研究快速技術可行性/壓力測試。 – pid

3

雲SQL可能足以滿足您的需求。它當然能夠處理200GB,特別是如果您使用Cloud SQL Second Generation。

這只是爲什麼像MySQL這樣的傳統數據庫(雲數據庫所使用的數據庫)可能不夠充分的原因是,如果您的查詢非常複雜並且沒有編制索引。我建議您嘗試Cloud SQL,如果性能不足,請嘗試確保您有足夠的索引(提示:使用EXPLAIN statement查看查詢的執行方式)。

如果您的查詢無法以有用的方式編入索引,或者您的查詢密集型以至於無論索引編碼如何都很慢,您可能希望畢業於BigQuery。 BigQuery是並行化的,因此它可以處理的數據量與您投入的數據量相當,但是它並未針對實時使用進行優化,也不像Cloud SQL的「盒子中的MySQL」那樣具有吸引力。