データ分析

データ管理技術の違いを理解する ~データベース/データウェアハウス/データレイク/データマート/レイクハウス~

データ管理技術の違いを理解する ~データベース/データウェアハウス/データレイク/データマート/レイクハウス~

データの管理技術である、データベース/データウェアハウス/データレイク/データマート/レイクハウスといった技術について整理します。

データ管理技術の違いを理解する

近年、AI/機械学習といった技術領域の急激な発展によりデータ管理技術も発展し、重要になってきています。

データ活用の業務に関わっていると、データベース、データウェアハウス、データレイク、データマート、レイクハウスなど、似たような用語がいろいろ出てきます。これらの技術はそれぞれの特徴をしっかり理解して扱う必要があります。

企業で仕事をしていると、各企業のレベルにもよると思うのですが何でもかんでもデータベースでと考える人も多く、人により各用語に関する解釈が微妙に違ったりすることがあるように思います。誤った技術を採用してしまうと、後々で応答性など色々な面で困るケースに遭遇してしまうことになります。

本記事では、これらのデータベース管理技術(データベース/データウェアハウス/データレイク/データマート/レイクハウス)の特徴や違いなどについて、これまでの経験をもとに整理します。また、レイクハウスを提供するサービスとして近年の注目のDatabricksやMicrosoft Fabricについても簡単に紹介したいと思います。

データベース(Database)

データベース(Database)は、構造化されたデータを効率的に保存、取得、管理することができるシステムです。データベースには、リレーショナルデータベース(RDB)とノンリレーショナルデータベース(NoSQL等)の2種類がありますが、主に広く使われているRDBを中心に説明します。

データベースの大きな特徴として、トランザクション処理によりデータの整合性を保持できるという点があります。銀行取引、販売、予約システム等のOLTP(Online Tranzaction Processing)という日々のトランザクションを処理する領域には非常に適しています。業務システムを構築する際にはデータベースを選択するのはよい選択でしょう。

一方で、リレーショナルデータベースは大規模なデータに対するスケーラビリティには制限があります。例えば、Oracle、SQL Serverといった代表的なリレーショナルデータベースの管理システム(RDBMS: Relational DataBase Management System)は、一つのサーバーで動作させることが多く、大規模なデータに対してサーバーを分散させて高速化することは不得意です。ただし、一般的にはということで、近年では分散データベースシステムという技術領域でスケーラビリティを解決しているものもある点は補足しておきます。

また、構造化データを管理対象とするため、文章や画像などの非構造化データの扱いには不向きです。そのため、近年のAI/機械学習といったデータ分析で求められるようなデータの蓄積にはあまり向いてません。

データウェアハウス(Datawarehouse)

データウェアハウス(Datawarehouse)は、主に構造化された大規模なデータを分析用途に最適化して保存するために使用するシステムです。

データウェアハウスは、主にテーブル形式の構造化されたデータを事前に加工・整理して蓄積します。整理された情報のため、効率的な分析やレポート作成に適しており、複雑なクエリに対しても高速なレスポンスを提供します。データウェアハウスとして開発/提供されているシステムは、このような状況を高速に対応できるように各種工夫をして作られています。

後述するデータレイクは、あらゆるデータ形式を扱いますが、データウェアハウスは主に構造化データに焦点を当てているということがポイントです。データレイクは主にそのままの生データを蓄積し、使用時に加工しますが、データウェアハウスでは、データを格納する前に加工・整理して蓄積するという違いがあります。

クラウドベースのデータウェアハウスのためのサービスとしては、AmazonのRedshift、MicrosoftのSynapse Analytics(専用SQLプール)、GoogleのBigQuery、Snowflake等があります。また、オンプレミスのデータウェアハウスシステムとしては、Oracle Exadata、Teradata等があります。

アナリストなどが、大規模なデータから特定データをクエリで絞って頻繁にアクセスするようなケースでは非常に適した選択肢です。

データレイク(Datalake)

