Google-Bigquery

哪個數據庫適合使用匯總服務提供大型時間序列指標?

  • June 8, 2018

我有一個很大的 mysql 表,其中包含大量主題的每日指標。這是假設的模式:

day DATE
subject_id INT
metric1
metric2
metric3

我想要的是為任意日期範圍找到前 X 個主題(按特定指標)。像這樣的東西:

SELECT subject_id, SUM(metric1) 
FROM t1 
WHERE day BETWEEN '2018-05-01' AND '2018-05-15'
GROUP BY subject_id
ORDER BY SUM(metric1) DESC
LIMIT 10

鑑於該表包含 1000 萬個主題,以及過去 365 天的每日指標,它大約包含 3.6B 行。無論我如何對其進行索引/分區,仍然會有一些場景會使查詢執行很長時間(例如,使用者選擇過去 365 天的時間段)。目標是在幾秒鐘內完成查詢,以便它們可用於實時為儀表板供電。

我試圖使這項工作與 Amazon Aurora (MySql) 一起工作,但沒有設法對其進行優化,使其執行速度幾乎與所需的速度一樣快。

似乎最好的選擇是 BigQuery 和 Athena。不過,我想知道是否有專門針對這個特定案例量身定制的替代方案?

值是否更新,如果更新,多久更新一次?

這是個好問題。我們有許多數據集,其中絕大多數數據是僅附加的。但是,在前 60 天內,很少有較大的數據集會更新 2-3 次。實際修改的數據只有 5%,而 95% 的數據與插入當天保持一致。

Amazon Athena 將是此應用程序的不錯選擇。但是,查詢可能不會在幾秒鐘內完成。因此,解決方案可能是使用 Athena 生成聚合,然後將結果載入到關係數據庫中以支持您的儀表板,AWS Glue 可以幫助處理此數據管道。

要在 Athena 中生成聚合:

您將創建一個 S3 儲存桶:s3://somebucket/

然後,您將創建格式化為您的分區的標籤:

s3://somebucket/date_partition=YYYY-MM-DD/

> > 目標是在幾秒鐘內完成查詢,以便它們可用於實時為儀表板供電。 > > >

有了這個要求,我可能會在 Athena 中預先計算與數據科學家和業務使用者相關的範圍(過去一年、最後一個月、最後一年等)的聚合,然後將它們寫入關係數據庫。在 AWS 上,Glue對這種數據管道很有用)。如果歷史數據不經常更新(或根本不更新),則此過程可以作為每日批處理過程執行(正如@Michael Kutz 建議的那樣)。

看:

AWS 文件 » Amazon Athena » 使用者指南 » 使用源數據 » 分區數據

11 億次乘坐亞馬遜雅典娜的計程車

引用自:https://dba.stackexchange.com/questions/209003