AWS S3を用いたデータレイクを構築しようとしています。
S3に蓄積したデータは、AWS Athenaを使って解析します。
【困りごと】
社内業務システムのデータをS3に配置して分析するのですが、
S3に蓄積されるデータに更新が発生する場合の対応方法を決めかねています。
対象となるデータはログデータのように1度出力されて変更が掛からないものではなく、
時間の経過とともに更新される可能性があります。
実績データが後から書き換わる可能性があること自体が問題ではあるのですが、
管理対象の特性上、どうしても後から実績データの書き換え(修正)が発生します。
毎回全データを置換できれば良いのですが、十年以上の大量データを保有することになる為、
差分(大半はADD、一部はUPDATE)のデータを一定のサイクルで追加していくことになります。
【実現したいこと】
S3蓄積データに対してUPSERTを行いたいのですが、S3の特性上、実現が難しいです。
更新が掛かるのならRDSやRedshiftにデータを入れれば良いのだろうとは思いますが、
コスト面の制約がある為、できればs3のみで実現したいと考えています。
以下のような対応を考えてみたのですが、もっとシンプルに実現できる方法がありましたらご教授いただけませんでしょうか。
【解決策として考えたこと】
①RDSにもデータを格納しておき、RDSへUPSERTした結果でS3を再構成する。
→RDSを常時稼働させないとしてもRDSの稼働コストが高くつきそう。
②差分データを一旦tempバケットに入れて、AthenaのSELECT INSERTで全件を再構成する。
→毎日全件再構成をかけるコストが気になる。
③S3にそのまま更新データを追加する。
→同一KEYで更新日付が新しい方が正という見方をすれば良いが、SQLが複雑になり使いづらい。
回答1件
あなたの回答
tips
プレビュー