データレイク(Data Lake)は、構造化、非構造化データをそのままの形式で大量に保存することができるシステムです。データウェアハウスは、主に大規模な構造化データを対象としているのに対して、データレイクはあらゆる形式のデータを扱います。AWSやAzureといったクラウドのデータレイクサービスでは、ファイルベースでのストレージ環境が提供されています。

データレイクの特徴として、多様なデータ形式のものを保存でき、非常に大量のデータを格納することが可能で、ファイルベースで管理します。データベースよりもスケーラビリティに優れており、時系列データ等の大量データをまとめて取得するケース等では、とても高速に処理できます。また、ファイルベース管理のため、データ利用方法や処理方法を柔軟に技術者が選択できます。

近年のAI、機械学習、データ分析といったOLAP(Online Analytical Processing)の領域では、大量のデータを処理して意味のある解析、データ活用が必要であり、データレイクの技術が使用されることが多いです。

一方で、多様なデータ形式を扱えることから管理が難しく、例えばファイルを同時にアクセスするとファイルを破壊する可能性があるなど、トランザクション処理には弱いという点があるため、データの品質や整合性維持が比較的難しいという特徴があります。ただし、データカタログやメタデータ管理ツールを使用してデータレイク内を効率的に管理する枠組みも提供されています。

データレイクとして有名なクラウドベースとしてはAmazonのS3、MicrosoftのAzure DataLake Storage (ADLS)、GoogleのGoogle Storageなどが代表的なものです。

データマート(Datamart)

データマート(Datamart)は、特定のビジネス部門が必要とするデータとして特化して整理したデータのことを言います。

データマートは、概念的なものであるため実現する技術が決まっているわけではありませんので注意しましょう。データベースやデータウェアハウス製品で実現されることもありますし、データレイクとしてファイルベースで実現されることもあります。

データを活用する際には、データをtableau、QlikSense、PowerBIといったBI(Business Intelligence)ツールにつなげて可視化して分析することが多いです。例えば製造企業で、財務部門と製造部門が分析に求めるデータは異なります。経営層と現場レベルで求めるデータでも必要なデータは異なるでしょう。

このような場合に、分析に必要なデータに特化して整理されたデータを用意しておくと分析が非常にしやすくなります。このように特定の領域に特化して整理したデータをデータマートといいます。データウェアハウスやデータレイクのサブセットというようなイメージですね。

アナリストなどが頻繁にクエリを発行するようなケースではデータベースやデータウェアハウスの方が適していますし、バッチ処理やデータを一括でロードするようなタイプのBIツールでは、データレイクでファイルベースで実現した方が高速に処理できると考えられます。最大限のパフォーマンスを出すためには、要件に応じて適切な技術を採用する必要があります。

レイクハウス(Lakehouse)

レイクハウス(Lakehouse)は、データレイクとデータウェアハウスの機能を組み合わせた新しいデータ管理アーキテクチャとして近年注目されています。

レイクハウスでは、あらゆるデータ形式を扱うデータレイクのような柔軟性を維持しながら、伝統的なデータウェアハウスのような堅牢なデータ管理機能を提供することを目的としています。つまり、レイクハウスは、構造化されたデータ(通常データウェアハウスで扱われる)と非構造化データ(通常データレイクで扱われる)の両方を単一のシステムで統合的に管理する能力を持ちます。これにより、企業は異なる種類のデータを同じプラットフォーム上で分析できるようになります。

近年のレイクハウス実装では、ACID特性(A(Atomicity):原子性、C(Consistency):一貫性、I(Isolation):独立性、D(Durability)永続性)をサポートするように設計されておりトランザクション管理ができます。なお、すべてのレイクハウスで同等レベルのACID特性がサポートされているとは限らないことには注意が必要です。

レイクハウスは、データ管理と分析のためのモダンなアーキテクチャの概念です。この概念を実現するサービスも出てきています。次に、レイクハウスとして最も代表的ともいえるDatabricksや、記事執筆時点(2023/11)で一般公開されたMicrosoft Fabricについて少し紹介したいと思います。

