ミック・木村明治『お家で学べるデータベースのきほん』という本を参考に、
データベースの入門レベルの知識の整理をしました。
データベースの分類
- 階層型
- リレーショナル
- オブジェクト指向
- XML
- NoSQL
- 最も主流なのはリレーショナルデータベース
リレーショナルデータベース
- リレーショナルの意味は、二次元表
ここでは関係という意味ではない。
DBMSとデータベースの違い
- データベースは、機能や構造を表す抽象的な観念
- DBMSは、それらを具現化した実在するソフトウェア
ソフトウェアとデータベースの関係性
- データベースはミドルウェアに属するソフトウェア。
すなわち、データベースはOS上にインストールすることで動きます。
データベースにまつわるお金の話
- システムの開発や維持の際には、
システムに起因する利益と費用のバランスをとることが大切。
システムが完成しても、リリース後に投資回収できず赤字になるなら失敗です。
- システムのトータル費用の内訳
○ イニシャルコスト=最初にまとめて払うお金
○ ランニングコスト=サービスを利用する期間、継続的に払うお金
例:アパートでは、敷金・礼金がイニシャルコスト。家賃はランニングコストです。
- DBMSの費用
○ イニシャルコスト=ライセンス料金
○ ライセンス料は、論理的な単位で販売されます。
代表的な販売単位は、プロセッサライセンスとユーザライセンス。
○ さらに、イニシャルコストを決定する要素は「エディション」と「オプション」の選択。オプションはレプリケーションなどの機能です。
○ ランニングコスト=サポート料
サポートの例:バグ修正のプログラムリリース、技術的なQ&A
○ 製品にはバージョンがあります。バージョンが古いと、それに対応したサポート期間が終了してサポートが受けられなくなる可能性があります。一方、バージョンが新しいと、利用者が少ないがゆえに製品の動作が不安定だったり、バグが多かったりする可能性があります。
データベースとアーキテクチャ構成
- アーキテクチャとは
○ アーキテクチャ=「どのような機能を持ったサーバを用意し、どのようなストレージやネットワーク機器と組み合わせてシステム全体を作り上げるか」というハードウェアとミドルウェアの構成
○ システムの目的と機能を表現するものと言えます
- データベースのアーキテクチャ
○ Web3層がWebベースのシステムの標準
Web3層のシステムの図
- 可用性と拡張性を確保するためのアーキテクチャ
§ 信頼性=ハードウェアやソフトウェアが故障する頻度、故障の期間がどれほど少ないか
§ 可用性=利用者目線で、システムをどの程度使用できるか
個々のコンポーネントの信頼性が低くとも、アーキテクチャによって可用性を高めることができます。
§ アーキテクチャの二つの方針
□ 1つのコンポーネントの信頼性を上げる(故障しにくくする)
□ コンポーネントをたくさん並列する。この方法はクラスタリングと呼びます。
DBサーバのクラスタリング
○ データベースは大量のデータを永続的に保存することとパフォーマンスが要求されます。
○ DBサーバ内部のローカルストレージやメモリではこの要求を満たせないので、
専用の外部ストレージが用いられます。
○ データの冗長化は困難。なぜならデータは常に更新されるので、並列したデータ同士の間でデータ整合性を保つための仕組みが必要になるからです。
○ そのような課題の中での冗長化の方法は、シェアードディスク、レプリケーション、シェアードナッシングです。
§ シェアードディスク
□ DBサーバのみを冗長化
□ ストレージは単一
シェアードディスクの図
□ シェアードディスクの下位の分類
〇DBサーバの状態がActiveとActive
◊ DBサーバが同時に稼働
→ダウンタイム時間が短い
&パフォーマンスが向上
〇DBサーバの状態がActiveとStand-by
◊ 障害発生時以外は稼働しないDBサーバがある
→Active-Activeに比べるとダウンタイム時間が長い
レプリケーション
§ シェアードディスクだと、ストレージ部分が冗長化されないので、
ストレージが壊れるとデータが失われます
§ これに対処するためのクラスタ構成が
レプリケーション
=DBサーバとストレージのセットを冗長化
シェアードナッシング=ストレージは共有しないで分離
→仕組みが単純&サーバとストレージのセットを増やせば並列処理により線形に性能が向上
一方、デメリットは各ストレージにデータが分散しているので、単一のDBサーバがアクセスできないデータが出てくる点
シェアードナッシングの図
対比のためのシェアードディスクの図(ストレージ内のデータに注目)
以上です。
拙文をお読みくださりありがとうございました。