|
||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||
| 信頼性 | ||||||||||||
|
データベースにとっては、確定したデータの書き込み結果を決して失わない信頼性が非常に重要な特性になります。ソフトウェアで信頼性を確保するには、前のページの図7に示したようなログを使います。 システムがクラッシュしてもログだけは残るように、シーケンシャルアクセスを行い、かつ同期書き込みを行います。これはカーネルやデータベースが持っているキャッシュにデータを書くだけでなく、システムがクラッシュしても(クラッシュするとメモリの内容は消えてしまいます)データがなくならないように確実にディスクに書いておく手段で、カーネルが提供しています クラッシュした時点では、データベース本体のデータはキャッシュに書いてあるだけでファイルには残っていませんが、これにログのデータを重ねて書いていくとデータを復元(リカバリ)することができます。このようにデータのリカバリにログを使うのが、カーネルのログ(syslogなど、これはイベントの記録)とは用途が少し異なっています。カーネルのログがほとんどテキスト情報なのに比べ、データベースのログはバイナリ形式なのが普通です。 ソフト的にデータの信頼性を保障するしくみがログ(これと「チェックポイント」というしくみを併用することがあります)ですが、これもハードウェア障害には対応しきれないことがあります。 その場合は磁気ディスクを多重化して、1つのディスクが障害になっても、もう一方のデータが使えるRAID1構成をとります。これと複数のディスクにデータを分散(ストライピング)させることを組み合わせたRAID1+0構成もよく使われます。RAIDはソフト的にも実現できますが、サーバがクラッシュした場合でも確実にデータを守るためには、ハードウェアで実装した方が確実です。 またRAIDカードの中には、同期書き込みの際にも実際には遅延書き込みを行い、サーバクラッシュの際にはカードが持っているバッテリバックアップを使ってデータが確実にディスクに書けるようにしているものもあります。このようなカードを使うと、信頼性を犠牲にせずに見かけ上の書き込み速度を上げることができます。しかし長い時間で見ると、結局はディスクにデータを書かなければならないことに変わりはありません。 |
||||||||||||
| おわりに | ||||||||||||
|
今回は「近未来データベース」の導入として、データベースを取り巻く種々の要因を解説しました。次回はデータベースの性能をスケールアウトさせる方法について、最近の試みを紹介します。さらにデータベースの多重化技術についても最近の動きを解説していきます。 |
||||||||||||
|
前のページ 1 2 3 4 |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||

