プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データウェアハウスデータベースとOLTPデータベースの違いとは?徹底比較

データウェアハウスデータベースとは

データウェアハウジングとは、複数のソースからデータを収集・管理し、ビジネスにとって有益な洞察(インサイト)を提供するための手法です。データウェアハウスは、経営層の意思決定を支援することを目的として特別に構築されたものです。

簡単に言えば、データウェアハウスとは、組織の運用系(オペレーショナル)データベースから独立して維持されるデータベースのことです。データウェアハウスシステムによって複数のアプリケーションシステムを統合することが可能になり、統合された履歴データの堅牢なプラットフォームを基盤として、分析用途のデータ処理を提供します。

さらに、データウェアハウスはOLTPシステムに対しても重要な役割を果たします。OLTPデータベースに蓄積されていくデータをオフロードする受け皿となるほか、もしOLTPデータベース内に直接実装すればOLTP処理を複雑化させたり性能を低下させたりするようなサービスを引き受けることで、OLTP環境全体を支えています。

OLTPデータベースとは

OLTP(Online Transaction Processing:オンライントランザクション処理)は、大量の短いオンライントランザクション(INSERT、UPDATE、DELETE)を特徴とするシステムです。OLTP処理の基本理念は、非常に高速なクエリ処理、多数のユーザーが同時にアクセスする環境でのレコード整合性の維持、そして1秒あたりのトランザクション数(TPS)による高い信頼性と効率性にあります。

OLTPデータベースには、実在する最新のデータが格納されています。トランザクションデータを保存するためのスキーマには、エンティティモデル(通常は第3正規形=3NF)が使用されます。

OLTPデータベースの主な特徴は、データの挿入や更新をシンプルに制御できる点と、効率的なデータ操作・参照の仕組みへのアクセスを提供できる点にあります。一般的に、OLTP向けに設計されたデータベースでは、1回の操作で扱うのは単一のレコード、あるいは小さなレコードセットにとどめるべきとされています。

また、OLTPシステムは通常、データの現在の状態のみを扱います。たとえば、3年前に退職した従業員に関するレコードは、人事管理システム上ではもはや有効な情報ではありません。このような古いデータは、何らかの安定的なストレージ媒体にアーカイブされており、オンラインからはアクセスできないのが一般的です。

データウェアハウスとOLTPデータベースの比較

それでは、データウェアハウスデータベースとOLTPデータベースの違いを、表を使って比較してみましょう。

データウェアハウスデータベースOLTPデータベース
カテゴリや属性ごとのビジネス指標の分析を目的として設計されている。リアルタイムのビジネス運用を目的として設計されている。
大量のデータロードや、テーブルごとに多数の行へアクセスする大規模・複雑で予測不能なクエリに対して最適化されている。典型的なトランザクション群、すなわちテーブルごとに一度に1行を挿入または取得するような処理に対して最適化されている。
一貫性のある正確なデータをロードするため、リアルタイムの検証は不要。トランザクション実行時に入力データを検証するよう設計されており、検証用データテーブルを使用する。
OLTPと比較すると、同時接続ユーザー数は比較的少ない。数千人規模の同時接続ユーザーをサポートできる。
  1. スタックとキューの違いとは?データ構造の基礎をわかりやすく解説

    スタックとキューの違いを理解する前に、まずプログラミングにおける「データ型」の概念を押さえておきましょう。データ型とは、変数を作成してデータを格納する際の型のことです。データ型は大きく「プリミティブ型(基本データ型)」と「非プリミティブ型」の2種類に分けられます。プリミティブ型は、プログラミング言語があらかじめ定義してサポートしているデータ型(int、char、floatなど)です。一方、非プリミティブ型は言語側で定義されておらず、プログラマが目的に応じて独自に作成するデータ構造を指します。スタックとキューは、どちらもこの非プリミティブなデータ構造に分類されます。しかし、内部実装の観点から見る

  2. C#のHashtableとDictionaryの違いとは?特徴と使い分けを徹底解説

    C#では、データを「キー」と「値」のペア(Key/Value)で格納できるコレクションとして、HashtableとDictionaryの2つがよく使われます。一見似ていますが、型の制約やパフォーマンス、エラー処理などに重要な違いがあります。本記事では、両者の違いを比較表とサンプルコードを使ってわかりやすく解説します。 HashtableとDictionaryの主な違い 項目HashtableDictionary 定義System.Collections名前空間に属する非ジェネリック(non-generic)コレクション。キーと値のペアでデータを格納します。System.Collect