ストレージ装置の追加
データベース・システムを構成するハードウェア要素のうち、ハードディスクやフラッシュ・メモリーといった不揮発性デバイスは、1台ではデータベースが求める容量と性能を達成できないため、また故障に備えたデータの複製を作るため、複数台で構成します。
ストレージにも、前回で解説したCPUやメモリーと同様にスケール・アップとスケール・アウトの概念があります。
ストレージのスケール・アップは、1つのストレージ筐体のストレージ・コントローラに接続されるハードディスク・ドライブやフラッシュ・メモリーを増設していくという方式です。これに対しスケール・アウトはストレージ・デバイスを格納する筐体自体をネットワークで増設していく方式です。
データベース・システム稼働開始時点で用意したストレージは、最初はほぼ空きであるため複数台ある各ストレージ・デバイスに均等にデータが格納されていきます。そのため、データベースへのアクセスには複数台分のストレージ装置のスループットを合算した値の性能が出せます。
データベースのデータは時間とともに増えていきます。ここで、データベース・システム稼働開始時点で用意したストレージの空き容量が少なくなってきたため、ストレージ・デバイスをデータベース・システムに増設することを考えます。
次の図は、4つのストレージ・デバイスで稼働を始めたデータベースが、時間が経過してストレージ容量がひっ迫してきたため2台追加したということを想定しています。
稼働を始めたころは4台ともに充分な空きがあるため、追加されていくデータは4台ともに均等に格納されていきます。そのため、読み出し性能は4台分出すことができます。また、書き込みも4台に対して可能であるため、書き込み性能も4台分出せます。
ここで、最初の4台の容量がひっ迫したため2台のストレージ・デバイスを追加したことを想定します。
追加したストレージ・デバイスにしか空きがないため、追加した2台のストレージに新しいデータが格納されていきます。データを格納する書き込み性能は、格納されるストレージ・デバイスの性能に限定されることに注意してください。また、格納した既存データを読み出す場合も、格納されている4台のストレージ・デバイスからしか読みだされません。つまり、データベース・システム全体のストレージ・デバイスの性能の合算ではなく、アクセスされるストレージ・デバイスの性能しか出せないということです。
そのため、データのアクセス・パターンとストレージ・デバイスのデータ配置が適合していないと、データベース・システム全体で用意したストレージの性能が出せないということになります。
6台あるストレージ・デバイスから6台分の読み出し性能を出すには6台にデータが格納されている必要があり、6台分の書き込み性能を出すには6台に充分な空きがある必要があります。
ストレージ・デバイスを追加すると、空き容量は簡単に増やすことができますが、性能を増やすことはそれだけではできません。では、ストレージ・デバイスを追加して性能を向上させるにはなにが必要でしょうか。
読み出し性能はストレージ・デバイス全体にわたって読み出すデータが配置されている必要があり、書き込み性能はストレージ・デバイス全体にわたって空きがある必要があります。
これらを満たすためにストレージ全体にわたってデータを配置するには2つの方法があります。
1つ目は、ストレージ・デバイスが追加されたら、ストレージ全体にわたってデータを再配置することです。2つ目はパブリック・クラウドのようにあらかじめ多数のストレージ装置が存在することを前提に、最初から多数のストレージ・デバイスにデータを分散させることで再配置の頻度を下げる方法です。
データの再配置
ストレージ全体の性能を引き出す1つ目の方法は、ストレージ装置全体にわたってデータを再配置することです。インテリジェントなストレージ装置では、ストレージのコントローラが複数のハードディスク・ドライブのデータを再配置する機能を持っているものがあります。
スケール・アップ方式でのデータ再配置はそのストレージ・コントローラの制御化にあるストレージ・デバイスが対象です。
スケール・アウト方式では、ストレージ・コントローラが異なる筐体間でのデータの再配置機能を持っていれば、複数の筐体間でもデータの再配置が可能です。
また、Oracle DatabaseのAutomatic Storage Management(ASM)機能のようにデータベース・エンジンがデータの再配置機能を持っているものがあります。Oracle ASMはデータベースが認識するストレージ・デバイス間でデータの再配置が行えるため、複数のストレージ筐体で構成されるスケール・アウト型ストレージでもデータの再配置を行うことができます。
これらのデータ再配置機能は、一般的にはストレージへの書き込みがあってもデータベースを稼働させたまま再配置できるようになっています。
また、データベース・システムからストレージを削除する場合にも、データを安全に退避するためにはデータの再配置機能が必要になります。
オンプレミス・システムではストレージ・ハードウェアを購入して設置するという過程があるため、後から設置したストレージの分も含めて性能を向上させるには、このデータの再配置機能が必要になります。