Databricks

Databricksは、2013年に設立されたビックデータ分析や機械学習に特化したソフトウェアの企業です。提供されているサービスもDatabricksであるため、文脈により会社名を指す場合とサービス名を指す場合とがあります。Databricks社は、Apache Sparkの開発者を中心として立ち上げられました。Databricksは、レイクハウスという概念を提唱して広げていった先駆者と言える企業です。

Databricksは、分散処理基盤であるApach Spark等のオープンソースのソフトウェアをベースに商業的な展開をしてきました。データソースとしてはMicrosoft のAzure Datalake Storage、AmazonのS3、GoogleのCloud Storage等、様々なデータソースを対象に管理できるのも特徴です。レイクハウスを実現する一つの有用な手法であるDelta Lakeという機能もDatabricks社によって開発されています。

Delta Lakeは、データレイク上でのACID特性を提供し、スケーラブルで安全なデータ処理、管理を提供するための機能レイヤーです。Apache Spark上で動作し、Parquet形式でデータを格納します。Delta Lakeは、オープンソースの機能であるため自分でも扱うことができますが、Detabricksを使うことによって面倒な管理等を簡単にしてくれます。Databricksは、その他にも機械学習のライフサイクルを管理するMLflow等、機械学習との連携といったいろいろな機能を備えています。

レイクハウスはDatabricksが提唱した考え方ですが、最近のDatabricksでは、レイクハウスの概念をさらに広げ「データインテリジェンスプラットフォーム」としてサービスの拡大をしていっているようです。

これから企業でレイクハウス構築をしようと思ったときにDatabricksを選択するという考え方は、技術の選択や業界をリードする企業かどうか等のいろいろな観点で、非常に良い選択であると私は考えます。

Microsoft Fabric

記事執筆時点(2023年11月)に、Microsoftで一般提供(GA)が始まったMicrosoft Fabricというデータ分析ソリューションがあります。Microsoft Fabricは、レイクハウスの概念をMicrosoftが実現したサービスであると言えます。

このMicrosoft Fabricは、あらゆるデータソースや分析サービスを 1 つのプラットフォーム上に集めて接続することで、新しい方法で誰もがデータ簡単にアクセスできるようにするサービスです。Microsoft Fabricは、OneLakeという概念で多くのデータを一元管理できるようにしますが、レイクハウスの規定ストレージ形式はDelta Lakeとなっています。

レイクハウスを実現するという意味では、Databricksとどう違うのかと疑問に思うと思います。Microsoft Fabricは、特にMicrosoftのBIサービスであるPower BIとデータをうまく連携して活用していく点を重視しているため、既にOffice365といったものを広く活用している企業では採用の検討価値があるかと思います。

なお、Microsoftは、Azure DatabricksということでDatabricksを提供しており、Databricks社と連携をしています。Azure環境に慣れている企業であれば、Azure Databricksを使うというのはよい選択肢です。

まだMicrosoft Fabricは出てきたばかりのサービスであるため、サービスの成熟度などを考慮するとDatabricksが有利と感じています。PowerBIとの連携等を重視しないのであればDatabricksを選択するのが現状はよいかもしれませんが、今後のMicorosoft Fabricの成長によりどうなるかは正直まだ予想できません。

このように、レイクハウスやDelta Lake等の関連技術はこれから重要になってくる概念・技術であるため、理解を深めていく必要があると考えています。私も引き続き情報収集や勉強をしていきたいと思います。

まとめ

データ管理技術である、データベース/データウェアハウス/データレイク/データマート/レイクハウスといった技術について紹介しました。

近年では、AI/機械学習といった発展もあり、データ管理技術は非常に重要になってきています。必ずこの技術を採用すればよいということはなく、何も考えずに新しい技術であるからと採用してしまうと失敗の原因になることがあります。

対象とするデータ、業務要件などを充分に検討し、データ管理技術のそれぞれの特徴を理解してうまく選択して、問題を解決していきたいですね。