S3ログからリクエストURLを照会するためのユースケースがあります。 Amazonは最近S3ファイルの内容を問い合わせるためにAthenaを導入しました。コストとパフォーマンスに関して最良の選択肢は何ですか?機能的にあなたが達成できれば、あなたの要件:クエリS3はAthenaまたはDynamoDBを使用してコンテンツを記録します
- 使用アテナは、クエリ
S3ログからリクエストURLを照会するためのユースケースがあります。 Amazonは最近S3ファイルの内容を問い合わせるためにAthenaを導入しました。コストとパフォーマンスに関して最良の選択肢は何ですか?機能的にあなたが達成できれば、あなたの要件:クエリS3はAthenaまたはDynamoDBを使用してコンテンツを記録します
Amazon DynamoDBはとなります。ウェブログでクエリを実行するには、が不適切です。
DynamoDBは超高速ですが、主キー( "クエリ")に基づいてデータを取得している場合のみです。テーブル内のALLのデータに対してクエリを実行している場合(インデックスされていないKey内の特定のIPアドレスを見つけるなど)、DynamoDBはテーブル内のすべての行をスキャンする必要があります。 "スキャン")。たとえば、テーブルが100 Reads per Secondに設定されていて、10000行をスキャンしている場合、100秒(100 x 100 = 10000)かかります。
ヒント: NoSQLデータベースでフルテーブルスキャンを実行しないでください。
Amazon Athenaはログファイルのスキャンに最適です。データを事前にロードする必要はありません。Amazon S3に既に格納されているログに対してクエリを実行するだけです。標準のSQLを使用して、探しているデータを探します。さらに、ディスクから読み込まれたデータに対してのみ料金を支払うことになります。ファイル形式はちょっと奇妙なので、正しいCREATE TABLE
ステートメントが必要です。
参照:Using AWS Athena to query S3 Server Access Logs
もう一つの選択肢は、数十億行にまたがるデータの缶GB単位、のTBものPB アマゾン赤方偏移を、使用することです。ログデータに対して頻繁なクエリを実行する場合は、Redshiftが優れています。ただし、標準のSQLデータベースであるため、データをRedshiftにあらかじめロードする必要があります。残念ながら、Amazon S3のログファイルはCSV形式ではないため、ファイルを適切な形式にETLする必要があります。これは、臨時の臨機応変なリクエストにはあまり意味がありません。
多くの人が好きです。Amazon Elasticsearch Serviceログファイルをスキャンします。この場合も、ファイル形式には特別な処理が必要であり、データをロードするパイプラインには何らかの作業が必要ですが、その結果、S3ログファイルのほぼリアルタイムのインタラクティブな分析が行われます。
アテナDynamoDBの対のためのDynamoDBのテーブルのリクエストURL情報と、各ファイルの
したがって、データをほとんどクエリする必要がない場合、AthenaはDynamoDBのほうがよい解決策になります。また、パフォーマンスが重要な場合は、DynamoDBがその答えです。また、既にS3にTBのデータがある場合は、アテーナはなぜそれがDynamoDBにロードされ、爆弾を払うのでしょうか?(ミリ秒または秒単位でクエリ結果が必要な場合を除いて)。
DynamoDBの方が高速ですが、コストは高くなりますアテナよりも。ユースケースに応じて、ハイブリッドアプローチを使用してソリューションを実装すると、特定のシナリオで良好な結果が得られる場合があります。
DynamoDBを使用して、最新のデータを格納し、重いデータを読み取ることができます。安価な古いデータをS3に保存し、Athenaを使ってそれを照会することができます。
しかし、実装は賢明には少し複雑です。