2013-10-28 76 views
0

我目前正在爲SaaS近實時分析應用程序測試Redshift。 在100M行數據集上查詢性能很好。Amazon Redshift for SaaS應用程序

但是,當更多用戶同時使用應用程序時,每個羣集15個查詢的併發限制將成爲問題。

我不能緩存對所有的結果,因爲我們授權自定義每個查詢過濾器(即席查詢)

該應用程序的要求是:

  • 查詢必須10S
  • 內返回結果
  • 使用超過100列的過濾器進行臨時查詢
  • 從1到50個客戶端同時連接到應用程序
  • 數據集牛逼增長在10M行/天的速度
  • 典型的查詢是SELECT與聚合函數COUNT,AVG有1或2加入

紅移是不正確的這種使用情況?你會考慮哪些其他技術來滿足這些要求?

+0

你確定允許直接查詢數據是正確的嗎?爲了使查詢運行更快,是否無法創建一些專門的事實或彙總表? – bstempi

回答

1

此問題也發佈在Redshift論壇上。 https://forums.aws.amazon.com/thread.jspa?messageID=498430&#498430

我對其他人通過Google發現此問題的方式進行了交叉發佈。 :)

在過去,我們已經使用了OLAP產品,例如Essbase或Analysis Services。如果你想研究OLAP,有一個非常好的開源實現叫做Mondrian,可以運行在各種數據庫(包括Redshift AFAIK)上。還可以查看Saiku是否有基於OSS瀏覽器的OLAP查詢工具。

我認爲你應該用超過15個併發查詢來測試Redshift的行爲。我懷疑它不會引起用戶注意,因爲查詢只會排隊等待一秒或2.

如果您證明Redshift不起作用,您可以測試Vertica的免費3節點版本。它比Redshift更成熟一些(即它可以處理更多的併發用戶),並且在數據加載方面更加靈活。

在我看來,Hadoop/Impala對於您的大小的數據集過於複雜。它也不適用於大量的併發查詢或短期查詢。

Shark/Spark適用於數據快速到達並且您可以預先計算的一組有限的度量標準。這再次似乎不符合您的要求。

祝你好運。

0

Redshift對連接和group by/order by中使用的密鑰非常敏感。沒有動態索引,所以通常你定義你的結構來適應任務。

  1. 您需要確保的是您的連接匹配結構100%。看看解釋計劃 - 你不應該有任何重新分配或廣播,也沒有領導節點活動(如排序)。這聽起來像是考慮到您將要查詢的數量的最關鍵的要求。

  2. 要求能夠過濾/聚集任意100列也是一個問題。如果結構(dist鍵,排序鍵)大多數時候與列不匹配,您將無法利用Redshift優化。但是,這些都是可擴展性問題 - 您可以增加節點的數量以匹配您的性能,您可能會對最優解決方案的成本感到驚訝。

這可能不是一個嚴重的問題,如果預測的列數很小,否則紅移必須保留在內存中大量數據(最終溢出),而排序或聚集(即使是在分散的方式) ,這可能再次影響業績。

  • 除了縮放,你總是可以實現分片或鏡像,克服一些隊列/連接限制,或聯繫AWS支持有一些限制解除

  • 您應該考慮預聚合。只要Redshift不需要進行重新排序等轉換,Redshift就可以在數秒內掃描數十億行。它可以存儲PB級數據 - 因此,如果您超過

  • 因此,在總結存儲數據還是可以的,我不認爲你的使用情況是不適合的,僅僅基於你所提供的定義。它可能需要工作,細節取決於確切的使用模式。