2

查詢S3日誌內容我有一個用例從S3日誌查詢請求的URL。亞馬遜最近推出了Athena來查詢S3文件內容。什麼是成本和性能方面的最佳選擇?使用雅典娜或DynamoDB

  1. 使用雅典娜查詢S3文件URL請求與DynamoDB表請求的URL信息查詢

回答

4

亞馬遜DynamoDB將是一個糟糕的選擇超過網絡日誌運行的查詢。

DynamoDB速度超快,但前提是您要根據主鍵檢索數據(「查詢」)。如果您正在對錶中的ALL數據運行查詢(例如,要在沒有編制索引的密鑰中查找特定IP地址),DynamoDB將需要掃描表中的所有行,這需要大量時間( 「掃描」)。例如,如果您的表配置爲每秒100次讀取次數,並且您正在掃描10000行,則需要100秒(100 x 100 = 10000)。

提示:不要在NoSQL數據庫中進行全表掃描。

亞馬遜雅典娜是理想的掃描日誌文件!無需預加載數據 - 只需針對已存儲在Amazon S3中的日誌運行查詢即可。使用標準的SQL來查找您正在尋找的數據。另外,您只需支付從磁盤讀取的數據。文件格式有點奇怪,所以您需要正確的CREATE TABLE聲明。

參見:Using AWS Athena to query S3 Server Access Logs

另一種選擇是使用亞馬遜紅移,其可以綠帶,TBS和數據的跨越數十億行的偶數PBS中。如果您要對日誌數據運行頻繁的查詢,Redshift非常棒。但是,作爲標準的SQL數據庫,您需要將數據預加載到Redshift中。遺憾的是,Amazon S3日誌文件不是CSV格式,因此您需要將文件ETL轉換爲合適的格式。偶爾的臨時請求並不值得。

許多人還喜歡使用亞馬遜Elasticsearch服務掃描日誌文件。同樣,文件格式需要一些特殊的處理,加載數據的管道需要一些工作,但結果是近乎實時地交互分析S3日誌文件。

參見:Using the ELK stack to analyze your S3 logs

1

雅典娜與DynamoDB每個文件的

  • 存儲元數據:如果您在功能上可以實現您的要求既 ;那麼:

    1. DynamoDB將比雅典娜快許多倍。
    2. DynamoDB會比雅典娜更昂貴。在DynamoDB中,您需要支付預置IOPS的成本;而在雅典娜時,只有在您查詢時才支付(否則您僅支付s3存儲成本)。

    因此,如果您需要很少查詢您的數據雅典娜會是一個更好的解決方案,否則DynamoDB。另外,如果性能很重要DynamoDB就是答案。另外,如果您在S3中已經有TB數據;然後雅典娜是一個解決方案,爲什麼你將它加載到DynamoDB這將花費一枚炸彈(直到並且除非你想以毫秒或秒爲單位的查詢結果)。

  • 0

    正如Deepak提到的,DynamoDB速度更快,但成本更高比雅典娜。根據您的使用情況,使用混合方法實施解決方案可能會在某些情況下爲您提供良好的結果。

    您可以使用DynamoDB存儲最近,讀大量的數據。舊的,讀取廉價的數據可以存儲在S3中,並使用Athena來查詢它。

    然而,實現明智的,這將是比較複雜的。