データベーススペシャリスト学習ノート1

参考書を読んで学習した内容のアウトプットです。
自分向けのノートなので、既知でかつ改めて整理しなおすまでもないなと感じた内容は記載していません。
もしこの記事を参考にしたい場合は、その点に注意してください。

## データ独立

データをシステムから切り離し、データベースでまとめて管理する。

### データ独立の種類

- 物理的データ独立性
  - 物理的なストレージやデータの配置が変更されても、アプリケーションの操作に影響を与えないようにする。
- 論理的データ独立性
  - データベースのスキーマや構造が変更されても、アプリケーションの操作に影響を与えないようにする。

### データ独立の実現方法

- データアクセス層の導入
  - アプリケーションとデータベースの間にデータアクセス層を設けて、ビジネスロジックと切り離す。
- APIの利用
  - 外部システムとのデータ交換にAPIを使用し、データ形式やプロトコルの変更がアプリケーションに直接影響しないようにする。
- 抽象化とカプセル化
  - データモデルやデータアクセスメソッドを抽象化し、変更が他のコンポーネントに波及しないようにする。

## データモデル

### データモデルの種類

- 概念データモデル
  - システムのデータに関する最も抽象的なモデル。具体的なデータ型や制約は含まれず、主要なエンティティとその関係のみを表す。
- 論理データモデル
  - 概念データモデルをより詳細化したモデル。具体的なエンティティ、属性、データ型、およびエンティティ間の関係を定義する。DBMSの種類には依存しない。
- 物理データモデル
  - 論理データモデルを具体的なデータベースシステムに実装するためのモデル。実際のデータベースのテーブル、カラム、インデックス、ストレージパラメータなどの物理的な詳細が定義される。特定のDBMSの技術的特性を考慮する。データベースのパフォーマンスやストレージ効率を最適化するための設計を含む。

### 関係モデル

論理データモデルの一つ。
データとデータ間の関連を全てリレーション（関係）で表現する。

#### 関係モデルの関連用語

- ドメイン
  - 属性が採り得る値の集合。例として、年齢という属性があった場合、その属性に対するドメインは「正の整数」になる。
- 直積
  - 複数のドメインから取り得る値の組み合わせ。
- リレーション（表、テーブル）
  - 直積の部分集合。属性の集合とそれに対応するタプルの集合から構成される。
- カラム
  - 表の列のこと。特定のドメインに属するデータの属性を表す。
- タプル
  - 表の列のこと。リレーションの要素を表す。各タプルはリレーションの属性に対応する値の組み合わせを持つ。

## システム開発のアプローチ

### プロセス中心アプローチ（POA）

処理やタスクのフローを中心に考える方法。
システムがどのように動作するか、どのような手順でタスクを実行するかに焦点を当てる。
図法として、主にDFDや状態遷移図がよく用いられる。

### データ中心アプローチ（DOA）

データとその構造に焦点を当てた方法。
システム設計の主要な要素としてデータの整理、保存、アクセス方法が考慮される。
最初にデータモデルを定義し、その後にデータを操作するプロセルが設計される。
情報システムや大規模なデータを扱うアプリケーションに適している。
図法として、主にE-R図が用いられる。

### オブジェクト指向アプローチ（OOA）

データとそれを操作するプロセスを一つの単位（オブジェクト）としてとらえる方法。
図法として、主にクラス図やシーケンス図などのUMLが用いられる。

## ３層スキーマアーキテクチャ

### 1. 外部スキーマ（ビュー層）

ユーザーがデータベースと対話する際に見るデータの構造。
ユーザーが必要とするデータのみを提供し、それ以外は隠ぺいする。
セキュリティの向上や、UIのカスタマイズを容易にする。

### 2. 概念スキーマ（論理層）

データベース全体の論理的な構造を定義する。
データベースに格納される全データの組織化されたビューを提供する。
データの型、関係、制約などが定義される。

### 3. 内部スキーマ（物理層）

データが実際にストレージデバイス上でどのように格納されるかを定義する。
定義される情報には、データの格納形式、インデックスの仕様、データの圧縮方式などが含まれる。

## 基幹システムと分析システム

### 基幹システム

企業の日常的な業務プロセスを支えるシステム。
企業の主要な業務を遂行するために必要なデータの処理と管理を行う。
リアルタイムまたはトランザクションベースの処理が求められるケースが多い。

#### OLTP（Online Transaction Processing）

データベースシステムにおいて、リアルタイムでのデータの挿入、更新、削除などのトランザクションを迅速に処理することを目的とした処理方式。
特徴としては以下の通り：

- 高速なクエリ処理
  - 少量のデータに対する短いトランザクションを迅速に処理する。
- 一貫性と信頼性
  - トランザクションのACID特性。
- 同時アクセスの管理
  - 多数のユーザーが同時にアクセスしても、データの整合性を保つ。

### 分析システム

収集されたデータを分析し、ビジネスインテリジェンス（BI）や意思決定支援のための見識を提供するシステム。
データウェアハウス、データマイニング、などが含まれる。
大量のデータを効率的に処理し、パターンやトレンドを識別するために設計されている。

#### OLAP

大量のデータを迅速に分析し、複雑なクエリを効率的に処理することを目的とした処理方式。
主な特徴は以下の通り：

- 多次元データモデル
  - TODO
- 迅速なクエリ応答
  - 事前に集約されたデータやインデックスを使用して、複雑なクエリに対して高速な応答を提供する。
- 対話的な分析
  - ユーザーはインタラクティブに分析を行うことができる。

## データ分析基盤

データの生成から活用までのプロセスを通じて、企業が価値ある見識を得るためのシステム。
生成->収集->蓄積->活用の4段階でデータが加工されていく。

### 1. 生成

企業の内部システム、ソーシャルメディア、IoTデバイスなどのさまざまなデータソースからデータを生成する。
データソースからのデータは多様な形式であり、非構造化データから構造化データまで幅広く存在する。

### 2. 収集

生成されたデータをデータレイクに収集する。

### データレイク

さまざまな形式のデータをそのままの形で保存するためのストレージシステム。

### 3. 蓄積

収集されたデータをETL（Extract, Transform, Load）プロセスを通じて、最終的にデータウェアハウスやデータマートに蓄積する。
ETLプロセスでは、不完全、不正確、または不要なデータを識別し、修正または削除するデータクレンジングや、必要に応じてデータの整形が行われる。

#### データウェアハウス

構造化された形でデータを保存し、分析に適した形でデータを整理するシステム。

#### データマート

データウェアハウスのサブセット。
データウェアハウスのデータうち特定の利用者や用途向けに加工されたデータ。

### 4. 活用

蓄積されたデータを、データマイニング技術を用いて分析する。
意思決定の支援、新たなビジネスチャンスの発見、顧客行動の理解などを可能にする。

#### データマイニング

大量のデータセット空パターンや関連性を発見するためのプロセス。
予測分析、クラスタリング、分類などの手法がある。