4.1 データを保存・管理するための3層アーキテクチャ

データ分析基盤では収集したデータや加工したデータを保存するときデータの状態ごと3つの層に分けて管理する方法が広く使われています。この3つの層はデータレイク、データウェアハウス、データマートと呼ばれています。

データがデータレイクからデータウェアハウス、そしてデータマートへと1方向に流れていくという構造になっています。データレイクは加工されていない生データが保存され、データウェアハウスはひととおりの加工によって標準化されたデータが保存されています。最後のデータマートでは何らかの用途や目的に応じて最適化されたデータを保存します。

なぜ3層に分けるのでしょうか。主なメリットはデータの品質の向上と管理のしやすさにあります。1つのレイヤーにまとめた場合だと生のデータと分析用データが混在し管理が複雑でしたが3層にわけることで各層の責任範囲が明確になります。各層ごとに改善をおこないやすくなるのでデータの品質が向上し使いやすい分析基盤を作ることができるのです。

また、セキュリティやガバナンスといった観点でも有用です。個人情報などセンシティブなデータはデータレイクにとどめておき、なるべくデータウェアハウス以降は安全なデータのみとすることで安全に分析できる環境を構築することができます。

4.2 データレイク:生データの保存

データレイクは収集したデータをそのまま保存する領域です。データソースから収集したデータを保存する最初のレイヤーとなります。

データレイクの最重要ポイントは、なるべく元のデータのまま加工せずに保存するということです。元データをそのまま保存する理由は後から「元データを確認したい」「別の分析方法を試したい」という要求が発生した時に必ず元に戻れる状態を維持することにあります。また変換処理でミスが発生しても元データから再処理できる可逆性も重要です。

データレイクはCSV、JSON、XML、ログファイル、画像など様々な形式のデータを統一的に保存します。業務システムから出力されるCSVファイル、Webサーバーのアクセスログ、外部APIから取得したJSON形式の顧客データなどが保存されます。

保存時には圧縮によるストレージ容量の最適化も検討されます。圧縮効率だけでなく解凍にかかる時間や付随できるメタデータの有用性なども重要な観点です。たとえば、データベースのような構造化データを扱うときはParquetのようにあとの工程で扱いやすい形式がよく使われています。

また、保存するときは乱雑に保存するのではなく日付やデータソース別にパーティション分割することが一般的です。これは多くの分析基盤や関連サービスにおいてパーティションを利用することで効率的な検索と管理ができるようになっているためです。データレイクは大量データの長期保存となるためコスト効率と検索性の両立が不可欠です。

4.3 データウェアハウス:データクレンジングと前処理・セキュリティ対応

データウェアハウスではデータレイクの生データに対してクレンジングや前処理を実行し品質の高い標準化されたデータを保存します。

なぜデータウェアハウスが必要なのでしょうか?データレイクは生のデータを網羅的に保存する場所であり、分析するにはひと手間かかってしまうという問題があります。データのフォーマットの違いや欠損、個人情報の対応などが必要です。それらの処理を施したうえで保存されているのがデータウェアハウスです。データウェアハウスは分析するために必要な処理をおこなったデータを保存する場所であり、データウェアハウスのデータならばすぐに分析に使うことができます。

データの前処理としてよくあるのはまずデータのフォーマットの標準化です。たとえば日付を「2024/1/15」と「2024-01-15」のように形に統一して扱いやすくします。JSONやXMLなどさまざまな形式のデータを扱いやすい形式に変換したりもします。

個人情報の対応も前処理として重要です。個人情報などセンシティブな情報はデータを削除したりマスキングすることで安全に扱えるようにします。データウェアハウス以降のデータは個人情報への対応が完了しているものだけ保存する、というルールを設定すればデータウェアハウス以降は安全な領域となるため安心して多くの人が利用できるようになります。このような運用はガバナンスの観点でも好まれます。

4.4 データマート:分析用データとビジネス特化環境

データマートでは特定のビジネス要件に特化したデータを保存・提供します。

データウェアハウスは前処理されたデータを幅広く保存している場所でしたがデータマートは部門別や目的別に特化した分析用データセットです。各データマートは分析者の分析パターンに合わせて設計されます。たとえば、営業部門が「先月の売上トップ10商品を地域別に知りたい」という分析を頻繁に実行する場合、時系列で地域別・商品別の売上を事前計算しておいてデータマートに保存します。これによりレポートを開いた瞬間に結果が表示されますし、必要に応じてちょっとした分析をBIツールですぐにおこなうこともできます。

データマートは素早く分析できることだけでなく一貫した分析結果が得られることも大きなメリットです。データマートを用意しなければ各々が分析処理を実装する必要がありますが、そうすると細かな仕様や実装の差によって集計値がズレがちです。データマートとして事前に仕様と実装の認識を揃えておくことでこのような値のズレによる意思決定の間違いや遅延を回避することができます。

一方でデータマートを乱立させてしまうとこれらの目的を達成することができなくなります。それぞれの目的やチームごとにどんなデータマートが必要なのか整理しながら適切にデータマートを用意する必要があります。用途を満たしながら変化に対応できる柔軟性をもたせたデータマートの設計が重要です。

4.5 データ変換処理とワークフロー管理

3層アーキテクチャを実現するためには各層の特性に応じたデータ処理システムの構築が重要です。データレイクからデータウェアハウス、そしてデータマートへデータが段階的に変換される過程で品質向上と利用価値の最大化させていきます。

データ処理システムを構築するうえで最も重要なポイントは自動化と信頼性です。手作業による処理は人的ミスやスケール性の限界があるため全ての変換処理を自動化し障害時でも容易に復旧できる仕組みを構築します。また処理の透明性も重要でありデータがどの段階でどのように変換されたか追跡を可能にします。

データの処理は一方向になるよう意識しましょう。データの処理はデータレイクからデータウェアハウス、そしてデータマートへという流れに統一し、逆方向への処理は避けます。これにより「データマートの特定用途の集計済みデータがデータウェアハウスに入る」といった管理コストが高くなるような状況を回避することができます。あわせて、処理の順序が明確になりシステムの複雑性を軽減できます。

大量のデータを処理するための処理時間の最適化と並列化、そして依存関係管理のバランスも重要です。処理時間短縮のため可能な限り並列実行を行いますが依存関係のある処理ならば順序を守る必要があります。そのため、データ分析基盤を開発するときにはワークフローを管理するためにワークフローエンジンなど専用のサービスを導入して複雑な依存関係を管理することが一般的です。同時に、各データソースの更新パターンに合わせた最適なスケジューリングも求められます。

ここにあげた以外にもデータの変換処理をうまくおこなうためのプラクティスはたくさんあります。データ分析基盤は他のITサービスや社内システムとも違う独特のシステムです。実際にデータ分析基盤を開発・実装する段階なのであれば、より詳しい知見を事前に調べてから取り掛かることをオススメします。