SAA学習-データベース-データベースの基礎
今回のテーマ:データベースの基礎
学習内容
単元 | 概要 |
---|---|
データベースの基礎 | 最適なデータベース選択を実施するため様々なデータベースのタイプと活用方法を概要的に学習 |
DynamoDBの概要 | DynamoDBの基本的な機能や仕組みについて学習 |
DynamoDBの構築 | 実際にDynamoDBを構築し、設定方法や操作方法を学習 |
Auroraの概要 | Auroraの基本的な機能や仕組みについて学習 |
Auroraの構築 | 実際にAuroraを構築し、設定方法や操作方法を学習 |
EFSの概要 | EFSの基本的な機能や仕組みについて学習 |
EFSの構築 | 実際にEFSを構築し、設定方法や操作方法を学習 |
増大するデータ量への対応 | IoTやビックデータなどの増大するデータ量に対応するため、基本技術などの知識を学習 |
Kinesisの概要 | AWSで大量データ処理をする仕組みのKinesisの基本的な機能や仕組みを学習 |
Kinesisの構築 | 実際にKinesisを構築し、設定方法や操作方法を学習(かなり高額) |
概要
データベース
- データベースは関連したデータの形式をそろえて収集・整理し、検索などの操作やデータ管理を実行するシステム
- データベースを実現したシステムをDBMS(Data Base Management System) と呼称
- 基本的にはテーブルという表形式でデータを格納してます。
- 追加・参照・更新。削除などのデータ操作を容易に実行するソフトウェアやデータモデルと一体となり、CRUDと呼称されます
- Create 追加:データを整理し保存
- Read 参照:必要なデータを参照または抽出
- Update 更新:データの変化に応じて変更
- Delete 削除:不要なデータを削除
データベースとストレージの違い
データベース
- データベース内のデータを保存する装置はストレージであるがデータベースではない
- ストレージ+データを管理・操作するデータベースソフトウェア
ストレージ
- コンピュータの主要な構成要素の一つで、データを永続的に記憶する装置
データベースの役割
データ操作を異常なく実行し、データを安全に保護ながら保存・操作ができる仕組みを提供してます。
- データ操作に関わる課題
- システムがクラッシュした際のデータが消えないか?
- データを誤って削除した場合の対処はできないか?
- データ抽出に誤りがないか?
- 2人以上が同時に同じデータにアクセスした際どうなるのか?
- 大量のデータをうまく検索できないか?
データベースの役割を支える仕組みは以下2点となります。
トランザクション
データベースを一環した状態から別の一環した状態へ変化する1つの処理の束になります。
ポイントは以下のようにものになります。
- 同時アクセスした場合、上手く処理する
- データ処理に失敗したらもとに戻す
- システムがクラッシュしてもデータを保護する
トランザクション:ACID
ACIDは信頼性のあるトランザクションシステムの持つべき性質のこと
Atomicity(原子性)
トランザクションが「すべて実行される」か「一つも実行されない」のどちらかの状態になる性質Consistency(整合性)
トランザクションの前後でデータ整合性が保たれ矛盾のない状態が継続される性能Isolation(独立性)
トランザクション実行中の処理過程が外部から隠匿され他の処理に影響を与えない性質Durability(耐久性)
トランザクションが完了したら、その結果は記録されクラッシュしても消失しない性質
トランザクション:耐久性
データを更新する際、COMMITとすると更新が反映されるが、COMMITしないとデータをロールバックし保護します。
以下に例を記載します。
トランザクション:整合性
同時に複数人がアクセスした場合、データの整合性を維持する必要があります。
データの整合性を保証するために。結果整合性と強い整合性の2つで維持を行います。
結果整合性は、変更中であっても更新前の古いデータを参照可とします。
強い整合性制は、変更中ならば更新時の該当データを参照負荷とします。
データモデル
データモデルは、データベースのデータの持ち方など構造や処理を定めるデータの論理的な表現方法となります。
データモデルを選定してから、データモデルに応じたトランザクション処理を決定します。
データモデルの利用用途に応じた以下のような使い分けをされます。
- リレーショナルモデル(今回の学習主テーマ)
- グラフモデル
- キーバリューストア
- オブジェクト
- ドキュメント
- ワイドカラム
- 階層型
最適なデータベースを選択
ワークロードに応じた最適なデータベースサービスを利用します。
関連するデータベースサービスは以下となります。
- RedShift
- RDS
- DynamoDB
- Aurora
- Elasticserch
データベース
データベースは大きくリレーショナルDBか非リレーショナルDBの2種に分かれます。
- リレーショナルDB:これまでのDB(Oracle、PostgreSQLなど)
- NoSQL:ビックデータ向けDB
リレーショナルDB
データベースの基本はリレーショナルDBシステム(RDBMS)です。
業務システム向けのDBの基本となります。
なお、以下のようなポイントとなります。
概要
- データ間の関係性が定義されたデータを取り扱う一般的なDBシステム
- 列と行がいくつかのテーブルで定義されて、テーブル間のリレーションが設計
- データ操作にSQLを利用
-
- テーブル間のリレーションが定義されたデータモデル
- 行思考で1つの行をデータのかたまりとして取り扱う
利用データ
- 会計データ/顧客データといった構造化データ
例
- オンプレやソフトウェア:Oracle、MySQL、SQLServer、PostgreSQLなど
- AWSサービス:RDS
NoSQL
NoSQLは、IoTと同様にビックデータ解析に利用します。
また、以下のようなポイントとなります。
概要
利用データ
非構造化データ
- テキスト、動画、音声など
半構造化データ
NoSQLのタイプ
NoSQLのタイプは、キーに対するデータ形式の格納方法の違いで以下のようなタイプに分類されます。
また、以下のようなポイントとなります。
キーバリューストア
- キーに対しバリュー(値)を入れる単純な構造
- 高速なパフォーマンスと分散型拡張に優れている
- データ読込が高速
ドキュメントデータベース
ワイドカラムストア
- 列指向とも呼ばれ、キーを利用するがデータはカラム(列)で管理
- 非構造データを大規模に格納することを目的
- 行ごとに任意の名前のカラムを無数に格納
グラフデータベース
ビックデータの活用
ビックデータの活用で、データの特徴に応じて利用するデータベースを選択します。
例としては以下のような選定になります。
データベースの全体像
データベースの全体像は、分散型、拡張型の軸とオペレーション向け、分析向けの2つの軸で分類できます。
分類した概念図は以下のようになります。
データウェアハウス(DWH)
データウェアハウスは、BIツールなどと連携し、構造化データを利用した経営分析向けのデータベースとなります。
また、以下のようなポイントとなります。
概要
- データの抽出・集約に特化したBIデータ分析用のデータベース
- 読み込むデータ構造を予め設計し、加工してから利用分のデータを蓄積
- レスポンス重視でデータ抽出・集計が速いが、更新・トランザクションは遅い
-
- データをパーティショニングし、複数ディスクから読み込む
- 列志向でデータを格納
利用データ
- 会計データなどの業務系構造化データを分析ように加工しBIで利用
- KPI測定/競合分析/アクセス分析など
例
分散型DB/データレイク
分散型DB/データレイクは、ビックデータやIoTを累積し高速処理を可能とするDBとストレージの組み合わせとなります。
また、以下のようなポイントとなります。
概要
- データ中抽出に特化したDB
- 分散しデータを保存しており、ビックデータの高速処理向け
利用データ
- ビックデータ、IoT
例
KVS(Key Value Store):キーバリュー型
KVSは、シンプルなデータ構造にすることで高速処理を可能にしたDBとなります。
また、以下のようなポイントとなります。
概要
- キー分散することで、シンプルなオペレーションを高速に実施できるDB
-
- 強い整合性を犠牲にし、結果的な整合性を採用
- 分散向けデータモデル/クエリの採用
- トランザクション/集計/JOINなど不可
利用データ
- 大規模WEBサイトのバックエンドデータ(ユーザーセッション/ユーザー属性/事前計算データのキャッシュ)
- メッセージングシステムのデータ(Twitterなど)
- 大規模書き込みが必要なIoTセンサーデータなど
例
- オンプレやソフトウェア:redis、riak
- AWSサービス:ElastiCache、DynamoDB
データ構造 リレーショナルDBのテーブルとキーバリュー型のテーブルに分かれ以下のような概要図になります。
リレーショナルDBのテーブル
部門 | 場所 | 役職 | 名前 |
---|---|---|---|
人事 | 豊洲 | 部長 | 佐藤 |
製造 | 新宿 | 課長 | 上原 |
総務 | 三鷹 | 社員 | 村上 |
キーバリュー型DBのテーブル
キー | バリュー |
---|---|
1 | 名前:佐藤、部門:総務、場所:豊洲、役職:部長 |
2 | 名前:上原、部門:人事、場所:新宿、役職:課長 |
3 | 名前:村上、部門:製造、場所:三鷹、役職:社員 |
ワイドカラム型
ワイドカラム型は、キーに対しカラムを大規模に登録できる形式となります。
また、以下のようなポイントとなります。
概要
- 分散しシンプルなオペレーションを高速に実施できるDB
- データ取得する際にデータ結合しなくても済むように可能な限り多くのデータを同じ行に保持
利用データ
例
データ構造
ドキュメントDB
ドキュメントDBは、キーに対しドキュメント思考でXMLなどのデータを格納します。
また、以下のようなポイントとなります。
概要
- ドキュメント思考データベースは、様々なデータ構造のドキュメントを混在し保存
利用データ
例
データ構造
インメモリデータグリット
インメモリデータグリットKVSの仕組みをメモリを利用し高性能にしたDBとなります。
また、以下のようなポイントとなります。
概要
- 大量データを多数のサーバのメモリ上で分散し管理する技術
- ミリ秒単位の高速応答処理が可能
-
- データをメモリ上に置くことで、高速なデータアクセスを実現
- データを多数のサーバで分散し管理
利用データ
- 金融の取引処理データでミリ秒以下の応答時間を実現
例
全検索型エンジン×分散DB
データの全検索エンジンであるElasticsearchは分散データベースと連携しデータ全検索処理が可能となります。
また、以下のようなポイントとなります。
概要
- 全検索型のデータ検索エンジンで、分散データベースと連携し検索データベースを構築
- 抽出条件との関係性/関連性が高いデータを抽出し返す
利用データ
例
- オンプレやソフトウェア:elasticsearch、kibana
- AWSサービス:Elasticsearch Service
グラフDB
グラフDBは、グラフ構造でデータ間のつながりを検索・可視化するDBとなります。
データ構造のイメージはマインドマップのような形態をとります。
また、以下のようなポイントとなります。
概要
- グラフ演算に特化したDBで、データ間のつながりを検索/可視化に利用
-
- グラフデータ構造を取るため、RDB以上にスケールアウトができない
- レコード数が増えると検索にかかる時間と難易度が増大
- ACID特性が担保されており、オブジェクト間の関連づけを簡単に表現する
利用データ
- 最短経路検索
- 金融取引の詐欺検出
- ソーシャルネットワークによるリレーション計算
例
分散OLTP(RDB)
分散OLTPは、オンライントランザクション処理(Online Transaction Processing)を分散化する次世代DBとなります。
また、以下のようなポイントとなります。
概要
- グローバルに分散され強整合性を備えたデータベース
-
- リレーショナルデータベースの構造と非リレーショナルデータベースの分散スケーラビリティを兼ね備える
- 高い可用性、構成のトランザクションと強整合性が実現
利用データ
- 大規模な業務データ処理
例
- オンプレやソフトウェア:なし
- AWSサービス:Amazon Aurora
DB種別とデータモデル
データ構造がシンプルなデータベースが分散しやすくビックデータ処理に向いています。
データベースとAWSサービスの相関図
データべースの概念とAWSサービスの相関は以下のような図になります。
今回のテーマは以上です。