IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

データを活用するための倉庫データウェアハウス(DWH)とは何か?

どうもKoheiです。

 いい天気、いい気候、秋ですね。

 

 今日はデータを扱う箱、データウェアハウスについて書きたいと思います。

 

1. データを活用するまでの道のり

 

これまで、データを管理するシステムであるRDBMS/NoSQLについて書いてきました。

 

リレーショナルデータベースについてまとめてみた - IT社員3人組によるリレーブログ

NoSQLとは?~大量データに対応したデータベースたち~ - IT社員3人組によるリレーブログ

 

さて、ではこれらを使ってデータ分析をするときを想像してみます。

 

例えば、先月の商品と売上状況をグラフ化します。

売上情報は売上管理システムで管理されていますので、このデータベースとレポートシステムをつなげます。

 

f:id:go-mount:20181110104749p:plain

こうして、先月の売り上げを基に販売戦略を考えることができるようになりました。

すると、こんなニーズが出てきます。

 

f:id:go-mount:20181110110007p:plain

売上管理システムでは、ユーザ情報も入っていました。

が、詳細なユーザ情報は別の顧客管理システムから取ってくる必要があります。

ということで顧客管理システムの情報も見れるように開発します。

 

f:id:go-mount:20181110110136p:plain

頑張って顧客管理システムもつなげて見れるようにしました。

さあ、これでレポートを作って偉い人に報告します。

 

f:id:go-mount:20181110110657p:plain

 

・・・また宿題をもらってしまいました。

さらに商談を管理するシステムとつなげたり、昨年度のデータも探さなきゃ・・・

あれ、売上管理システムは1年分のデータしか保持しないぞ・・・

 

詰んだ

 

と、なかなか大変になります。

 

一般に、業務システムは、顧客管理、売上管理など、それぞれ独立に存在しています。このため複数の情報を一元的に取りまとめてみたいとなると、各システムとの接続が必要になります。

しかも、もともと分析目的に設計されていないものだと、上の例のように情報が消えてしまったり、分析しやすい形になっていない、といったことが起こりえます。

 

こうした悩みを解決するシステムがデータウェアハウス(DWH)です。

 

2. データウェアハウスという考え方

データウェアハウス(Data warehouse)とは、その名の通り「データの倉庫」なのですが、提唱者のビル・インモン(William H. Inmon)によれば下記の4つの要素を満たすシステムだと説明しています。

 

1. サブジェクト指向:項目(ユーザ名、売上など)別にデータを分類し、保持する。

2. 統合化:複数のデータ媒体から情報を集約し、分析のためのデータを統合的に管理

3. 恒常性:入れたデータは基本的に更新・削除しない。

4. 時系列:分析のために必要な期間、データを時系列で保持・管理する。

 

 

f:id:go-mount:20181110112726p:plain

 

こうしてデータを一元的にDWHに保存しておくことで、ビジネスに必要な情報を一元管理し、分析に役立てることができます。

 

DWHを実現するためには、データが成形され、利用目的が比較的はっきりしていることからRDBMSが利用されることが多いです。

 

ただし、汎用的なMySQLPostgreSQLを使って・・・というよりも

・大量データを保持・管理する

・高速なデータ読み込みが求められる

という点で、それに特化したデータベース製品が適しています。

 

3. 主なDWH製品

以前RDBMSの紹介したものも含めてDWHとしてよく利用される製品を紹介します。

oracle database / oracle EXADATA

ãoracle exadataãã®ç»åæ¤ç´¢çµæ

oracleが考えた最強のデータベースハードウェア「EXADATA」をベースとしたoracle database。安定感をほこるoracle databaseをSSDやらメモリやらモリモリ乗せたクラスタ構成のマシンで動かすことで、圧倒的なパフォーマンスを実現している。

SAP HANA

f:id:go-mount:20181029212809p:plain

RDBMSのときにも紹介。大量データの高速処理が得意なインメモリデータベース。

 

IBM IIAS

 f:id:go-mount:20181110134747p:plain

ハードウェアとソフトウェアがセットになったアプライアンス製品。

IBM Db2をベースにデータ分析向けに性能向上。分散処理のソフトウェアであるApache Sparkや分析ツールも内包している。

teradata

 ãteradataãã®ç»åæ¤ç´¢çµæ

名の通りtera byte級のデータを処理するために作られたデータベース製品。

独自の並列処理で高速なデータ処理を実現。Teradataは2018のGarnerの評価でもリーダーに位置する。

Amazon Redshift

 ãamazon redshiftãã®ç»åæ¤ç´¢çµæ

初期構築費用不要のAWS上のDWHサービス。ペタバイト級のデータでもスケールアウトするので処理できるらしい。列指向型の並列処理で、大容量のデータに対しても、postgreSQLベースで高速なクエリ処理が可能。S3のデータをロードして1 時間あたり 0.25 USDから利用可能。

Azure SQL Data Warehouse

f:id:go-mount:20181110141846p:plain

microsoft AzureのDWHサービス。分散計算+分散ストレージと機能が分かれていて、それぞれ調整が可能。処理していないときはストレージ課金のみ。SQL serverとの互換性が高い。

Google BigQuery

f:id:go-mount:20181110142344p:plain

Google CloudのDWHサービス。redshiftやAzure SQL DWに比べて、大規模データにさらに特化し、さらに高速と言われる。課金体系が時間ではなく、スキャンしたデータ量&保持しているデータ量で、データを置いておくだけなら他と比べて圧倒的に安い(1/10以下)。リアルタイムな処理というよりは、月数回のデータ処理などに強い。

 

まとめ

データウェアハウスについてまとめてみました。

DWHに関連して、DWHの情報からレポートを作る際に用いるBI(ビジネスインテリジェンス)や、データウェアハウスよりもさらに幅広いデータを保持するデータレイクについてもどこかで書きたいと思います。

 

ではでは