データストレージの 6 つの技術オプション

ビジネス上の課題は非常に広範かつ深く複雑で、単一のツールですべてを解決することは困難です。特にビッグデータと分析の領域ではその傾向が強まります。本記事では、データストレージの 6 つの代替技術について解説します。
1. 構造化データストレージ
構造化データストレージは数十年にわたり使用されており、最も身近なデータストレージ技術です。ほとんどのトランザクションデータベースは行ベースデータベースです。これは、ソフトウェアアプリケーションからの頻繁なデータ書き込みを処理するためです。
企業はトランザクションデータベースをレポート作成にも同時に使用することが多く、その場合はデータの読み取りが頻繁に行われますが、書き込みはそれより大幅に少なくなります。データ読み取りの需要増加に伴い、構造化データストレージのクエリ領域にも新たな革新が導入されています。たとえば、列ベースファイル形式の革新は、データ読み取りパフォーマンスの向上と分析ニーズへの対応に貢献しています。
行ベースフォーマットは、ファイルにデータを 1 行ずつ保存します。行ベースの書き込みはディスクへのデータ書き込みにおいて最速の方法ですが、不要なデータを多くスキップする必要があるため、読み取りでは必ずしも最速ではありません。
列ベースフォーマットは、ファイル内で同じ列の値をまとめて保存します。これにより、同じデータ型がグループ化されるため、圧縮効率が向上します。また、不要な列をスキップできるため、読み取りパフォーマンスも向上することが多くなります。
構造化データストレージの一般的な選択肢を見てみましょう。たとえば、注文テーブルから特定の月の売上合計をクエリする必要があるとします。テーブルには 50 の列があります。行ベースアーキテクチャでは、クエリ時にテーブル全体の 50 列がスキャンされますが、列ベースアーキテクチャでは、注文売上列のみがスキャンされるため、データクエリのパフォーマンスが向上します。次に、リレーショナルデータベースに注目し、トランザクションデータとデータ分析を処理するデータウェアハウスの必要性について詳しく見ていきましょう。
企業はトランザクションデータベースをレポート作成にも同時に使用することが多く、その場合はデータの読み取りが頻繁に行われますが、書き込みはそれより大幅に少なくなります。データ読み取りの需要増加に伴い、構造化データストレージのクエリ領域にも新たな革新が導入されています。たとえば、列ベースファイル形式の革新は、データ読み取りパフォーマンスの向上と分析ニーズへの対応に貢献しています。
行ベースフォーマットは、ファイルにデータを 1 行ずつ保存します。行ベースの書き込みはディスクへのデータ書き込みにおいて最速の方法ですが、不要なデータを多くスキップする必要があるため、読み取りでは必ずしも最速ではありません。
列ベースフォーマットは、ファイル内で同じ列の値をまとめて保存します。これにより、同じデータ型がグループ化されるため、圧縮効率が向上します。また、不要な列をスキップできるため、読み取りパフォーマンスも向上することが多くなります。
構造化データストレージの一般的な選択肢を見てみましょう。たとえば、注文テーブルから特定の月の売上合計をクエリする必要があるとします。テーブルには 50 の列があります。行ベースアーキテクチャでは、クエリ時にテーブル全体の 50 列がスキャンされますが、列ベースアーキテクチャでは、注文売上列のみがスキャンされるため、データクエリのパフォーマンスが向上します。次に、リレーショナルデータベースに注目し、トランザクションデータとデータ分析を処理するデータウェアハウスの必要性について詳しく見ていきましょう。
(1) リレーショナルデータベース
RDBMS はオンライントランザクション処理 (OLTP) アプリケーションにより適しています。代表的なリレーショナルデータベースには、MSSQL、MariaDB、PostgreSQL などがあります。これらの従来のデータベースの中には、数十年にわたり使用されてきたものもあります。
E コマース、銀行、ホテル予約など、多くのアプリケーションがリレーショナルデータベースによって支えられています。リレーショナルデータベースは、テーブル間の複雑な結合クエリを必要とするトランザクションデータの処理に非常に優れています。トランザクションデータの要件から見ると、リレーショナルデータベースは原子性、一貫性、独立性、永続性の原則に従う必要があります。以下の通りです。
原子性:トランザクションは最初から最後まで完全に実行され、エラーが発生した場合はトランザクション全体がロールバックされます。
一貫性:トランザクションが完了すると、すべてのデータがデータベースにコミットされます。
独立性:複数のトランザクションが互いに干渉することなく、同時に分離して実行される必要があります。
耐久性:ネットワーク障害や停電などの中断が発生した場合、トランザクションは最後に確認された状態に回復できる必要があります。
通常、リレーショナルデータベースのデータは、レポート作成と集約のためにデータウェアハウスに出力されます。
RDBMS はオンライントランザクション処理 (OLTP) アプリケーションにより適しています。代表的なリレーショナルデータベースには、MSSQL、MariaDB、PostgreSQL などがあります。これらの従来のデータベースの中には、数十年にわたり使用されてきたものもあります。
E コマース、銀行、ホテル予約など、多くのアプリケーションがリレーショナルデータベースによって支えられています。リレーショナルデータベースは、テーブル間の複雑な結合クエリを必要とするトランザクションデータの処理に非常に優れています。トランザクションデータの要件から見ると、リレーショナルデータベースは原子性、一貫性、独立性、永続性の原則に従う必要があります。以下の通りです。
原子性:トランザクションは最初から最後まで完全に実行され、エラーが発生した場合はトランザクション全体がロールバックされます。
一貫性:トランザクションが完了すると、すべてのデータがデータベースにコミットされます。
独立性:複数のトランザクションが互いに干渉することなく、同時に分離して実行される必要があります。
耐久性:ネットワーク障害や停電などの中断が発生した場合、トランザクションは最後に確認された状態に回復できる必要があります。
通常、リレーショナルデータベースのデータは、レポート作成と集約のためにデータウェアハウスに出力されます。
(2) データウェアハウス
データウェアハウスは、オンライン分析処理 (OLAP) アプリケーションにより適しています。データウェアハウスは、大量の構造化データに対する高速な集約機能を提供します。データはバッチで読み込まれる必要があるため、ホットデータに関するリアルタイムのインサイトを得ることはできません。
最新のデータウェアハウスは、カラムナストレージを使用してクエリパフォーマンスを向上させています。カラムナストレージにより、これらのデータウェアハウスは非常に高速なクエリ速度を実現し、I/O 効率を向上させます。
データウェアハウスは、1 つ以上のデータベースから蓄積されたデータを保存できる中央リポジトリです。現在データと既存データを保存し、ビジネスデータの分析レポートを作成するために使用されます。
データウェアハウスは複数のシステムからのデータを集中的に保存しますが、データレイクとはみなされません。データウェアハウスは構造化された関係データのみを処理できますが、データレイクは構造化関係データに加えて、JSON、ログ、CSV データなどの非構造化データも処理できます。
データウェアハウスは、オンライン分析処理 (OLAP) アプリケーションにより適しています。データウェアハウスは、大量の構造化データに対する高速な集約機能を提供します。データはバッチで読み込まれる必要があるため、ホットデータに関するリアルタイムのインサイトを得ることはできません。
最新のデータウェアハウスは、カラムナストレージを使用してクエリパフォーマンスを向上させています。カラムナストレージにより、これらのデータウェアハウスは非常に高速なクエリ速度を実現し、I/O 効率を向上させます。
データウェアハウスは、1 つ以上のデータベースから蓄積されたデータを保存できる中央リポジトリです。現在データと既存データを保存し、ビジネスデータの分析レポートを作成するために使用されます。
データウェアハウスは複数のシステムからのデータを集中的に保存しますが、データレイクとはみなされません。データウェアハウスは構造化された関係データのみを処理できますが、データレイクは構造化関係データに加えて、JSON、ログ、CSV データなどの非構造化データも処理できます。
2. NoSQL データベース
Dynamo DB、Cassandra、Mongo DB などの NoSQL データベースは、リレーショナルデータベースで直面しがちなスケーリングとパフォーマンスの課題を解決できます。その名の通り、NoSQL は非リレーショナルデータベースを意味します。NoSQL データベースは、異なるテーブル間のデータを接続するための明確な構造メカニズム(結合、外部キー、パラダイムなし)を持たずにデータを保存します。
NoSQL は、列指向、キーバリュー、検索、ドキュメント、グラフなど、多様なデータモデルを採用しています。NoSQL データベースは、スケーラブルなパフォーマンス、高可用性、耐障害性を提供します。
NoSQL には通常、厳密なデータベーススキーマがなく、各レコードは任意の数の列(属性)を持つことができます。つまり、ある行は 4 列で、同じテーブルの別の行は 10 列を持つことができます。パーティションキーを使用して、関連するプロパティを含む値やドキュメントを取得します。NoSQL データベースは高度に分散されており、レプリケーションが可能です。NoSQL データベースは非常に高い耐久性と高可用性を備えており、パフォーマンスの問題なく利用できます。
NoSQL は、列指向、キーバリュー、検索、ドキュメント、グラフなど、多様なデータモデルを採用しています。NoSQL データベースは、スケーラブルなパフォーマンス、高可用性、耐障害性を提供します。
NoSQL には通常、厳密なデータベーススキーマがなく、各レコードは任意の数の列(属性)を持つことができます。つまり、ある行は 4 列で、同じテーブルの別の行は 10 列を持つことができます。パーティションキーを使用して、関連するプロパティを含む値やドキュメントを取得します。NoSQL データベースは高度に分散されており、レプリケーションが可能です。NoSQL データベースは非常に高い耐久性と高可用性を備えており、パフォーマンスの問題なく利用できます。
3. NoSQL データベースの種類
NoSQL データベースの主な種類は以下の通りです。
列指向データベース:列指向データストアは、データクエリ時に行全体ではなく列をスキャンするのに役立ちます。たとえば、items テーブルに 10 列と 100 万行があり、在庫内のアイテムの数量をクエリしたい場合、列指向データベースはテーブル全体をスキャンせず、アイテム数量列にのみクエリを適用します。
ドキュメントデータベース:最も人気のあるドキュメントデータベースは、MongoDB、Couchbase、MarkLogic、Dynamo DB、Cassandra です。ドキュメントデータベースは、JSON 形式や XML 形式の半構造化データの保存に使用できます。
グラフデータベース:グラフデータベースは頂点と頂点間のリンク(エッジと呼びます)を保存します。グラフはリレーショナルデータベースと非リレーショナルデータベースの両方上に構築できます。
インメモリキーバリューストア:データをメモリに保存し、データが頻繁に読み取られるシナリオで使用されます。アプリケーションのクエリはまずインメモリデータベースに送信され、キャッシュにデータがあればメインデータベースにアクセスしません。インメモリデータベースは、ユーザープロファイルなどの複雑なクエリや頻繁なデータリクエストが発生するセッション情報の保存に最適です。
NoSQL には多様なユースケースがありますが、データ検索サービスを構築するには、すべてのデータにインデックスを作成する必要があります。
列指向データベース:列指向データストアは、データクエリ時に行全体ではなく列をスキャンするのに役立ちます。たとえば、items テーブルに 10 列と 100 万行があり、在庫内のアイテムの数量をクエリしたい場合、列指向データベースはテーブル全体をスキャンせず、アイテム数量列にのみクエリを適用します。
ドキュメントデータベース:最も人気のあるドキュメントデータベースは、MongoDB、Couchbase、MarkLogic、Dynamo DB、Cassandra です。ドキュメントデータベースは、JSON 形式や XML 形式の半構造化データの保存に使用できます。
グラフデータベース:グラフデータベースは頂点と頂点間のリンク(エッジと呼びます)を保存します。グラフはリレーショナルデータベースと非リレーショナルデータベースの両方上に構築できます。
インメモリキーバリューストア:データをメモリに保存し、データが頻繁に読み取られるシナリオで使用されます。アプリケーションのクエリはまずインメモリデータベースに送信され、キャッシュにデータがあればメインデータベースにアクセスしません。インメモリデータベースは、ユーザープロファイルなどの複雑なクエリや頻繁なデータリクエストが発生するセッション情報の保存に最適です。
NoSQL には多様なユースケースがありますが、データ検索サービスを構築するには、すべてのデータにインデックスを作成する必要があります。
4. Elasticsearch
Elasticsearch は、クリックストリーム分析やログ分析などのビッグデータシナリオで最も人気のある検索エンジンの 1 つです。文字列トークンを含む任意の数の属性を持つウォームデータへのアドホッククエリは、検索エンジンによって十分にサポートされています。Elasticsearch は非常に人気が高く、汎用バイナリまたはオブジェクトストレージは、非構造化データやインデックス化できないデータ、専門ツールでは理解できない形式のデータに適しています。
ログ検索と分析は一般的なビッグデータアプリケーションシナリオであり、Elasticsearch を使用して、ウェブサイト、サーバー、IoT センサーからのログデータを分析できます。Elasticsearch は、銀行、ゲーム、マーケティング、アプリケーションモニタリング、広告テクノロジー、不正検知、レコメンデーション、IoT など、多くの業界アプリケーションで使用されています。
ログ検索と分析は一般的なビッグデータアプリケーションシナリオであり、Elasticsearch を使用して、ウェブサイト、サーバー、IoT センサーからのログデータを分析できます。Elasticsearch は、銀行、ゲーム、マーケティング、アプリケーションモニタリング、広告テクノロジー、不正検知、レコメンデーション、IoT など、多くの業界アプリケーションで使用されています。
5. 非構造化データストレージ
非構造化データストレージが必要な場合、Hadoop は最適な選択肢のように思えます。スケーラブルで非常に柔軟性が高いためです。汎用デバイス上で動作し、豊富なツールエコシステムを備えており、コスト効率よく運用できるように見えます。
Hadoop はマスターノードと子ノードのモードを採用しています。データは複数の子ノードに分散され、マスターノードが操作の調整とデータに対するクエリ操作を実行します。Hadoop システムは Massively Parallel Processing (MPP) に依存しており、構造化データか非構造化データかを問わず、さまざまなタイプのデータを迅速にクエリできます。
Hadoop クラスターが作成されると、スレーブサーバー上に作成された各子ノードには、ローカル Hadoop 分散ファイルシステム (HDFS) と呼ばれるディスクストレージのブロックが付属します。Hive、PING、Spark などの一般的な処理フレームワークを使用して、保存されたデータをクエリできます。ただし、ローカルディスク上のデータは、関連付けられたインスタンスの存続期間中のみ保持されます。
Hadoop のストレージレイヤー(HDFS)を使用してデータを保存する場合、ストレージとコンピュートが結合されます。ストレージを追加するということは、より多くのマシンを追加する必要があり、それに伴いコンピューティング能力も増加します。最大の柔軟性と最適なコスト効率を実現するには、コンピュートとストレージを分離し、それぞれを独立してスケーリングする必要があります。
一般的に、オブジェクトストレージは、あらゆる種類のデータをコスト効率よく保存するデータレイクにより適しています。オブジェクトストレージに支えられたクラウドベースのデータレイクは、コンピュートとストレージを柔軟に切り離すことができます。
Hadoop はマスターノードと子ノードのモードを採用しています。データは複数の子ノードに分散され、マスターノードが操作の調整とデータに対するクエリ操作を実行します。Hadoop システムは Massively Parallel Processing (MPP) に依存しており、構造化データか非構造化データかを問わず、さまざまなタイプのデータを迅速にクエリできます。
Hadoop クラスターが作成されると、スレーブサーバー上に作成された各子ノードには、ローカル Hadoop 分散ファイルシステム (HDFS) と呼ばれるディスクストレージのブロックが付属します。Hive、PING、Spark などの一般的な処理フレームワークを使用して、保存されたデータをクエリできます。ただし、ローカルディスク上のデータは、関連付けられたインスタンスの存続期間中のみ保持されます。
Hadoop のストレージレイヤー(HDFS)を使用してデータを保存する場合、ストレージとコンピュートが結合されます。ストレージを追加するということは、より多くのマシンを追加する必要があり、それに伴いコンピューティング能力も増加します。最大の柔軟性と最適なコスト効率を実現するには、コンピュートとストレージを分離し、それぞれを独立してスケーリングする必要があります。
一般的に、オブジェクトストレージは、あらゆる種類のデータをコスト効率よく保存するデータレイクにより適しています。オブジェクトストレージに支えられたクラウドベースのデータレイクは、コンピュートとストレージを柔軟に切り離すことができます。
6. データレイク
データレイクは、構造化データと非構造化データの一元化リポジトリです。データレイクは、大量のデータを一元化ストレージに保存・分析する方法として注目されています。データをそのままの形式で保存し、オープンソースのファイル形式を使用して簡単に分析できます。データを現在の形式のまま保存できるため、事前定義されたスキーマに変換する必要がなく、データインジェストの速度が向上します。
データレイクの利点は以下の通りです。
さまざまなソースからのデータインジェスト:データレイクでは、リレーショナルデータベース、非リレーショナルデータベース、ストリームなど、さまざまなソースからのデータを一元化された場所に保存・分析し、唯一の信頼できるソースを構築できます。データがなぜ複数の場所に分散しているのか、唯一の信頼できるソースはどこか、といった疑問に答えます。
効率的なデータインジェストと保存:データレイクは、半構造化データや非構造化データを含むあらゆるタイプのデータを、スキーマを必要とせずにインジェストできます。さまざまなソースからさまざまな形式のデータを迅速にインジェストし、大規模に効率的に保存する方法についての疑問に答えます。
データ量の継続的な増加に対応:データレイクでは、ストレージ階層をコンピュート階層から分離し、各コンポーネントを個別にスケーリングできます。生成されるデータ量の増加にどのように対応するかという疑問に答えます。
異なるソースからのデータに分析を適用:データレイクを使用すると、データの読み取り時にデータパターンを特定し、異なるソースから収集したデータの一元化されたデータカタログを作成できます。これにより、いつでも迅速にデータを分析できます。複数の分析・処理フレームワークを同じデータに適用できるかという疑問に答えます。
データレイクの利点は以下の通りです。
さまざまなソースからのデータインジェスト:データレイクでは、リレーショナルデータベース、非リレーショナルデータベース、ストリームなど、さまざまなソースからのデータを一元化された場所に保存・分析し、唯一の信頼できるソースを構築できます。データがなぜ複数の場所に分散しているのか、唯一の信頼できるソースはどこか、といった疑問に答えます。
効率的なデータインジェストと保存:データレイクは、半構造化データや非構造化データを含むあらゆるタイプのデータを、スキーマを必要とせずにインジェストできます。さまざまなソースからさまざまな形式のデータを迅速にインジェストし、大規模に効率的に保存する方法についての疑問に答えます。
データ量の継続的な増加に対応:データレイクでは、ストレージ階層をコンピュート階層から分離し、各コンポーネントを個別にスケーリングできます。生成されるデータ量の増加にどのように対応するかという疑問に答えます。
異なるソースからのデータに分析を適用:データレイクを使用すると、データの読み取り時にデータパターンを特定し、異なるソースから収集したデータの一元化されたデータカタログを作成できます。これにより、いつでも迅速にデータを分析できます。複数の分析・処理フレームワークを同じデータに適用できるかという疑問に答えます。
関連記事
-
ブロックチェーンとは
ナレッジベースチーム
-
CDN とは
ナレッジベースチーム
特別オファーをもっと見る
-
Short Message Service (SMS) & メールサービス
50,000 通のメールパッケージが USD 1.99 から、120 通の SMS が USD 1.00 からご利用いただけます。
