Help us understand the problem. What is going on with this article?

データベースの種類について

データベースサービスの相違点について自分なりにまとめてみました。
まだまだ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

yqxxnaxr1109
Java,Angular,TypeScriptをメインに開発しています。 投稿に不備がありましたら、ご指摘いただけると助かります!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした