データベース方式
データベース
@ データベースの種類と特徴関係データベース(RDB:Relational Database)
関係データベースは、テーブル(表)形式でデータを管理します。各テーブルは行(レコード)と列(フィールド)で構成され、行は個別のデータエントリを、列はデータの属性を表します。テーブル間の関連付けは、外部キー(Foreign Key)を使用して実現されます。SQL(Structured Query Language)を用いてデータの操作や問い合わせを行います。代表的なシステムには、MySQL、PostgreSQL、Oracle Database、Microsoft SQL Serverなどがあります。
階層型データベース(HDB:Hierarchical Database)
階層型データベースは、ツリー構造でデータを管理します。データは親子関係を持ち、1つの親ノードに対して複数の子ノードが存在します。IBMのIMS(Information Management System)が代表例です。データの検索は親から子へのトップダウン方式で行われ、ツリー構造が直感的に理解しやすいですが、複雑な関係を表現するのには向いていません。
網型データベース(NDB:Network Database)
網型データベースは、グラフ構造を用いてデータを管理します。データエントリ(レコード)が相互に多対多の関係を持つことができます。CODASYL(Conference on Data Systems Languages)がこのデータベースモデルを推進しました。検索はポインタを使用して行われ、柔軟なデータ関係を持つことが可能ですが、設計と管理が複雑になります。
オブジェクト指向データベース(OODB:Object-Oriented Database)
オブジェクト指向データベースは、オブジェクト指向プログラミングの概念をデータベースに取り入れています。データはオブジェクトとして表現され、クラス、継承、ポリモーフィズムなどのオブジェクト指向の特徴を持ちます。データベース操作にはOQL(Object Query Language)を使用します。代表的なシステムには、db4o、ObjectDBなどがあります。
オブジェクト関係データベース(ORDB:Object-Relational Database)
オブジェクト関係データベースは、関係データベースとオブジェクト指向データベースの特徴を組み合わせたものです。テーブルとオブジェクトの両方を使用してデータを管理します。Oracle DatabaseやPostgreSQLが代表例です。これにより、リレーショナルな強みを活かしながらオブジェクト指向の柔軟性を持たせることができます。
ハイパーテキストデータベース
ハイパーテキストデータベースは、文書やデータの間にリンクを設定し、ハイパーリンクを用いてデータを関連付けます。Webブラウザのリンク機能がその代表例です。非線形な情報アクセスが可能であり、ナビゲーションが容易です。
マルチメディアデータベース
マルチメディアデータベースは、テキスト、画像、音声、動画などのマルチメディアデータを管理します。これらのデータを効率的に検索、ストリーミング、再生する機能を持ちます。デジタルライブラリやマルチメディアアーカイブで利用されます。
XMLデータベース
XMLデータベースは、XML(eXtensible Markup Language)形式でデータを管理します。データはツリー構造で表現され、XPathやXQueryを使用してデータの検索や操作を行います。XMLデータの柔軟な構造が特徴で、データ交換やWebサービスでの利用が一般的です。
A データベースの 3 層スキーマアーキテクチャ(3 層スキーマ構造)外部スキーマ(External Schema)
外部スキーマは、システムの利用者やアプリケーションプログラムから見たデータの定義を表します。副スキーマとも呼ばれ、特定のユーザーやアプリケーションのニーズに合わせてデータのビューを提供します。外部スキーマは、データベースの一部のみを公開し、ユーザーが必要とする情報だけを表示します。これにより、データのセキュリティとプライバシーが向上します。
概念スキーマ(Conceptual Schema)
概念スキーマは、データベース全体の論理的なデータ構造を定義します。データベースの全てのデータとその関係性を統一的に表現し、データの整合性を保つための制約や規則を含みます。論理データモデルとも呼ばれ、エンティティ(Entity)、属性(Attribute)、リレーションシップ(Relationship)を使ってデータの構造をモデル化します。概念スキーマはデータベースの設計者が主に使用します。
内部スキーマ(Internal Schema)
内部スキーマは、データの物理的な構造を定義します。記憶スキーマとも呼ばれ、データの格納方法やインデックス、アクセスパスなどを詳細に記述します。内部スキーマは、データの物理的な配置、ファイル構造、ストレージの効率化に関する情報を含み、データベース管理システム(DBMS)がデータにアクセスする際の具体的な方法を決定します。
論理データモデル(Logical Data Model)
論理データモデルは、概念スキーマの具体的な表現方法であり、データの論理的な構造をモデル化します。エンティティ・リレーションシップモデル(ERモデル)や正規化(Normalization)によってデータの関係性を定義します。論理データモデルは、データの整合性と一貫性を保ち、データの冗長性を最小限に抑えることを目的としています。
物理データモデル(Physical Data Model)
物理データモデルは、内部スキーマの具体的な表現方法であり、データの物理的な格納方法をモデル化します。ストレージの構造やインデックス、パーティショニングなど、データベースのパフォーマンスを最適化するための要素を含みます。物理データモデルは、データのアクセス速度や効率性を向上させるための設計を行います。
B データベースのデータモデル ```htmlデータベースの論理的なデータ構造を表現するためのデータモデルには、いくつかの種類があります。それぞれのデータモデルは、データの表現方法、利点、特徴に違いがあります。以下に、主要なデータモデルとその特徴について説明します。
関係モデル(Relational Model)
特徴
データを行(レコード)と列(フィールド)で構成されるテーブル(リレーション)として表現。
テーブル間の関係を外部キーによって定義。
SQL(Structured Query Language)を使用してデータの操作やクエリを行う。
利点
データの整合性が高く、冗長性を低減できる。
高度な検索・集計が可能で、汎用性が高い。
データの正規化により、重複を避け、データの一貫性を保てる。
表現できる内容
ビジネスデータ、顧客情報、製品情報など、ほぼすべての種類のデータを構造化して保存可能。
階層モデル(Hierarchical Model)
特徴
データをツリー構造で表現。親子関係に基づいてデータを階層的に配置。
各ノードがレコードに対応し、親ノードから子ノードへの一対多の関係がある。
利点
データの構造が明確で、アクセスパスが固定されているため、データの取得が高速。
データの親子関係が自然に表現できる。
表現できる内容
組織の構造図、ファイルシステムのディレクトリ構造、製品の部品構成など。
ネットワークモデル(Network Model)
特徴
データをグラフ構造で表現。ノードとエッジを使用して、任意の多対多の関係を表現。
CODASYL(Conference on Data Systems Languages)によって標準化された。
利点
複雑な多対多の関係を自然に表現できる。
柔軟性が高く、階層モデルよりもデータ間の関係を詳細に定義可能。
表現できる内容
サプライチェーン管理、学術論文の引用関係、ソーシャルネットワークの関係など。
論理データモデル(Logical Data Model)
特徴
実装に依存しない抽象的なデータ構造を定義。
エンティティ、属性、リレーションシップを用いてデータの論理構造を記述。
利点
データベース設計の初期段階で使用し、データの構造と要件を明確にするのに役立つ。
物理データモデルと独立しているため、柔軟性が高い。
表現できる内容
ビジネスプロセスやユーザー要件を反映したデータ構造。具体的なデータベース技術や実装に依存しない。
まとめ
関係モデル: 汎用性が高く、データの整合性を保ちやすい。
階層モデル: 親子関係が明確で、データアクセスが高速。
ネットワークモデル: 複雑な多対多の関係を表現できる。
論理データモデル: 抽象的なデータ構造を定義し、設計の基盤を提供。
これらのデータモデルは、それぞれの特徴と利点を理解し、適切に選択することで、効果的なデータベース設計を行うことができます。
``` C 関係モデル関係モデルはデータを表(テーブル)で表現するデータベースモデルです。このモデルでは、データの構造を明確にし、データ間の関係を外部キーなどで定義します。以下に、関係モデルの基本的な構成要素と考え方について説明します。
関係(リレーション)
関係モデルにおけるデータの基本的な単位で、テーブルのことを指します。各テーブルは一つのエンティティや概念を表現します。
タプル(行,組)
テーブル内の一つのレコードを指し、データの具体的な値の集合です。タプルは、エンティティの一つのインスタンスを表します。
属性(列,フィールド)
テーブル内の一つの列を指し、エンティティの特性やプロパティを表します。各属性には定義域(ドメイン)があり、取り得る値の範囲が決まっています。
実現値
タプル内の各属性の具体的な値を指します。
定義域(ドメイン)
各属性が取り得る値の集合を指します。例えば、属性「年齢」の定義域は0から120までの整数とするなど。
以下に、具体的な例を示します。
学生情報を管理するテーブル「Student」があるとします。このテーブルは以下のように構成されます。
StudentID | Name | Age | Major |
---|---|---|---|
1 | Alice | 20 | Computer Science |
2 | Bob | 22 | Mathematics |
このテーブルにおいて:
- 関係(リレーション):Studentテーブル
- タプル(行,組):各学生のレコード(例:1, Alice, 20, Computer Science)
- 属性(列,フィールド):StudentID, Name, Age, Major
- 実現値:具体的なデータ(例:1, Alice, 20, Computer Science)
- 定義域(ドメイン):StudentIDは整数、Nameは文字列、Ageは整数、Majorは文字列
複数のテーブル間の関係付けは、外部キーを使用して行います。例えば、学生の履修情報を管理する「Enrollment」テーブルを考えます。
EnrollmentID | StudentID | CourseID |
---|---|---|
1 | 1 | CS101 |
2 | 2 | MATH201 |
この場合:
- 外部キー:EnrollmentテーブルのStudentIDは、StudentテーブルのStudentIDを参照し、学生の履修情報を関連付けます。
- リレーションシップ:StudentテーブルとEnrollmentテーブルの間に一対多の関係が存在します。
データモデルを表現する際には、ER図(Entity-Relationship Diagram)を使用します。ER図では、エンティティ(テーブル)を長方形で表し、属性をその中にリストし、リレーションシップ(関係)を線で結びます。
これらの考え方を理解し、適切にデータモデルを設計することで、データの整合性と効率的なアクセスを実現できます。
データベースの種類
階層データベース:階層構造(木構造)によりデータの構造を表現。レコード同士が親子関係を持っていて、ある親レコードに対する子レコードは一つ以上存在し、子レコードに対する親レコードはただ一つだけ。
ネットワーク(網)型データベース:親レコードと子レコードとの間の「多対多」の関係を網上に表現。データの操作において、親レコードと子レコードを親子組(セット)とし、親子間や兄弟間のリンクをたどることで、一つのデータを取り出す。
関係データベース:データの集合を平たんな2次元の表で表現したデータベース。親レコードと子レコードという関係を持たない。データ操作によって、レコード間の関連付けを行う。
ANSI/SPARC3層スキーマ
概念スキーマ:実際のデータの物理的な表現方法とは別に、データベースの論理的構造とその内容を定義。論理設計段階の論理データモデル
外部スキーマ:利用者やアプリケーションプログラムから見たデータの定義。ビュー、CODASYLモデル(ネットワーク型データベース)のサブスキーマ
内部スキーマ:外部記憶装置上にどのような形式や編成で記憶するか、その物理的内容の定義。
関係データベース
次数:一組のデータを表す行を構成する列の数
位数:一つの表を構成する行の数
定義域:同一特性を持つ値の集合
関係データベースのキー
スーパーキー:表中の行を一意に特定できる属性、あるいは属性の組
候補キー:行を一意に識別するための必要最小限の属性によって構成されるスーパーキー
主キー:複数存在する候補キーの中から任意に選んだ一つの候補キー
代替キー:主キーに選ばれなかった残りの候補キー
外部キー:別の表の主キーを参照する属性、あるいは属性の組。
データベース管理システム
@ データベース管理システムの目的データベース管理システム(DBMS)は、データベースの作成、管理、操作を効率的に行うためのソフトウェアです。DBMSの目的は、データの一貫性、効率性、信頼性を確保することであり、以下のような代表的な機能を持っています。
データベース定義機能
データベースの構造を定義する機能です。これには、テーブルの作成、列の定義、インデックスの作成、ビューの作成などが含まれます。SQLのCREATE文やALTER文などが使用されます。
データベース操作機能
データベースに対するデータの操作を行う機能です。データの挿入、更新、削除、検索などが含まれます。SQLのSELECT文、INSERT文、UPDATE文、DELETE文などが使用されます。
データベース制御機能
データベースのアクセス制御やトランザクション管理を行う機能です。複数のユーザーが同時にデータベースを操作する際に、データの整合性を保つためのロック機構やトランザクションの開始、コミット、ロールバックなどが含まれます。
保全機能
データの整合性と一貫性を維持するための機能です。制約(例えば、主キー制約や外部キー制約)の設定や、トリガーを使用して特定の操作が行われた際に自動的に実行される処理を定義することが含まれます。
データ機密保護機能
データのセキュリティを確保するための機能です。ユーザーの認証、権限の設定、アクセス制御などが含まれます。これにより、特定のユーザーだけが特定のデータにアクセスできるように制御します。
DBMSには、データの構造に応じて階層型、網型、関係型の3種類があります。
階層型DBMS
データを階層構造で管理します。ツリー構造を使用し、親子関係が明確に定義されています。IBMのIMS(Information Management System)が代表的です。
網型DBMS
データをグラフ構造で管理します。データ間の関係がネットワーク状に定義され、複数の親を持つことができます。CODASYL(Conference on Data Systems Languages)DBMSが代表的です。
関係型DBMS
データを表(テーブル)形式で管理します。データは行と列で表され、SQLを使用して操作します。Oracle、MySQL、PostgreSQLなどが代表的です。
DBMSのマネジメント機能を活用することで、データベースの開発や保守を効率的に行うことができます。これには、データベースの設計、バックアップとリカバリ、パフォーマンスチューニング、監査などが含まれます。
A 同時実行制御(排他制御)複数のアプリケーションプログラムが一つのデータベースに同時にアクセスするとき、データの一貫性と整合性を保つために、以下のような制御方法が必要です。
トランザクション管理
トランザクションとは、一連のデータベース操作を一つの単位として扱うものです。トランザクション管理の目的は、全ての操作が完全に実行されるか、あるいは全く実行されないかを保証することです。これには、ACID特性(Atomicity、Consistency、Isolation、Durability)が重要です。
ロック機構
データベースにおける同時アクセスを制御するためのメカニズムです。ロックは、データの読み書きを行う際に、他のトランザクションが同時に同じデータにアクセスできないようにするための制御です。ロックには、次の種類があります。
- 排他ロック(Exclusive Lock):データを書き込む際に使用され、他のトランザクションがそのデータを読むことも書くこともできません。
- 共有ロック(Shared Lock):データを読む際に使用され、他のトランザクションはそのデータを読むことはできますが、書くことはできません。
デッドロック回避
デッドロックとは、複数のトランザクションが互いに相手のロックを待ち続ける状態です。デッドロックを回避するためには、次のような方法が取られます。
- タイムアウト:一定時間ロックを待った後にトランザクションを中断する。
- デッドロック検出と回復:デッドロックが発生した場合に、それを検出し、どちらかのトランザクションを中断して回復する。
隔離レベル
トランザクションが同時に実行される際の干渉を制御するための設定です。隔離レベルには、次の種類があります。
- 未確認読み取り(Read Uncommitted):他のトランザクションがコミットしていない変更を読み取ることができます。
- 確認済み読み取り(Read Committed):他のトランザクションがコミットした変更のみを読み取ることができます。
- 可変読み取り(Repeatable Read):トランザクションが開始された時点から一貫して同じデータを読み取りますが、ファントムリードが発生する可能性があります。
- シリアライズ可能(Serializable):最も厳しい隔離レベルで、ファントムリードを含む全ての問題を防ぎます。
これらの制御方法を適切に利用することで、複数のアプリケーションプログラムが同時にデータベースにアクセスしても、データの整合性と一貫性を保つことができます。
B 障害回復 ```htmlデータベースに障害が発生した場合、システムはデータの一貫性と整合性を保つために障害回復機能を利用します。以下に、代表的な障害回復機能と回復手順を示します。
障害回復機能
トランザクションログ
トランザクションログは、データベースへのすべての変更を記録する仕組みです。ログには、トランザクションの開始、変更内容、コミット、ロールバックの情報が含まれます。このログを使用することで、障害発生時にデータベースを以前の一貫した状態に戻すことができます。
チェックポイント
チェックポイントは、データベースの現在の状態を保存するためのマーカーです。定期的にチェックポイントを設定することで、障害回復時にログを全て読み込む必要がなくなり、回復時間を短縮できます。
シャドウページング
シャドウページングは、データベースの変更を元のページとは別のコピー(シャドウページ)に書き込む技術です。トランザクションがコミットされると、シャドウページが元のページと入れ替わります。これにより、障害発生時に未コミットの変更が反映されないようにします。
ミラーリング
ミラーリングは、データベースの複製を別の物理ディスクに保存する方法です。これにより、ハードウェア障害時にもデータを復元することができます。
障害回復手順
1. 障害の検出
障害が発生すると、システムは障害を検出し、直ちに対応を開始します。検出には監視ツールやアラートシステムが使用されます。
2. システムの停止と診断
障害が検出された場合、システムは必要に応じてデータベースを停止し、障害の原因を診断します。診断にはログファイルやエラーメッセージが利用されます。
3. データの復元
障害の診断後、トランザクションログを使用してデータベースの一貫した状態に復元します。チェックポイントを利用することで、復元時間を短縮できます。
4. データの検証
データベースが復元された後、データの整合性と一貫性を確認します。必要に応じて、追加のテストや検証を行います。
5. システムの再起動
データの復元と検証が完了したら、データベースを再起動し、通常の運用を再開します。
6. レポートと改善
障害発生時の対応状況を記録し、レポートを作成します。再発防止のための改善策を検討し、必要に応じてシステムやプロセスを更新します。
これらの障害回復機能と手順を適切に活用することで、データベースシステムの信頼性と耐障害性を向上させることができます。
``` C データセキュリティデータを共有する際にセキュリティを確保するために重要な方法は以下の通りです。
トランザクション
トランザクションは、データベースにおいて一連の処理をまとめて管理する仕組みです。トランザクション内で行われた処理は、すべて成功するか失敗するかのいずれかで、中途半端な状態になることはありません。
ロック
ロックは、複数のプロセスが同時にデータにアクセスすることを制御するための手法です。ロックを使用することで、データの整合性を保ちながら競合を防ぐことができます。
デッドロック
デッドロックは、複数のプロセスがお互いに相手のロックを待ち続ける状態です。デッドロックが発生すると、プロセスが停止し、システム全体が停滞する可能性があります。デッドロックを回避するために、適切なロックの取り扱いが重要です。
ACID 特性
ACID 特性は、トランザクションが安全に実行されるための条件を表します。ACID とは、原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、永続性(Durability)の頭文字を取ったものです。データベースの操作が ACID 特性を満たすことで、データの整合性と信頼性が確保されます。
データ辞書
データ辞書は、データベースに関する情報を記録するためのデータ構造です。データ辞書には、テーブルや列の定義、インデックス、制約などのメタデータが含まれます。データ辞書を適切に管理することで、データの正確性とセキュリティを確保することができます。
これらの方法を組み合わせて利用することで、データの共有とセキュリティを確保することが可能です。
```データベース設計
データ分析
データ分析を行う際の考え方には、以下のようなポイントがあります。
- 対象業務にとって必要なデータの特定: ビジネスプロセスや業務フローを分析し、どのデータが業務に不可欠かを特定します。
- データの意味と関連の理解: 各データがどのような意味を持ち、他のデータとどのような関連性を持っているかを分析して整理します。
- 異音同義語、同音異義語の排除: データ項目の標準化を行い、異なる表記方法や同じ意味を持つ異なる用語を統一します。
- データ重複の排除: データベース内で重複するデータを特定し、削除や統合を行うことでデータの整合性を確保します。
- メタデータの活用: データの特性や属性を記述するメタデータを活用し、データの意味や使い方を明確にします。
- データディクショナリ: データ項目や属性、定義、関連などのデータに関する情報を一元管理するデータディクショナリを活用し、データの整合性と正確性を保ちます。
また、データモデルの作成手法には、トップダウンアプローチとボトムアップアプローチの二つがあります。
- トップダウンアプローチ: ビジネス要件や業務プロセスから出発し、上位レベルから下位レベルに向かってデータモデルを構築していく手法です。ビジネス全体の視点からデータを分析し、必要なデータを特定してから、詳細なデータモデルを作成します。
- ボトムアップアプローチ: 実際のデータやシステムから出発し、現存するデータやシステムの解析を行いながらデータモデルを構築していく手法です。既存のデータやシステムから必要なデータを抽出し、それを基にデータモデルを構築します。
これらの考え方や手法を活用することで、効果的なデータ分析とデータモデルの構築が可能となります。
データベースの設計
@ データベース開発工程データベース開発の工程と手順は以下の通りです。
- システム分析: ビジネス要件やユーザー要求を分析し、システムの機能やデータベースの必要性を把握します。
- 要求定義: システムの要件を明確に定義し、開発に必要な機能や性能、制約条件を文書化します。
- 企業データモデル: システム全体のデータ要件を整理し、ビジネス全体の視点からデータモデルを設計します。
- 外部設計: ユーザーインターフェースやシステムの動作仕様を設計し、外部から見たシステムの機能や振る舞いを定義します。
- 概念データモデル: データモデルの概念を抽象化し、ビジネス要件に基づいてデータの論理的な構造を設計します。
- 内部設計: データベースの物理的な構造や処理方法を設計し、データの格納方法やアクセス方法を定義します。
- 論理データモデル: 概念データモデルを具体化し、データの関係や属性を定義します。
- プログラム作成: データベースシステムやアプリケーションのプログラムを開発します。
- テスト: 開発したシステムやデータベースをテストし、品質や動作の確認を行います。
- 移行: 開発したシステムやデータベースを本番環境に移行し、運用を開始します。
これらの工程と手順を遵守することで、効率的で品質の高いデータベース開発が実現します。
A データベースの概念設計概念設計では、要求定義で定義されたデータ項目と、システム機能設計の際に発生したデータ項目をまとめ、データ項目全体を設計します。
また、DBMS に依存しないデータの関連を表現する手法として、E-R 図や UML を使用した構成要素、属性、関連の表し方、特徴、カーディナリティ(1 対 1、1 対多、多対多)などを理解します。
これらの手法を使用することで、システムのデータ構造や関連を視覚的に理解し、データモデルを効果的に設計することが可能です。
B データベースの論理設計データの重複や矛盾が発生しないテーブル(表)設計の考え方では、主キー、外部キーなどの概念を活用します。
主キーはテーブル内の各レコードを一意に識別するためのフィールド(列)であり、データの重複を排除します。
外部キーは、複数のテーブル間の関係性を表現するためのフィールドであり、異なるテーブルのレコード間の関連付けを可能にします。
一貫性制約は、データの整合性を確保するための制約です。一意性制約は、特定のフィールドや組み合わせが一意であることを保証し、参照制約は外部キーの整合性を確保します。検査制約は、特定の条件が満たされることを保証します。
また、ユーザービューは、データベース内の特定のデータに対するユーザー向けのカスタムビューを定義し、データへのアクセスを制御します。
データ中心アプローチ(DOA:Data Oriented Approach):対象業務のモデル化を行う際、データが最も安定した情報資源であること、また共有資源であることに着目して、資源側からシステム、ソフトウェアの分析や設計を行うという考え方。
事象応答分析:外部からの事象とその事象に対する応答のタイミング的、時間的な関係をすべて抽出し、制御の流れを分析すること。
データベースの設計
必要なデータは何かをはじめ、データの意味、内容、データ同士がどのような関連を持っているかに重点を置いて分析。データ分析作業において、データの名称、型、桁数などの属性を一定の基準によって標準化するデータ項目の標準化やデータを整理し、各データ項目間の関連をさらに明確にする正規化も行われる。
トップダウンアプローチ:企業モデル(理想型E−Rモデル)からデータ分析
ボトムアップアプローチ:データ分析から現実型E−Rモデル
概念設計
E−Rモデル:データベースの概念設計において、実世界のデータをモデル化(形式化)するツールの一つ。実世界にあるデータ構造を実体(エンティティ)の集合とそれぞれの実体間の関連(リレーションシップ)とでとらえ図式化
論理設計:概念データモデルを論理データモデルと言われるデータベース構造モデルへ変換。階層モデル・ネットワークモデル・関係モデル
物理設計
データの正規化
完全関数従属,部分関数従属,推移関数従属正規化
部分関係従属:ある非キー項目が、主キーの一部によっても一意に決められる関係のこと
完全関数従属:ある非キー項目について、主キーの全体が決まらなければ、一意に決めることができない関係。
推移的関数従属:ある非キー項目が主キーによってだけではなく、特定の非キー項目によっても一意に定められる関係。
第一正規化:集団項目や繰り返し項目を排除する操作
第二正規化:主キーの一部分である項目に部分関数従属している項目を別の表に分割。すべての項目が完全関数従属である状態にする。
第三正規化:非キー項目に関数従属している項目を別の表に分割し、推移的関数従属を解消した状態にする。
正規化は、データベース設計においてデータの整合性や冗長性を減らし、データの効率的な管理を可能にするためのプロセスです。以下は正規化の手順と各段階の概要です:
-
第1正規化(1NF):
- 各列には1つの値のみが存在し、その値はアトミックである必要があります。
- 重複のない値を持つ単一の属性のみが含まれる単一のテーブルです。
-
第2正規化(2NF):
- 第1正規化を満たしている必要があります。
- 非キー属性がキーに完全に関数従属している必要があります。
- 部分関数従属を排除するため、テーブルを分割することがあります。
-
第3正規化(3NF):
- 第2正規化を満たしている必要があります。
- すべての非キー属性がキーに対して推移的でない関数従属である必要があります。
- さらにテーブルを分割し、依存関係を解決します。
正規化の目的は、データの冗長性を減らし、データの整合性を維持することです。このプロセスを通じて、データの修正や更新が容易になり、データベースのパフォーマンスが向上します。しかし、正規化を過度に行うと、複雑さやクエリの実行コストが増加する場合があります。したがって、データモデルの正規化は、更新容易性や性能などの観点からバランスを取る必要があります。
データベースのパフォーマンス設計
パフォーマンスを重視したデータベース設計の一環として、正規化を優先せず、非正規化を選択する場合があります。非正規化は、データベースの冗長性を増やすことで、特定のクエリやデータ操作を高速化することを目的としています。
非正規化の手法には、以下のようなものがあります:
- データの結合を削減: 正規化によって分割された複数の表を結合する必要がある場合、非正規化を行うことで結合操作を削減し、クエリの実行時間を短縮します。
- 冗長データの導入: よく利用されるクエリの結果をキャッシュし、データの冗長性を許容することで、クエリの実行速度を向上させます。
- 索引の活用: よく利用されるクエリに対して適切な索引を作成し、クエリのパフォーマンスを向上させます。
非正規化を行う場合、データの整合性や冗長性に注意する必要があります。冗長性が増すことでデータの不整合が発生するリスクが高まりますが、パフォーマンスの向上を優先する場合はこのトレードオフを受け入れることがあります。
データベースの物理設計
データベースの物理設計では、データへのアクセス効率や記憶効率を最適化することが重要です。以下に、物理設計における留意事項や用語を示します:
- ディスク容量見積り: データベースのサイズを見積もり、適切なディスク容量を確保することが重要です。
- 論理データ構造のマッピング: 論理データベース構造を物理的なデータベース構造にマッピングするプロセスです。
- ファイル編成: データをどのようにファイルに配置するかを計画し、ディスク上でのデータの配置を最適化します。
- 最適ブロック設計: データのブロックサイズや配置を最適化し、データアクセスの効率を向上させます。
- 物理入出力: データベースがディスクにアクセスする方法やプロセスを指します。
- 性能評価: 物理設計の効果を評価し、性能向上のポイントを特定します。
- コンプレッション: データを圧縮して記憶効率を向上させる方法です。
- デコンプレッション: 圧縮されたデータを元の形式に戻すプロセスです。
- 性能改善ポイント: 物理設計におけるさまざまな改善点や最適化手法を指します。
- インメモリデータベース: メモリ内にデータを格納することで、アクセス速度を向上させるデータベースの形式です。
データベースの作成手順
1. データベース環境の準備:
まず、データベースをホストするサーバーを選定し、必要なソフトウェア(DBMS)をインストールします。
2. 入力データの準備:
データベースに格納するデータを収集し、適切な形式で整理します。必要に応じて、データの変換や前処理を行います。
3. データベースの定義:
DBMSを使用してデータベースを定義します。これには、データベースの構造やテーブルの定義、列の設定、関係性の設定などが含まれます。
4. データの登録:
定義したデータベースに実際のデータを登録します。これは、INSERT文やロード処理などを使用して行います。
5. データベースの検証:
登録したデータが正しく格納されているかどうかを確認し、必要に応じて修正を行います。また、データベースのパフォーマンスやセキュリティなども検証します。
データベースの評価・運用
データベースの性能評価は、データベースの運用・保守の重要な側面の一つです。以下は、性能評価方法と対応策に関する一般的な考え方です:
1. ベンチマークテスト:データベースの負荷を模擬するためのテストを行い、性能を評価します。一般的なベンチマークテストには、トランザクション処理の速度やデータベースへの同時アクセス数などが含まれます。
2. モニタリングとパフォーマンス分析:データベースの運用中に、システムのモニタリングとパフォーマンス分析を行います。これにより、ボトルネックやリソースの使用状況などの問題を特定し、性能を改善するための手がかりを得ることができます。
3. チューニング:性能が低下している箇所を特定し、それらを改善するための調整を行います。これには、クエリの最適化、インデックスの追加、キャッシュの最適化などが含まれます。
4. 再編成:データベースの再構築やリファクタリングを行い、性能向上を図ります。これには、データの再配置やデータモデルの変更などが含まれます。
5. スケーリング:データベースの性能を向上させるために、ハードウェアやソフトウェアのスケーリングを検討します。これには、より高性能なサーバーへの移行や、クラウドサービスの利用などが含まれます。
データベースの性能評価と対応策の実施により、データベースの適切な運用・保守が行われ、システム全体の効率と信頼性が向上します。
オブジェクト指向データベース
オブジェクト指向データベース(OODB)が開発された背景には、従来の関係データベースが扱いにくい複雑なデータ構造やデータ型を効率的に管理する必要性がありました。特に、オブジェクト指向プログラミング言語の普及に伴い、データベースもオブジェクト指向の概念を取り入れることで、システム全体の統一性と効率性を高めることが求められました。
オブジェクト指向データベースの特徴と利用方法について、以下の点が挙げられます:
1. オブジェクト指向データモデル:オブジェクト指向データベースは、オブジェクト指向プログラミングの概念を取り入れています。これにより、データとその操作を一体化したオブジェクトとして管理することができます。
2. 複合オブジェクト:オブジェクト指向データベースでは、複雑なデータ構造を持つオブジェクトを階層的に表現することができます。これにより、複数の属性やメソッドを持つ複合オブジェクトを効率的に管理できます。
3. オブジェクト識別性:各オブジェクトには一意の識別子が割り当てられ、データベース内で一意に識別されます。これにより、データの一貫性と参照の整合性が確保されます。
4. O/R マッピング:オブジェクト/関係(O/R)マッピングは、オブジェクト指向データベースと関係データベースの統合を図る技術です。これにより、オブジェクト指向プログラムと関係データベースの間でデータのやり取りが容易になります。
5. XML データベース:XMLデータベースは、XML形式のデータを効率的に管理するためのデータベースです。オブジェクト指向データベースと同様に、複雑なデータ構造を持つデータを扱うのに適しています。
オブジェクト指向データベースは、複雑なデータ構造を持つデータの保存、管理、および操作を効率化するために利用されています。特に、CAD/CAMシステム、マルチメディアデータ管理、科学技術計算など、従来の関係データベースでは扱いにくいデータを管理する分野で広く活用されています。
データ操作
データベースの操作
関係代数関係データベースの演算
選択:表から指定した行を取り出す関係演算
射影:表から指定した列を取り出す関係演算
結合:二つの表が共通に持つ項目(結合列)で結合を行い、新しい表を作り出す関係演算
外結合:結合相手の表に該当するデータが存在しない場合、それをNULL値(空値)として結合する方法
左外結合:結合する左の表を基準にして、右の表に存在しない行をNULL値として結合。
右外結合:結合する右の表を基準にして、左の表に存在しない行をNULLといて結合
完全外結合:片方のみに存在する場合、もう片方をNULLとして結合。
関係データベースのデータ操作において、集合演算および関係演算は基本的な操作方法です。これらの操作を理解することは、データの効率的な管理と利用に不可欠です。
集合演算:
1. 和(Union):2つの関係(テーブル)に含まれる全てのタプル(行)を結合し、重複を除去した新しい関係を生成します。例えば、AテーブルとBテーブルの和は、AまたはBに存在する全てのタプルを含みます。
2. 差(Difference):ある関係に含まれるが、他の関係には含まれないタプルを抽出します。例えば、AテーブルとBテーブルの差は、Aに存在しBには存在しないタプルを含みます。
3. 積(Intersection):2つの関係に共通して含まれる全てのタプルを抽出します。例えば、AテーブルとBテーブルの積は、AにもBにも存在するタプルを含みます。
4. 直積(Cartesian Product):2つの関係の全ての組み合わせを生成します。例えば、AテーブルとBテーブルの直積は、Aの各タプルとBの各タプルの全ての組み合わせを含みます。
関係演算:
1. 選択(Selection):特定の条件を満たすタプルを抽出します。選択は、行をフィルタリングする操作です。例えば、Aテーブルの中で「年齢が30以上」のタプルを抽出する場合です。
2. 射影(Projection):特定の属性(列)だけを抽出します。射影は、不要な列を取り除く操作です。例えば、Aテーブルから「名前」と「年齢」の列だけを抽出する場合です。
3. 結合(Join):2つの関係を指定した条件に基づいて結合し、新しい関係を生成します。最も一般的な結合は自然結合で、共通の属性を持つタプルを結合します。例えば、AテーブルとBテーブルを「ID」で結合する場合です。
4. 商(Division):ある関係から特定の属性を含むタプルを取り除き、残りの属性だけを持つ新しい関係を生成します。商は、逆関係のような操作を行います。例えば、AテーブルをBテーブルで割るとき、Bに存在する全ての属性を持つタプルをAから抽出します。
これらの操作を理解し、適用することで、関係データベースのデータを効果的に操作し、必要な情報を迅速に抽出することができます。
データベース言語
@ データベース言語の種類データベース言語は、データベースの定義や操作を行うための言語で、大別するとDDL(Data Definition Language:データ定義言語)とDML(Data Manipulation Language:データ操作言語)の2種類があります。これらの言語を理解することは、データベースの設計および運用において重要です。
DDL(Data Definition Language:データ定義言語):
DDLは、データベースの構造を定義するための言語です。主なDDLコマンドには、次のようなものがあります:
- CREATE:データベースオブジェクト(テーブル、インデックスなど)を新規に作成します。
- ALTER:既存のデータベースオブジェクトの構造を変更します。
- DROP:データベースオブジェクトを削除します。
これらのコマンドを使用することで、データベースのスキーマを定義および管理します。
DML(Data Manipulation Language:データ操作言語):
DMLは、データベース内のデータを操作するための言語です。主なDMLコマンドには、次のようなものがあります:
- SELECT:データを検索および取得します。
- INSERT:新しいデータをデータベースに追加します。
- UPDATE:既存のデータを更新します。
- DELETE:データを削除します。
これらのコマンドを使用して、データベースの内容を操作し、必要なデータを取得したり変更したりします。
これらのデータベース言語には、SQLを単独で使用する独立言語方式と、他のプログラム言語から使用する親言語方式があります:
独立言語方式:
SQLを直接使用してデータベースに対してコマンドを実行します。これには、次のような方法があります:
- 会話型SQL:SQLコマンドを対話的に入力し、実行結果を即座に確認する方法です。
- モジュール言語:一連のSQLコマンドをモジュールとして定義し、再利用可能な形で実行する方法です。
親言語方式:
SQLを他のプログラム言語から呼び出して使用する方法です。これには、次のような方法があります:
- 埋込型SQL:プログラム言語のコード内にSQL文を埋め込んで使用する方法です。例えば、C言語やJavaなどからSQLを呼び出すことができます。
- コマンド方式:特定のプログラムからSQLコマンドを実行する方法です。
データベースの操作や管理において、これらのDDLおよびDMLの理解と使い分けが重要です。各方式の特性を理解し、適切に選択することで効率的なデータベース管理が可能となります。
A データベース言語(SQL) (a)データ定義言語データベースにおけるスキーマ、テーブル、ビュー、処理権限を定義するためのSQL文について理解することは、データベース設計および管理において重要です。また、データ型や列制約、表制約の定義方法、ビューの更新についても理解する必要があります。
スキーマの定義
スキーマはデータベースオブジェクト(テーブル、ビュー、インデックスなど)の集合です。スキーマを定義するSQL文の例は次のとおりです:
CREATE SCHEMA schema_name;
テーブルの定義
テーブルはデータを格納する基本的な構造です。テーブルを定義するSQL文の例は次のとおりです:
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
...
columnN datatype constraint
);
例えば:
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
BirthDate DATE
);
ビューの定義
ビューはテーブルの仮想的な表現です。ビューを定義するSQL文の例は次のとおりです:
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
例えば:
CREATE VIEW EmployeeNames AS
SELECT FirstName, LastName
FROM Employees
WHERE BirthDate IS NOT NULL;
処理権限の定義
処理権限はユーザーがデータベースオブジェクトに対してどのような操作を行えるかを定義します。処理権限を付与するSQL文の例は次のとおりです:
GRANT SELECT, INSERT, UPDATE ON table_name TO user_name;
処理権限を取り消すには:
REVOKE SELECT, INSERT, UPDATE ON table_name FROM user_name;
データ型
データ型はテーブルの各列がどのような種類のデータを格納するかを定義します。代表的なデータ型には次のようなものがあります:
文字型:CHAR(n), VARCHAR(n)
数値型:INT, FLOAT, DECIMAL(p,s)
日付型:DATE, TIMESTAMP
列制約と表制約
列制約は特定の列に対して適用される制約で、表制約はテーブル全体に対して適用される制約です。主な制約には次のようなものがあります:
一意性制約:一意の値を持たなければならない列に適用します。UNIQUE
参照制約:他のテーブルの列と一致する必要がある列に適用します。FOREIGN KEY
検査制約:特定の条件を満たす必要がある列に適用します。CHECK
非NULL制約:NULL値を許可しない列に適用します。NOT NULL
例えば:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE NOT NULL,
CustomerID INT,
CHECK (OrderDate > '2000-01-01')
);
ビューの更新
ビューの更新は、ビューに対してINSERT、UPDATE、DELETE操作を行うことを指します。ビューの更新可能性は、ビューの定義によって異なります。
更新可能なビュー:単一テーブルに基づいており、JOINや集約関数を含まないビューです。
更新不可能なビュー:複数のテーブルに基づくビューや、集約関数を含むビューです。
例えば、次のビューは更新可能です:
CREATE VIEW SimpleView AS
SELECT FirstName, LastName
FROM Employees;
データベース設計において、これらのSQL文と概念を理解し、適切に利用することが重要です。各機能や制約を正しく適用することで、データの整合性と効率的な操作を実現できます。
(b)データ操作言語(SELECT 文)データベースにおいて、要求されるデータを選択するために使用されるSQLのSELECT文は強力なツールです。SELECT文を使用して、条件を指定した特定の行や列の選択、表の結合、BETWEENやINなどの述語指定、集合関数、グループ化、並べ替えなどを行うことができます。
SELECT文の基本構文
SELECT文は次のように使用します:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
例えば:
SELECT FirstName, LastName
FROM Employees
WHERE Department = 'Sales';
特定行や列の選択
特定の列だけを選択する場合:
SELECT FirstName, LastName FROM Employees;
特定の条件に一致する行を選択する場合:
SELECT * FROM Employees WHERE Age > 30;
表の結合
複数の表を結合してデータを取得する場合:
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
BETWEEN や IN などの述語指定
特定の範囲に含まれるデータを選択する場合、BETWEENを使用します:
SELECT * FROM Employees WHERE Age BETWEEN 25 AND 35;
特定のリストに含まれるデータを選択する場合、INを使用します:
SELECT * FROM Employees WHERE Department IN ('Sales', 'HR', 'IT');
集合関数
集合関数(集約関数)は、一連の値に対して計算を行う関数です。主な集合関数には次のものがあります:
COUNT:行の数をカウントします。
SELECT COUNT(*) FROM Employees;
SUM:列の合計を計算します。
SELECT SUM(Salary) FROM Employees;
AVG:列の平均値を計算します。
SELECT AVG(Age) FROM Employees;
MAX:列の最大値を取得します。
SELECT MAX(Salary) FROM Employees;
MIN:列の最小値を取得します。
SELECT MIN(Age) FROM Employees;
グループ化
データをグループ化して集計を行う場合、GROUP BY句を使用します:
SELECT Department, COUNT(*)
FROM Employees
GROUP BY Department;
並べ替え
データを特定の順序で並べ替える場合、ORDER BY句を使用します:
SELECT * FROM Employees ORDER BY LastName ASC;
SELECT * FROM Employees ORDER BY Salary DESC;
パターン文字列
LIKE述語を使用して、特定のパターンに一致するデータを選択します:
SELECT * FROM Employees WHERE LastName LIKE 'S%';
相関名(エイリアス)
テーブルや列に短い別名をつけて使用することができます:
SELECT E.FirstName, E.LastName
FROM Employees AS E;
副問合せ
サブクエリ(副問合せ)は、他のSELECT文の中でネストされたSELECT文です:
SELECT FirstName, LastName
FROM Employees
WHERE DepartmentID = (SELECT DepartmentID FROM Departments WHERE DepartmentName = 'HR');
相関副問合せ
相関副問合せは、外部のクエリに依存するサブクエリです:
SELECT E1.FirstName, E1.LastName
FROM Employees E1
WHERE E1.Salary > (SELECT AVG(E2.Salary) FROM Employees E2 WHERE E2.DepartmentID = E1.DepartmentID);
これらのSQL文と概念を理解することで、効率的にデータを取得し、要求に応じたデータベース操作を行うことができます。
(c)その他のデータ操作言語SQL(Structured Query Language)は、データベース管理システム(DBMS)に対する操作を行うための言語です。INSERT文、UPDATE文、DELETE文は、データベースのデータを操作するための主要なSQL文です。これらの文を理解することで、データベースへのデータの挿入、更新、削除を行うことができます。
INSERT文
INSERT文は、新しいデータをテーブルに追加するために使用します。
基本構文:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
例えば、Employeesテーブルに新しい従業員を追加する場合:
INSERT INTO Employees (FirstName, LastName, Age, Department) VALUES ('John', 'Doe', 30, 'Sales');
UPDATE文
UPDATE文は、既存のデータを更新するために使用します。
基本構文:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
例えば、特定の従業員の年齢を更新する場合:
UPDATE Employees SET Age = 31 WHERE EmployeeID = 1;
DELETE文
DELETE文は、テーブルからデータを削除するために使用します。
基本構文:
DELETE FROM table_name WHERE condition;
例えば、特定の従業員を削除する場合:
DELETE FROM Employees WHERE EmployeeID = 1;
これらのSQL文を使う際には、特にDELETE文とUPDATE文でWHERE句を指定することが重要です。WHERE句を指定しないと、テーブル内のすべての行が削除または更新されてしまう可能性があるため、注意が必要です。
(d)埋込型 SQL埋込型SQLは、汎用プログラミング言語(親言語)にSQLコードを埋め込んでデータベース操作を行う方法です。これにより、SQLとプログラムコードを一体化させることで、データベースの操作が効率的になります。
埋込型SQLの利点としては以下が挙げられます:
利点:
- 一体化された開発環境:SQLと親言語を一緒に使用することで、データベース操作がシームレスに行える。
- 効率的なデータ操作:プログラムから直接データベース操作が可能となり、効率的なデータ処理が可能になる。
- 複雑なデータ処理の簡略化:複雑なビジネスロジックを親言語で記述しながら、SQLでデータベース操作を行うことができる。
カーソル操作は、SQLクエリの結果セットを一行ずつ処理するための方法です。これにより、結果セットを逐次処理しながら操作を行うことができます。
カーソル操作の主要なSQL文:
カーソルの宣言:
DECLARE cursor_name CURSOR FOR select_statement;
例えば:
DECLARE employee_cursor CURSOR FOR SELECT EmployeeID, FirstName, LastName FROM Employees;
カーソルのオープン:
OPEN cursor_name;
例えば:
OPEN employee_cursor;
カーソルからの読み込み:
FETCH NEXT FROM cursor_name INTO variable_list;
例えば:
FETCH NEXT FROM employee_cursor INTO @EmployeeID, @FirstName, @LastName;
カーソルのクローズ:
CLOSE cursor_name;
例えば:
CLOSE employee_cursor;
カーソルの解放:
DEALLOCATE cursor_name;
例えば:
DEALLOCATE employee_cursor;
非カーソル操作は、結果セット全体を一度に操作する方法です。これにより、シンプルなクエリであればより高速に処理できますが、逐次処理が必要な場合にはカーソル操作が適しています。
以下は非カーソル操作の例です:
特定条件のデータを更新:
UPDATE Employees SET Age = Age + 1 WHERE Department = 'Sales';
特定条件のデータを削除:
DELETE FROM Employees WHERE HireDate < '2000-01-01';
これらの埋込型SQLとカーソル操作を活用することで、より柔軟で効率的なデータベース操作が可能となります。
SQL
データ定義言語
CREATE:スキーマ、表、by-などを定義
DROP:表やビューなどの削除
GRANT:表に対するアクセス権の付与
REVOKE:アクセス権の削除(取り消し)
データ操作言語
SELECT:データの検索
INSERT:データの挿入
UPDATE:データの更新
DELETE:データの削除
COMMIT:データベースの更新処理の確定
ROLLBACK:データベースの更新処理の取り消し
DECLARE CURSOR:カーソルの割り当て(カーソルの宣言)
OPEN:カーソルのオープン
FETCH:カーソルが指示する行の取り出し
CLOSE:カーソルのクローズ
INSERT文の構文
挿入する値をVALUES句で指定
INSERT INTO 表名[(列名リスト)] VALUES(値リスト)
問い合わせの結果をすべて挿入する
INSERT INTO 表名[(列名リスト)] SELECT 文
UPDATE文の構文
UPDATE 表名 SET 列名 = 変更値 [WHERE 条件]
DELETE文の構文
DELETE FROM 表名 [WHERE 条件]
ビューの定義
CREATE VIEW ビュー名 [(列名1,列名2,……)] AS SELECT 文
SELECT文の基本構文
SELECT [DISTINCT]列名のリスト
FROM 表名のリスト
[WHERE 選択条件や結合条件]
[GROUP BY 列名のリスト]
[HAVING グループ選択条件]
[ORDER BY 列名のリスト]
BETWEEN A AND B :A〜B
IN (A,B,C,D) A,B,C,Dのいずれかと等しい NOT IN :否定
パターン文字
% :0文字以上の任意の文字列を意味
- :任意の一文字を意味
GROUP BY句を用いた場合、SELECT句に指定できる要素はGROUP BY句で指定した列名か集約関数だけ
集約関数
SUM(列名):列の値の合計
AVG(列名):列の値の平均
MAX(列名):列の値の中の最大値
MIN(列名):列の値の中の最小値
COUNT(*):行の総数
COUNT(列名):列の値がNULLでない行の総数
EXISTS述語、ANY述語
埋め込み方式
EXEC SQL SELECT 列名リスト INTO:ホスト変数名リスト
FORM 表名
[WHERE 条件]
カーソル処理
宣言:DECLARE カーソル名 CURSOR FOR SELECT 文
カーソルを開く:OPEN カーソル名
一行の取り出し:FETCH カーソル名 INTO 結果受け取りのホスト変数
カーソルを閉じる:CLOCE カーソル名
データ定義言語
CREATE TABLE 表名
(列名1 データ名[列制約]、
…
[表制約])
列制約
PRIMARY KEY 主キー
UNIQUE 候補キー
NOT NULL
REFERENCE 外部キー
DEFAULT
トランザクション処理
同時実行制御(排他制御)
データベースシステムでは、複数のトランザクションが同時にデータにアクセスして更新することが多々あります。データの整合性を保つためには、同時実行制御(排他制御)が重要です。同時実行制御の主な目的は、データの一貫性を保ち、競合によるデータの不整合を防ぐことです。
ロック方式: データベースにアクセスするトランザクションがデータをロックし、他のトランザクションが同じデータにアクセスできないようにする方法です。ロックには以下の種類があります:
- 専有ロック(エクスクルーシブロック、Xロック): 特定のデータ項目に対して独占的にアクセスするためのロック。他のトランザクションはこのデータ項目にアクセスできない。
- 共有ロック(シャアードロック、Sロック): データ項目を読み取るためのロック。他のトランザクションも読み取りは可能だが、更新はできない。
ロック粒度: ロックをかけるデータの範囲を指します。大きな粒度(例: テーブル全体)から小さな粒度(例: 特定の行)までさまざまです。細かい粒度のロックは並行性を高める一方、管理が複雑になります。
デッドロック: 複数のトランザクションが互いにロックを待ち合う状態で、いずれのトランザクションも進行できなくなる現象です。デッドロックを回避するためには、タイムアウトやデッドロック検出と回避のアルゴリズムが必要です。
セマフォ方式: ロックの一種で、データ項目に対するアクセスを管理するためにセマフォ(信号機)を使用します。セマフォはカウンタで管理され、アクセス可能なリソースの数を示します。
コミット制御: トランザクションの終了時にデータベースへの変更を確定する(コミットする)か、変更を取り消す(ロールバックする)かを制御します。
- 1相コミットメント: トランザクションが単一のデータベースシステムで完了し、即座にコミットする方式。
- 2相コミットメント: 分散トランザクションで使用され、コミットの前に各参加データベースが準備完了を確認する方式。これにより、全てのデータベースが一貫した状態を保てる。
多版同時実行制御(MVCC): データの各バージョンを管理し、トランザクションが他のトランザクションに影響を与えずにデータを読み書きできるようにする方式です。これにより、読み取り専用のトランザクションがロックを待つ必要がなくなり、パフォーマンスが向上します。
これらの同時実行制御の方法を理解し適切に利用することで、データベースの整合性とパフォーマンスを維持することができます。
排他制御:表・行など、ロックをかける対象を使用するとき、”占有する”、”共有する”といったモードでコントロールすること
ロック方式
2相ロック方式:使用するデータすべてにロックをかける(1相)、処置後にロックを解除する(2相)トランザクション内で行うロックとその解除は1回だけ。直列可能性は保証されるが、デッドロック発生の可能性は残る。
木規約:データに順番を付け、その順番通りにロックをかけていくことで、デッドロックの発生がない事、また直列可能性を保証する方法。
ロックの種類
占有ロック:データ更新を行う場合に使用されるロックで、データに対するほかのトランザクションからのアクセスは一切禁止。
共有ロック:通常、データの読み取りの際に使用されるロックで、参照のみを許可。
時刻印アルゴリズム:トランザクションが発生した時刻Tとデータの持つ読み込み時間Tr、あるいは読み込み時間Twとを比較し、読み書きの判断を行う方法。読み込みの場合、Tw≦Tの時だけ読み込み処理を行い、読み取った後、読み込み時間Trにトランザクション発生時刻Tを設定。書き込みの場合、Tw≦TかつTr≦Tの時だけ書込み処理を行い、書込み後、書込み時間Twにトランザクション発生時刻Tを設定。
障害回復
データベースシステムは、障害に備えて定期的なバックアップと適切なリカバリ処理が必要です。これにより、データの損失やシステムダウンタイムを最小限に抑えることができます。以下に、バックアップとリカバリの主要な概念と仕組みを説明します。
バックアップの方式:
- フルバックアップ: データベース全体をバックアップする方法です。完全な復元が可能ですが、バックアップに時間と容量がかかります。
- 差分バックアップ: 前回のフルバックアップ以降に変更されたデータのみをバックアップする方法です。フルバックアップよりも迅速で、増分バックアップよりも復元が簡単です。
- 増分バックアップ: 直近のバックアップ以降に変更されたデータのみをバックアップする方法です。バックアップ時間と容量を最小限に抑えますが、復元時にはすべての増分バックアップが必要です。
世代管理の考え方: 複数のバックアップ世代を保持し、障害発生時に任意の過去の状態に復元できるようにする管理方法です。バックアップの世代を管理することで、より柔軟な復元が可能になります。
リカバリ処理の仕組み: 障害発生直前の状態までデータベースを回復するための処理です。以下の手法があります:
- ロールフォワード: 最後のバックアップ以降の変更ログを適用して、最新の状態までデータベースを進める方法です。
- ロールバック: トランザクションの一部またはすべてを取り消して、データベースを以前の一貫した状態に戻す方法です。
データベースの利用環境の準備: バックアップの保存場所、バックアップのスケジュール、バックアップのテストなど、データベースの利用環境を整備することが重要です。
アクセス効率の向上のための再編成: データベースの物理構造やインデックスを再編成して、アクセス速度を向上させる方法です。以下の手法があります:
- チェックポイント: データベースの一貫した状態を定期的に保存するポイントです。これにより、障害発生時により迅速に復元できます。
- ジャーナルファイル(ログファイル): データベースのトランザクション履歴を記録するファイルです。障害発生時にロールフォワードやロールバックに使用されます。
- ダンプファイル: データベースのバックアップを保存するファイルです。リストア時に使用します。
ウォームスタートとコールドスタート: ウォームスタートはデータベースのメモリ状態を保持したまま再起動する方法で、迅速に再起動できます。コールドスタートはシステムを完全に停止してから再起動する方法で、メモリ状態をリセットしますが、時間がかかります。
これらの手法と概念を理解し、適切に組み合わせることで、データベースシステムの信頼性とパフォーマンスを向上させることができます。
障害回復管理
媒体障害:データベースが格納されている記憶媒体にディスク損傷やアクセス故障が発生してデータが使えない状態になる。
システム障害:OSのバグによりシステムがダウンする。
トランザクション障害:アプリケーションプログラムのバグやデッドロック発生によるトランザクション強制終了など
媒体障害からの回復
バックアップファイルとログファイルの更新後ログを用いて、ロールフォワード処理によりデータベースの回復処理を行う。
トランザクション障害からの回復:ログファイルの更新前ログを用いたロールバック処理により、データベースの内容をトランザクション開始時点の状態に戻す。
システム障害からの回復
チェックポイント:バッファからデータベースやログファイルに書き出すタイミング
バックアップファイル:ディスククラッシュなどの媒体障害に備え、磁気ディスクのある時点での記録内容を別媒体に丸ごとコピーしたもの。
ジャーナルファイル(ログファイル・ジャーナルログ):データベースに対して行われたレコードの更新履歴を記憶したログファイルでトランザクションによる更新ごとに開始ログ、データベースに対する更新前後のログ、終了ログなどを記憶したもの。
ロールフォワード:媒体障害発生時にまずチェックポイントよりも以前のバックアップファイルを用いて、バックアップ時点での状態にデータベースを復元。ジャーナルファイルの更新後のログ情報を用いて、時間順序のに従ってデータベースの更新を最新の状態まで進める。正しく完了した更新結果だけを反映させて前進復帰。
ロールバック:トランザクションによる更新処理中にプログラムが異常終了した場合に、データベースをそのままトランザクションの更新開始前の状態に戻す。障害発生などにより、トランザクションが中断した場合、そのトランザクションによる更新内容を取り消して障害直前のチェックポイントに戻り、ジャーナルファイルの更新前の情報を用いて後進復帰を行う方法。
トランザクション管理
トランザクション:データベースの更新やロールバックの単位。更新処理中に別のトランザクションがデータを更新すると、更新結果に矛盾が生じる場合がある。トランザクション処理は「すべて実行される」「すべて取り消す」のいずれかの状態で終わる
ASID特性
原子性(Atomicity):更新処理トランザクションが正常に終了した場合のみデータベースへの反映を保証し、異常終了した場合は処理が何もなかった状態に戻す。
一貫性(Consistency):トランザクションの処理によってデータベース内のデータに矛盾が生じない。
隔離性(Isolation):複数のトランザクションを同時に実行した場合(並行)と、順に実行した場合(直列)の処理結果が一致。
耐久性(Durability):いったん正常終了したトランザクションの結果は、その後、障害が発生してもデータベースから消失しない。
データベースシステムでは、複数の利用者が同時にアクセスするため、トランザクション処理においてデータの整合性と一貫性を保つことが重要です。これを実現するために、トランザクションにはACID特性が求められます。以下に、ACID特性の四つの要素について説明します。
1. Atomicity(原子性): トランザクション内のすべての操作が完全に実行されるか、まったく実行されないかのどちらかであることを保証します。部分的な実行は認められません。もしトランザクションが途中で失敗した場合は、そのトランザクションのすべての操作が取り消されます。
2. Consistency(一貫性): トランザクションが完了すると、データベースは常に一貫した状態になります。これは、トランザクションが実行される前後で、データベースが定義されたルールや制約を常に満たしていることを意味します。例えば、参照整合性やユニーク制約などが守られます。
3. Isolation(分離性): 複数のトランザクションが同時に実行される場合でも、各トランザクションは他のトランザクションから独立して実行されるように見えます。すなわち、あるトランザクションの中間結果が他のトランザクションに影響を与えないことを保証します。これにより、データの一貫性が保たれます。
4. Durability(永続性): トランザクションが成功裏に完了すると、その結果は永続的に保存されます。システムの障害やクラッシュが発生しても、完了したトランザクションのデータは失われません。これを実現するために、データベースシステムはログファイルやジャーナルなどを利用します。
ACID特性は、データベースシステムが信頼性高く、安定して動作するための基本的な要件です。これらの特性を理解し、適切に実装することで、データの整合性と一貫性を保ちながら、安全にトランザクション処理を行うことができます。
データベースの性能向上
データベースへのアクセス効率を向上させるためには、インデックスを有効に活用することが重要です。インデックスは、データベース内のテーブルの検索速度を向上させるための仕組みであり、適切に設計・利用することで、クエリのパフォーマンスを大幅に改善することができます。以下に、インデックスの種類とその活用方法について説明します。
1. インデックス数: 適切な数のインデックスを作成することが重要です。インデックスを増やしすぎると、データの挿入、更新、削除の際に余分な負荷がかかり、パフォーマンスが低下する可能性があります。必要最低限のインデックスを設計することが求められます。
2. 負荷: インデックスを利用することでクエリの検索速度が向上しますが、同時にインデックスの管理にも負荷がかかります。特に、データの挿入や更新の際には、インデックスの更新も必要となるため、その負荷を考慮してインデックスを設計する必要があります。
3. ユニークインデックス: ユニークインデックスは、インデックスが設定された列に対して一意の値を保証します。これにより、重複データの挿入を防ぎ、データの整合性を保つことができます。例えば、プライマリキーやユニークキーにユニークインデックスを設定します。
4. クラスタ化インデックス: クラスタ化インデックスは、テーブル内のデータがインデックスの順序に従って物理的に並べ替えられるインデックスです。これにより、範囲検索やソートが効率的になります。通常、テーブルには一つのクラスタ化インデックスしか作成できません。
以下に、インデックスの活用方法について具体的な例を示します:
- 頻繁に検索される列にインデックスを作成する。例えば、ユーザーデータベースでユーザーIDやメールアドレスにインデックスを設定する。
- データの参照が多く、更新が少ないテーブルには多めのインデックスを設定する。一方で、更新が頻繁なテーブルには必要最低限のインデックスにとどめる。
- 結合操作が多い場合、結合に使用される列にインデックスを作成する。
- 複数列の検索条件に対して複合インデックスを作成する。例えば、姓と名の両方で検索する場合、(姓、名)の順でインデックスを設定する。
インデックスは、データベースの検索パフォーマンスを向上させる強力なツールですが、適切な設計と管理が必要です。インデックスの設計時には、データの特性やアクセスパターンをよく分析し、最適なインデックスを作成することが重要です。
データ制御
データベースを運用する際には、利用者ごとにデータに対するアクセス制御を行うことが非常に重要です。これは、データの機密性、整合性、可用性を保つための基本的なセキュリティ対策です。具体的には、以下のようなアクセス権限を設定することが求められます。
1. データベースに接続する権限: データベースへの接続権限は、ユーザーがデータベースに接続し、操作を開始するための基本的な権限です。この権限がないと、ユーザーはデータベースにアクセスできません。
2. データを検索する権限(参照権限): 参照権限は、ユーザーがデータベース内のデータを検索・閲覧するための権限です。この権限を持つユーザーは、指定されたデータをクエリによって取得できますが、データを変更することはできません。
3. データを新規登録する権限(挿入権限): 挿入権限は、ユーザーがデータベースに新しいデータを追加するための権限です。この権限があると、ユーザーはテーブルに新しい行を挿入できます。
4. データを更新する権限: 更新権限は、ユーザーが既存のデータを変更するための権限です。この権限を持つユーザーは、テーブル内の特定のデータを変更することができます。
5. データを削除する権限: 削除権限は、ユーザーがデータベース内の既存のデータを削除するための権限です。この権限を持つユーザーは、特定のデータをテーブルから削除できます。
以下に、具体的なアクセス制御の例を示します:
- 管理者はすべての権限(接続、参照、挿入、更新、削除)を持つ。
- 一般ユーザーは参照権限のみを持ち、データの閲覧はできるが、データの変更や削除はできない。
- データ入力担当者は参照権限と挿入権限を持ち、データの登録はできるが、既存データの更新や削除はできない。
- データ編集担当者は参照権限、挿入権限、更新権限を持ち、新規データの登録と既存データの編集ができるが、データの削除はできない。
これらのアクセス権限は、データベース管理システム(DBMS)によって管理されます。DBMSは、各ユーザーの権限を設定し、ユーザーが実行する操作を制御することで、データのセキュリティと整合性を維持します。
また、アクセス権限の設定は、定期的に見直すことが重要です。これにより、不要な権限が付与されたままになっているユーザーを特定し、適切な権限の設定を維持することができます。
データベース応用
データベースの応用
データウェアハウス、データマート、OLAP(Online Analytical Processing)、データマイニングなど、データを分析して有効活用する技術は、現代のビジネス環境で重要な役割を果たしています。これらの技術は企業の意思決定をサポートし、業務効率の向上や競争力の強化に寄与します。以下、それぞれの技術の特徴と応用方法について説明します。
1. データウェアハウス(Data Warehouse):
データウェアハウスは、異なるソースからデータを統合し、大量のデータを長期間保存するためのシステムです。データウェアハウスは、OLTP(Online Transaction Processing)システムからデータを収集し、ビジネスインテリジェンス(BI)やデータ分析のために利用されます。これにより、企業は歴史的なデータに基づいた分析や報告が可能となります。
2. データマート(Data Mart):
データマートは、特定の業務部門やユーザーグループに特化したデータウェアハウスのサブセットです。データマートは、特定のビジネスニーズに応じてデータを提供し、ユーザーが迅速に必要な情報を取得できるようにします。例えば、販売部門のためのデータマートは、売上データや顧客データを含むことが多いです。
3. OLAP(Online Analytical Processing):
OLAPは、多次元のデータ分析を可能にする技術で、複雑なクエリを迅速に処理することができます。OLAPシステムは、データをキューブ形式で格納し、異なる角度からデータを分析できます。これにより、ユーザーはデータのトレンド、パターン、および異常を簡単に発見できます。例えば、販売データの地域別、時間別、製品別の分析が可能です。
4. データマイニング(Data Mining):
データマイニングは、大量のデータから有用なパターンや知識を抽出するプロセスです。データマイニング技術は、クラスター分析、回帰分析、決定木、ニューラルネットワークなどのアルゴリズムを使用して、隠れた関係や規則を見つけ出します。これにより、マーケティング戦略の立案やリスク管理などに役立ちます。
応用例:
- 企業会計システムでは、データウェアハウスを使用して財務データを集約し、長期的な財務分析や予測を行います。
- 在庫管理システムでは、OLAPを使用して在庫の動向を分析し、最適な在庫レベルを維持します。
- 営業支援システムでは、データマイニングを活用して顧客の購買パターンを分析し、ターゲットマーケティングを実施します。
- ビッグデータの処理には、ETL(Extract/Transform/Load)プロセスを用いて大量のデータを効率的にデータウェアハウスに取り込みます。
- 文書管理システムでは、データクレンジング技術を使用してデータの品質を向上させ、信頼性の高いデータ分析を実現します。
これらの技術を効果的に活用することで、企業はデータ駆動型の意思決定を行い、業務プロセスの改善や新たなビジネスチャンスの発見に繋げることができます。
データウェアハウス:企業内システムに散在するデータの有効活用を目的に、基幹系データベースや外部のデータを統合し、ユーザにおける効果的な意思決定プロセスを支援するためのデータベース。
データマート:データウェアハウスの中で、目的別・部門別のデータ単位で絞り込んだもの。
データマイニング:データウェアハウス(セントラル・ウェアハウス)の大量の生データから、データパターン(規則性)や因果関係を見つけ出す手法
分散データベース
分散データベースは、複数の物理的に異なるサイト(ノード)に分散して配置されたデータベースシステムです。以下に、分散データベースの特徴、利点、取り扱う上での留意事項、データ同期の仕組み、関連する機能、集中型データベースとの違いについて説明します。
分散データベースの特徴:
- 複数のサイトにデータが分散して保存され、各サイトは独立した処理能力を持つ。
- 分散トランザクションの管理が必要で、データの整合性と一貫性を保つための高度な制御が求められる。
- 透過性が高く、ユーザーは単一のデータベースとして扱うことができる。
分散データベースの利点:
- 高可用性と耐障害性: サイトが複数あるため、あるサイトがダウンしてもシステム全体は稼働を続けることができる。
- スケーラビリティ: 必要に応じて新しいサイトを追加することで、システムの処理能力を容易に拡張できる。
- ローカルなデータアクセス: 各サイトは自身のデータに高速にアクセスでき、全体的な性能が向上する。
取り扱う上での留意事項:
- データ同期の問題: 各サイト間でデータの整合性を保つため、適切な同期機構が必要。
- 通信遅延とネットワークの信頼性: サイト間の通信に依存するため、ネットワークの品質がシステム性能に影響する。
- 管理の複雑さ: 分散環境でのデータベース管理は集中型よりも複雑で、管理コストが増加する可能性がある。
データ同期の仕組み:
- レプリケーション: データを複数のサイトに複製し、データの可用性と信頼性を高める。
- 2相コミットメントプロトコル: 分散トランザクションの整合性を保つため、トランザクションをコミットする前に全サイトの承認を得る。
- コミットシーケンス: トランザクションの順序を制御し、データの一貫性を維持する。
関連する機能:
- 透過性: ユーザーが分散システムを単一システムとして扱えるようにする機能。
- クライアントキャッシュ: データアクセスの高速化のために、クライアント側にデータをキャッシュする機能。
- 同時実行制御: 複数のトランザクションが同時に実行される際にデータの整合性を保つ仕組み。
集中型データベースとの違い:
- 分散性: データが複数のサイトに分散されているのに対し、集中型データベースは一つの場所にデータが集中している。
- 可用性: 分散データベースは高可用性を提供するが、集中型データベースは単一障害点に弱い。
- 管理の複雑さ: 分散データベースは複雑な管理が必要で、集中型データベースは管理が比較的簡単。
その他の関連技術:
- ブロックチェーン: 分散データベースの一種で、コンセンサスアルゴリズムやファイナリティを使用してデータの一貫性を保つ。
- 分散処理フレームワーク: Apache HadoopやApache Sparkなど、分散環境でのデータ処理を効率化するためのフレームワーク。
- CAP定理: 一貫性(Consistency)、可用性(Availability)、分断耐性(Partition Tolerance)の三つの特性を同時に満たすことができないという定理。
これらの要素を理解し、適切に活用することで、分散データベースシステムの性能と信頼性を最大限に引き出すことが可能となります。
分散データベース:データベースをネットワーク上の各サイト(拠点)に分散配置したもの。
資源位置に対する透過性:データ(表)の格納サイトが変更されても、ユーザのアプリケーションや操作法に影響がない事。
データ分割に対する透過性:一つの表が複数のサイトに分割されて格納されても、ユーザがそれを意識せずに利用すること。
水平分割:表を行単位に分割
垂直分割:表を列単位に分割
データ重複に対する透過性:同一のデータが複数のサイトに格納されていても、ユーザがそれを意識せずに利用できること
障害に対する透過性:あるサイトで起こった障害を意識することなく、ユーザがデータベースを利用できること。
データモデルに対する透過性:各サイトにおけるデータベース管理システムが異なったデータモデルであっても、ユーザがそれを意識することなく、データベースを利用できること。
分散データベースの更新同期
レプリケーション:非同期型更新を実現するメカニズムの一つで、マスタデータベースと同じ内容の複製(レプリカ)をほかのサイトに作成しておき、決められた時間間隔でマスタデータベースの内容をほかのサイトに複写する機能
2相コミットメント制御:更新が可能かどうかを確認する第一フェーズと更新を確定する第二フェーズに処理をかけ、各サイトのトランザクションをコミットもロールバックも可能な状態(セキュア状態、中間状態)にしたあと、全サイトがコミットできる場合にだけトランザクションをコミットする
第一フェーズ:主催とは各データベースサイトにセキュア指示を出す。各データベースサイトは、主サイトにコミットの可否(Yes/No)を返答する。このとき各データベースサイトはコミットもロールバックも可能なセキュア状態となる
第二フェーズ:主催とはすべてのデータベースから肯定応答(Yes)が返された場合のみ、各データベースサイトにコミット支持を発行する。もし、ひとつでも否定応答(No)のサインがあったり、一定時間以上経過しても応答がない場合はロールバック指示を発行する。
NoSQL
ビッグデータの基盤技術として利用されるNoSQLデータベースの分類、取り扱う上での留意事項、関連する機能、関係データベース管理システム(RDBMS)との違いについて説明します。
NoSQLデータベースの分類:
- ドキュメント指向データベース: データをドキュメント形式(通常はJSON形式)で保存し、柔軟なスキーマを持つ。例: MongoDB, CouchDB。
- 列指向データベース: データを列単位で格納し、データ分析に適している。例: Apache Cassandra, HBase。
- グラフ指向データベース: ノードとエッジを用いてデータをグラフ構造で表現し、複雑な関係性を持つデータに強い。例: Neo4j, ArangoDB。
- KVS(Key-Value Store): キーと値のペアでデータを保存し、シンプルなデータモデル。例: Redis, Amazon DynamoDB。
取り扱う上での留意事項:
- スキーマの柔軟性: NoSQLデータベースはスキーマが柔軟で、動的に変更可能であるが、その反面データの整合性管理がRDBMSほど厳密でない場合がある。
- 一貫性の保証: CAP定理により、NoSQLデータベースは一貫性(Consistency)、可用性(Availability)、分断耐性(Partition Tolerance)のトレードオフが存在するため、システムの要件に応じた選択が重要。
- 運用の複雑さ: 分散システムの運用には特有の複雑さがあり、適切な管理とモニタリングが必要。
- クエリ言語の違い: SQLとは異なるクエリ言語を使用する場合が多く、運用者や開発者の学習コストがかかる。
関連する機能:
- スケーラビリティ: 水平スケーラビリティを提供し、大規模データの処理に対応できる。
- 高可用性と耐障害性: レプリケーションや自動フェイルオーバー機能を持ち、システムの可用性を確保する。
- 柔軟なデータモデル: 複雑なデータ構造を扱うための柔軟なデータモデルを提供。
関係データベース管理システム(RDBMS)との違い:
- スキーマの固定性: RDBMSは厳密なスキーマを必要とするのに対し、NoSQLはスキーマレスや柔軟なスキーマを持つ。
- データモデル: RDBMSはテーブルベースの関係モデルを使用するが、NoSQLはドキュメント、キー-バリュー、グラフ、カラムなど様々なデータモデルを使用。
- 一貫性のトレードオフ: RDBMSはACID特性を厳密に守るが、NoSQLは可用性や分散性を優先するために一貫性を犠牲にする場合がある(BASE特性)。
- スケーラビリティ: RDBMSは垂直スケーラビリティが主流であるが、NoSQLは水平スケーラビリティを重視。
これらの特徴を理解し、システムの要件に応じたデータベース技術を適切に選択し運用することが重要です。
データ資源管理
データの属性、意味内容、格納場所など、データを管理するための情報(メタデータ)を収集、管理する方法としてデータディクショナリやリポジトリがあります。これらのツールはソフトウェア開発と保守における様々な情報を一元的に管理するために利用されます。
データディクショナリ:
- メタデータの管理: データの属性(データ型、サイズ、制約など)、意味内容(データの意味、ビジネスルールなど)、格納場所(テーブル名、ファイル名、サーバーの場所など)を管理する。
- データの一貫性と品質の向上: メタデータを管理することでデータの一貫性と品質を維持し、データの利用効率を向上させる。
- システムの理解と保守の支援: 開発者や運用担当者がシステム全体のデータ構造や関連を理解しやすくなるため、システムの保守が容易になる。
リポジトリ:
- 一元的な情報管理: ソフトウェア開発や保守に必要な様々な情報(コード、ドキュメント、テストケースなど)を一元的に管理する。
- バージョン管理: 開発過程での変更履歴を管理し、過去の状態に戻すことができるため、開発の効率と信頼性が向上する。
- コラボレーションの支援: チーム内で情報を共有しやすくなり、共同作業が円滑に進む。
用語:
- IRDS(Information Resource Dictionary System): 情報資源辞書システム。企業内の情報資源(データベース、アプリケーション、手順など)を管理するためのシステム。
- 分散ファイルシステム: 複数のサーバーに分散してファイルを格納し、ユーザーが一つのファイルシステムとして利用できるようにするシステム。
- ファクトデータベース: データウェアハウスにおいて、主に数値データや統計データを格納するためのデータベース。
- リファレンスデータベース: 参照データベース。主に標準的なデータや参照用のデータを格納するためのデータベース。
- データベースサービス: クラウドやオンプレミスで提供されるデータベースのサービス。例として、Amazon RDSやGoogle Cloud SQLなどがある。
- 構造化データ: 明確なスキーマを持つデータ。例えば、関係データベースのテーブルのデータ。
- 半構造化データ: 部分的にスキーマが定義されているデータ。例えば、XMLやJSON形式のデータ。
- 非構造化データ: 明確なスキーマを持たないデータ。例えば、テキストファイル、画像、動画など。
- ストリーミングデータ: 連続して生成されるデータ。リアルタイムで処理されることが多い。例として、センサーデータやログデータなど。
- データレイク: 様々な形式のデータを大規模に保存するためのリポジトリ。構造化データ、半構造化データ、非構造化データのすべてを格納できる。
リポジトリ
CASEツールを用いてソフトウェアの開発及び保守における様々な情報(システムを構成するデータの所在やファイルの仕様、プログラム間の関連、各種図表やプログラムなど)を一元的に管理するためのデータベース
各工程での成果物を一元管理することにより、用語の統一化、修正作業の自動化が可能になり、開発・保守作業の効率を向上させることができる。
メタデータ:データの属性・意味内容・格納場所など、データを管理するための情報
データディクショナリ:メタデータを収集・登録、管理したもの
CASE(Computer Aided Software Engineering)ツール:コンピュータを活用してソフトウェア開発や保守作業の効率化・自動化を支援する開発支援ツール(上流CASE、下流CASE、保守CASE、統合CASE)