データベースサービスの相違点について自分なりにまとめてみました。
まだまだAWSサービスについての知識については未熟ですが、備忘録として記事にします。
もし、データベースの相違点で思い出したいときに参考までに読んでください。
データベースの種類
データベースの種類には大きく分けて二つあります。
データ間の関係性を定義して利用するリレーショナルデータベース。
データ間の関係性のないデータベース、データはKey,value型によるKVSデータを利用するNoSQL型のデータベース(非リレーショナルデータベース)です。
NoSQLのタイプ
NoSQLには下記の4つのタイプがあります。
タイプ | 特徴 |
---|---|
キーバリューストア | キーに対してバリューを入れる単純な構造。データ読み込みが高速。高速なパフォーマンスと分散型拡張に優れている。 |
ワイドカラムストア | 列指向とも呼ばれ、キーを利用するがデータはカラムに格納する。非機能データを大規模に格納するのが目的 |
ドキュメントデータベース | JSONやXMLなどのデータを格納。複雑なデータ構造を扱うアプリで生産性高く柔軟に開発する |
グラフデータベース | データ同士の関係をグラフで相互に結びついた要素で構成される。RDBと比較して高速横断検索が可能。 |
データベース各種類について
RDB
- 概要
業務向けのDB。基本はリレーショナルデータベース。
SQLでのデータ操作が可能。
- アーキテクチャ
テーブル間のリレーショナルが定義されたデータモデル
- 利用ケース
会計データなどの業務系構造化データ
オンプレ | AWSサービス |
---|---|
MySQL、Oracleなど | RDS |
データウェアハウス(DWH)
- 概要
構造化データを利用した経営分析向けデータベース。
データの読み込み、集約に特化したBIデータ分析用のデータベース。
読み込むデータ構造を予め設計して、加工してから利用文のデータを蓄積
レスポンス重視でデータ抽出・集計が早いが、更新、トランザクションは遅い。
* アーキテクチャ
データをパーティショニングして、複数ディスクから読み込む
- 利用データ
会計データなどの業務系の構造化データの分析用に加工し、BIで利用
KPI測定・競合分析・アクセス分析など
オンプレ | AWSサービス |
---|---|
Oracle Exadata, VERTICA,TERADATAなど | Redshift |
分散型DB・データレイク
- 概要
ビッグデータやIOTデータを蓄積して高速処理を可能にするDBとストレージの組み合わせ。
データの抽出に特化。
分散してデータを保存しており、ビッグデータの高速処理向け。
- アーキテクチャ
SQLライクなクエリ操作可能
INSERT・UPDATE・DELETEはない
トランザクションはない
データの書き込みは一括ロードまたは全件削除のみ
- 利用データ
ビッグデータ
オンプレ | AWSサービス |
---|---|
Impala,HDFSなど | S3 |
KVS:キーバリュー型
- 概要
シンプルなデータ構造にすることで高速処理を可能にしたDB
- アーキテクチャ
強い整合性を犠牲にして、結果的な整合性を採用
分散むけデータモデル・クエリの採用
トランザクション・集計・JOINなどの不可
- 利用データ
大規模WEBサイトのバックエンドデータ(ユーザーセッション、ユーザー属性、事前計算データのキャッシュ)
メッセージングシステムのデータ
大規模書き込みが必要なIOTセンサーデータ
オンプレ | AWSサービス |
---|---|
radis,riak | ElastiCache,DynamoDB |
ワイドカラム型
- 概要
キーに対してカラムを大規模に登録できるのがワイドカラム型
分散してシンプルなオペレーションを高速に実行できるDB
データ取得する際にデータ結合しなくても済むように、可能な限り多くのデータを同じ行に保持
-
アーキテクチャ
結果結合性を採用
キースペース、カラムファミリ、ロウ、カラムの入れ子構造
SQLライクなデータ操作が可能
データの更新は挿入による上書き -
利用データ
Facebook/Twitterなどのソーシャルデータの位置情報データストレージ
リアルタイム分析
データマイニング処理
オンプレ | AWSサービス |
---|---|
HBASE,cassandra | DynamoDB |
ドキュメントDB
- 概要
ドキュメント指向データベースで様々なデータ構造のドキュメントを混在して保存することができる。
- アーキテクチャ
JSON/CMLをデータモデルに利用
小規模データの同期集計処理が可能だが、バッチは不向き
SQLライクなデータ操作が可能でKVSよりもクエリが豊富なため操作しやすい
Shardingによるデータベースの分散化
- 利用データ
半構造化データ(XML/JSON)
大規模WEBのログ補完など
オンラインゲームデータ
カタログ管理
オンプレ | AWSサービス |
---|---|
mongoDB,MarkLogic,CouchDB,Couchbase | Amazon DocumentDB, mongoDB |
インメモリデータグリッド
- 概要
大量のデータを多数のサーバのメモリ上で分散して管理する
ミリ秒単位の高速応答処理が可能
- アーキテクチャ
データをメモリ上に置くことで、高速なデータアクセスが実現
データを多数のサーバで分散して管理
- 利用データ
金融の取引処理データでミリ秒以下の応答時間を実現
オンプレ | AWSサービス |
---|---|
GEODE,ORACLE,hazelcast,Ignite,Infinispon | Redis ElastiCache, Memcached ElastiChache |
全検索型エンジン×分散型DB
- 概要
全検索型のデータ検索エンジンで、分散データベースと連携して検索データベースを構築
検索条件との関係性・関連性が高いデータを抽出して返す
- アーキテクチャ
Elasticsearchは前文検索用のライブラリ。Apach Luceneを利用したデータストア
分析の柔軟性や速度が高く、分析、蓄積・可視化環境を容易に構築可能
- 利用データ
半構造化データ(XML/JSON)
高可用な全検索エンジン
サイト内でデータの検索
デバイス登録状況・配信状況のリアルタイム可視化などリアルタイム検索要件/検索行動の可視化
オンプレ | AWSサービス |
---|---|
elasticsearch,kibana | Elasticsearch Service |
グラフDB
- 概要
グラフ演算に特化したDBでデータ間の繋がり方を検索・可視化に利用
- アーキテクチャ
グラフデータ構造を取るため、RDB以上にスケールアウトができない
レコード数が増えると、検索にかかる時間と難易度が増大
ACID特性が担保されていおり、オブジェクト間の関連付けを簡単に表現できる
- 利用データ
最短経路探索
金融取引の詐欺検出
ソーシャルネットワークによるリレーション計算
オンプレ | AWSサービス |
---|---|
neo4j | Amazon Neptune |
分散OLTP
- 概要
グローバルに分散され、強制合成を揃えたデータベース
- アーキテクチャ
リレーショナルデータベースの構造と非リレーショナルデータベーるの分散スケーラビリティを兼ね揃える
高い可用性、高性能のトランザクションと強制合成が実現
- 利用データ
大規模な業務データ処理
オンプレ | AWSサービス |
---|---|
Amazon aurora |
まとめ
データ構造がシンプルで利用しやすい場合はNoSQLのKVS、ワイドカラム、ドキュメントDBを利用し、
複雑なDB処理が必要な場合はRDBやグラフDBを利用する。
検索に特化したい場合はElasticSearch
DWHとして利用したい場合はRedshift
データレイクとして利用する場合はS3