AWS AthenaはS3に蓄積したテキストファイルに対してSQLを実行するサービスのことです。はじめて聞いたときから「そんなことが可能なの?」と思うわけ…というのは、通常RDBへデータを蓄積するには、そのRDBの仕様に沿ったデータフォーマットに変換されて登録されるわけでそのプロセスがすっ飛ばされているわけですから、ふつうに「ありえない」はずのことを簡単にやってのけているように見える。。ただAthenaはトランザクション制御には向いてはいない(というよりほぼ使わない)分析や抽出が主な用途ですが、でもINSERTなんかもできなくはないようです。ある意味これは小規模用途の手軽なRDBに使えるのではないか?ということも含めて、検証してみたい気がします。
というのも、現在わたしはJRA-VAN Labから全データをTSV形式で出力するプログラムを書いています。データ取得からバイト単位で抜き出す処理はとりあえずVB.netで行うとして、その先をどうするか?大量のテキストファイルを扱うのに苦労しそうだと思っていた。
すべてRDBに突っ込むにしても中間データとしてのテキストファイルを大量にローカルPC上に配置しておくのは、手元のローカルPCをスマートというかコンパクトにしておきたい私としては気持ちが悪いので。
AWS AthenaはS3にある様々なデータ形式(CSV,TSV,JSON,Apacheのログ)のログに対して抽出や集計のSQLクエリを実行するサービスとのこと。
AWS Glue Data Catalog というApache Hive Metastore (OSS)互換のメタデータ管理リポジトリに対して、Athena DDL/AWS Glue Catalog API/AWS Glue Crawlerといった手段を使ってテーブル定義を作成してあげる必要があるらしい。
データソースは128MB以上のかたまりにまとめ上げる必要がある。一方で、並列してファイルスキャンを行えるように分割可能にしておく必要もある(データのファイル量が処理結果に影響を与えるので注意が必要といったところか?)
気になった用語
OLAPとOLTP
以上
コメント