目次
KVStoreのデプロイを成功させるには、ストアにかかる負荷を分析し、その負荷をサポートするために必要なハードウェア・リソースの数を見極める必要があります。この分析が終わったら、それらのリソースにKVStoreをデプロイする方法を決めることができます。
ストアのインストールを計画する全プロセスには、次のステップが含まれます。
ストアのサイズとスループットの要件の収集
ストアの構成の決定。これには、ストアに必要なノードの総数、ストアで使用するパーティションの数、シャードの数およびストアで使用するレプリケーション係数の特定などがあります。
ノードに使用するキャッシュ・サイズの決定。
前述の各ステップを行ったら、ストアを本番環境に配置する前に、模擬の負荷でインストールをテストし、必要に応じて構成を調整します。
次の各項で、これらのステップについて詳しく説明します。
ストアのインストールを計画する前に、ストアの中身とアプリケーションがストアに求めるパフォーマンス特性を理解しておく必要があります。
ストアに含めるキーとデータ項目の数とサイズ。
単位時間当たりに実行される格納操作と取得操作の大よその最大数。
各ストア操作で許容される最大レイテンシ。
後続の各項では、これらの内容について説明します。
KVStoreには、一定数のキーと値のペアが含まれます。ストアに含まれるキーと値のペアの数とサイズによって、ストアに必要なディスク・ストレージの容量が決まります。ストアのサポートに使用される各物理マシンに必要なメモリー内キャッシュのサイズも決まります。
各キーと値のペアのキー部分は、メジャー・キー・コンポーネントとマイナー・キー・コンポーネントで構成されます。これらをまとめて、ファイル・システム内のファイルへのパスのように表すことができます。ファイルシステムのパス同様、キーは短くても長くてもかまいません。多数の非常に長いキー・コンポーネントを使用するレコードは、当然のことながら、少数の短いコンポーネントを使用するレコードより多くのストレージ・リソースを必要とします。
同様に、各キーに関連付けられているデータの量(つまり、各キーと値のペアの値部分)も、ストアに必要なストレージ容量に影響を及ぼします。
最後に、ストアに含めるレコードの数も、ストレージ容量に影響を及ぼします。
最終的には、本番デプロイの前にストアのストレージ要件を見積る唯一の方法は、ストアでサポートするアプリケーションの設計と構築を担当者に確認することです。スキーマの設計は、Oracle NoSQL Databaseアプリケーションの設計の重要な部分であるため、エンジニアリング・チームは、ストアで使用されるキーとデータ項目のサイズを把握しています。ストアに含まれる予定のキーと値のペアの数も把握しており、キーと値の設計方法や使用するパーティションの数に基づいて、各ノードに必要なディスク・ストレージのサイズを助言することができます。
ストアのデプロイ方法を決めるには、ストアでサポートする予定の1秒当たりの操作数を決める必要があります。次の見積りを行います。
ストアで1秒当たりに処理する必要のある読取り操作の数。
ストアでサポートする必要のある1秒当たりの更新の数。この見積りには、既存のキーに対する格納操作のバリエーションをすべて含める必要があります。
ストアでサポートする必要のある1秒当たりのレコード作成の数。この見積りには、新規のキーに対する取得操作のバリエーションをすべて含める必要があります。
ストアでサポートする必要のある1秒当たりのレコード削除の数。この見積りには、削除操作のバリエーションをすべて含める必要があります。
アプリケーションで複数キー操作(KVStore.execute()
、multiGet()
またはmultiDelete()
)を使用する場合、各複数キー操作で実際に対象となるキーと値のペアを見積り、必要なスループット数を導出します。
最終的には、導出したスループット要件は、ノードで使用されるディスク・ストレージ・システムで可能なI/O容量および各ノードで使用可能なメモリー量と整合性がとれる必要があります。
これらを見積るには、エンジニアリング・チームに相談したり、Oracle NoSQL Databaseアプリケーションの開発とデプロイのベースになっているビジネス・プランを確認する必要がある場合もあります。
レイテンシは、ストアで特定の操作の実行にかかる時間を評価するものです。すべてのストア操作(読取り、書込み、更新および削除)に対して許容できる平均レイテンシを決める必要があります。これらの各平均レイテンシは、主に次の点によって決まります。
ディスクI/Oシステムで読取りと書込みにかかる時間。
ノードで使用可能なメモリー量(メモリー量が多いほど、メモリーにキャッシュできるデータ量が多くなり、コストの高いディスクI/Oを回避できます)。
アプリケーションのデータ・アクセス・パターン(ストアの操作がレコードに集中するほど、ストア操作がメモリー内キャッシュからサービスされ、ストアの効率がよくなります)
読取りレイテンシ要件が10ms未満の場合、現在市販されている通常のハード・ディスクはそのままでは不十分なことに注意してください。10ms未満のレイテンシを得るには、各ノードに物理メモリーが十分あることを確認し、一定割合の読取りリクエストがメモリー内キャッシュからサービスされるようにします。ノードで必要な物理メモリー量は、読取りリクエストがレコードにどの程度集中しているかによってある程度影響を受けます。読取りリクエストが同じレコードにアクセスする傾向が高いほど、キャッシュは小さくて済みます。
また、バージョンベースの書込み操作では、バージョン番号を読み取るためにディスク・アクセスが必要です。KVStoreでは、可能なかぎりバージョン番号をキャッシュし、ディスク読取りの原因が極力少なくなるようにします。しかし、バージョンベースの書込み操作が集中していない場合、レイテンシ要件を満たすには、多量のメモリー内キャッシュが必要です。