ライブラリ・バージョン12.1.3.0

第1章 Oracle NoSQL Databaseの概要
前 |  | 次

## 第1章 Oracle NoSQL Databaseの概要

Oracle NoSQL Databaseへようこそ。Oracle NoSQL Databaseは、スケーラブルなスループットとパフォーマンスが得られる、複数テラバイトのキーと値のペアの分散型ストアです。つまり、表の情報またはオプションでキー値のペアとしてアクセスされるデータを格納および取得するためのネットワーク・リクエストを提供します。Oracle NoSQL Databaseでは、この種のデータ・リクエストは、ストアの構成方法に基づいて予測可能なレイテンシ、スループットおよびデータの一貫性を伴ってサービスされます。

Oracle NoSQL Databaseでは、作成、読取り、更新および削除(CRUD)のフル操作と調整可能な永続性保証が提供されます。Oracle NoSQL Databaseは、優れた可用性、スループットおよびレイテンシを提供する一方、最小限の管理操作で済むよう設計されています。

Oracle NoSQL Databaseでは、パフォーマンスはスケーラブルです。パフォーマンスを向上させる必要がある場合、より多くのハードウェアを使用します。パフォーマンス要件がそれほど高くない場合、より少ないハードウェア・リソースを購入して管理します。

Oracle NoSQL Databaseは、読取り/書込みパフォーマンス・レベルがユーザー定義可能なネットワーク・アクセス可能データを必要とするアプリケーション向けのものです。標準的なアプリケーションは、Webサーバー、アプリケーション・サーバーおよびバックエンド・データベースの従来型3層アーキテクチャでリクエストをサービスするWebアプリケーションです。この構成では、Oracle NoSQL Databaseは、アプリケーション・サーバーの後ろにインストールされることになり、バックエンド・データベースのかわりに使用されるか、データベースと併用されます。Oracle NoSQL Databaseを使用するには、アプリケーション・サーバーで実行されるコードを記述(JavaまたはCを使用)する必要があります。

アプリケーションでOracle NoSQL Databaseを使用するには、KVStoreと呼ばれるOracle NoSQL Databaseのデータ・ストアに対してネットワーク・リクエストを実行します。リクエストは、Javaライブラリ(.jarファイル)としてアプリケーションにリンクされるOracle NoSQL Databaseドライバを使用して行われ、一連のJava APIを使用してアクセスされます。

こうしたAPIの使用方法は2つのマニュアルの1つで紹介されています。大部分の開発者が読む必要があるマニュアルは『Oracle NoSQL Database Table APIスタート・ガイド』です。古い、従来のキー/値APIを使用する開発者は『Oracle NoSQL Database Key/Value APIスタート・ガイド』を読む必要があります。

### 注意

Oracle NoSQL Databaseは、Java 7を使用してテストされているため、Oracle NoSQL DatabaseではそのバージョンのJavaのみを使用する必要があります。

## KVStore

KVStoreは、レプリケーション・ノードのセットをホストするストレージ・ノードの集まりです。データは、レプリケーション・ノード間に分散されます。従来の3層Webアーキテクチャを例にすると、KVStoreはバックエンド・データベースにかわるものか、バックエンド・データベースと併用されるものです。

ストアには、複数のストレージ・ノードが含まれます。ストレージ・ノードは、ローカル・ストレージを持った物理(あるいは、仮想)マシンです。マシンにはコモディティ・ハードウェアが想定されています。ストア内のその他のすべてのストレージ・ノードと同一である方が望ましいですが、そうである必要はありません。

次の図に、Oracle NoSQL Databaseを利用するアプリケーションで使用される代表的なアーキテクチャを示します。

各ストレージ・ノードは、capacityで決定されているとおりに1つ以上のレプリケーション・ノードをホストします。ストレージ・ノードの容量は、ノードに関連付けられたハードウェア・リソースのだいたいのめやすとなります。1つのストアは、容量の異なる複数のストレージ・ノードで構成できます。Oracle NoSQL Databaseは、容量に比例する負荷がストレージ・ノードに割り当てられるようにします。容量をストレージ・ノードに関連付ける方法の詳細は、「インストールの構成」のcapacityパラメータの説明を参照してください。その後、レプリケーション・ノードには少なくとも1つ(通常は複数)のパーティションが含まれるようになります。(ストレージ・ノードとレプリケーション・ノードの数を均衡化する最適な方法の詳細は、「非コンプライアンス・トポロジの均衡化」を参照してください。)各ストレージ・ノードには、ホストするレプリケーション・ノードが稼働していることや問題がないことを確認する監視ソフトウェアも含まれています。

### レプリケーション・ノードとシャード

大まかに言うと、レプリケーション・ノードは、キーと値のペアを含む1つのデータベースとみなすことができます。

レプリケーション・ノードはシャードに編成されます。シャードには、複数の読取り専用レプリカに加えて、データベース書込みの実行を担うマスター・ノードと呼ばれる1つのレプリケーション・ノードが含まれます。マスター・ノードはレプリカに対するすべての書き込みをコピーします。これらのレプリカは読取り専用操作のサービスに使用されます。一時点で1つのマスター・ノードしか存在できませんが、シャードのどのメンバー(下記で説明しているとおり、セカンダリ・ゾーンにあるノードを除く)でもマスター・ノードになることができます。つまり、各シャードでは、単一マスター/複数レプリカ・ストラテジを使用して、読取りのスループットと可用性を向上させます。

次の図に、KVStoreがシャードに分かれている状態を示します。

マスターをホストするマシンに何らかの障害が発生すると、シャード内の別のいずれかのノードにマスターが自動的にフェイルオーバーすることに注意してください。つまり、レプリカ・ノードの1つが自動的にマスターに昇格されます。

本番KVStoreには複数のシャードが含まれます。インストール時、ストアに含まれるシャードの数をOracle NoSQL Databaseで自動的に決定できるようにするための情報を指定します。ストアに含まれるシャードが多いほど、書込みリクエストをサービスするノードがストアに多く含まれるため、書込みのパフォーマンスが向上します。

### レプリケーション係数

シャードに属するノードの数は、レプリケーション係数と呼ばれます。シャードのレプリケーション係数が大きいほど、読取りのスループットは向上します(読取りリクエストをサービスするマシンが増えるため)が、書込みのパフォーマンスは低下します(書込みのコピー先のマシンが増えるため)。

ストアの各ゾーンにレプリケーション係数を設定すると、Oracle NoSQL Databaseは、ストアを構成する各ゾーンに存在する各シャードに対して適切な数のレプリケーション・ノードが作成されるようにします。ゾーンで保持されるコピー、つまりレプリカの数は、ゾーン・レプリケーション係数と呼ばれます。すべてのプライマリ・ゾーンにおける合計レプリカ数はプライマリ・レプリケーション係数と呼ばれ、すべてのセカンダリ・ゾーンにおける合計数はセカンダリ・レプリケーション係数と呼ばれます。ストア内のすべてのゾーンに関して、ストア全体の合計レプリカ数はストア・レプリケーション係数と呼ばれます。

プライマリ・レプリケーション係数およびその関連性の識別方法の詳細は、「レプリケーション係数」を参照してください。

複数のゾーンおよびレプリケーション係数の詳細は、「複数のゾーンでの構成」を参照してください。

### パーティション

各シャードには、1つ以上のパーティションが含まれます。ストアにある表の行(またはキーと値のペア)はデータのキーを通してアクセスされます。さらに、キーにはパーティションが割り当てられます。キーは、パーティションへの配置後は別のパーティションに移動できません。Oracle NoSQL Databaseは、各レコードのキーをハッシュすることで、すべての有効なパーティションに均等にレコードを広げます。

計画の一環として、ストアに含めるパーティションの数を決める必要があります。これは、ストアのインストール後は構成できないことに注意してください。

ストアで使用するストレージ・ノードの数は拡張して変更することが可能です。この操作が行われる場合、新規シャードの追加によって、新規リソースを利用するようにストアを再構成できます。この操作が行われる場合、あるシャードから別のシャードにパーティションを再配布することで、新規シャードと既存シャードの間でパーティションが均衡化されます。このため、ストアをきめ細かに再構成できるように十分な数のパーティションを含めることが推奨されます。多数のパーティションを含めることには最小限のパフォーマンス・コストが伴うことに注意してください。大まかには、シャードごとに少なくとも10から20のパーティションがあり、パーティションの数はシャードの数で均等に割り切れるはずです。パーティション数は初期のデプロイ後に変更できないため、パーティション数の指定時には予想される最大サイズのストアを想定する必要があります。

### ゾーン

ゾーンは、その中でデプロイされたストレージ・ノード間で高品質のネットワーク接続をサポートする物理的な場所で、他のゾーンとの間はある程度物理的に分かれています。通常ゾーンは、冗長またはバックアップ電源供給、冗長データ通信接続、環境制御(たとえば、エアコン、消火)およびセキュリティ・デバイスを含みます。ゾーンは実際の物理データ・センター・ビルであることもありますが、特定のデプロイによるフロア、部屋、容器またはラックであることもあります。大規模な停電やネットワーク障害のような、物理的な場所全体に影響するシステム障害から保護するために、Oracleは複数のゾーンでストアをインストールおよび構成することをお薦めします。

ゾーンが複数あると、障害を分離できるため、1つのゾーンに障害が起こった場合でもデータの可用性が高まります。

ゾーンには2つのタイプがあります。プライマリ・ゾーンには、マスターまたはレプリカとなるノードが含まれます。デフォルトでは、ゾーンはプライマリ・ゾーンとして作成されます。セカンダリ・ゾーンには、レプリカとなるノードのみが含まれます。セカンダリ・ゾーンを使用して離れた場所にあるデータをコピーしたり、冗長性または読取り機能を向上するためにデータの予備のコピーを保持できます。

コマンドライン・インタフェースを使用して、1つ以上の`ゾーン`を作成してデプロイできます。各`ゾーン`は、デプロイされたストレージ・ノードをホストします。ゾーンおよびその作成方法の詳細は、「ゾーンの作成」を参照してください。

### トポロジ

トポロジは、NoSQL DBストアを構成するゾーン、ストレージ・ノード、レプリケーション・ノードおよび管理サービスの集合体です。デプロイされた各ストアには、ある時点の状態を示すトポロジが1つあります。

初期のデプロイ後、特定のシャードで単一障害点が発生する可能性が最小限になるようにトポロジが配置されます。つまり、ストレージ・ノードは複数のレプリケーション・ノードをホストする可能性がありますが、そのレプリケーション・ノードが同じシャードに属することはありません。これにより、ホスト・マシンが停止するようなハードウェア障害に直面したとしても、シャードの読取りおよび書込みを継続できる可能性が高まります。 トポロジが従う必要があるルールの詳細は、「ストアの構成の決定」を参照してください。

トポロジは、様々なパフォーマンス特性を実現する場合や、ストレージ・ノードの数または特性の変更に対応する場合に変更できます。トポロジの変更およびデプロイは反復的なプロセスです。コマンドライン・インタフェースの使用によるトポロジの作成、変換、表示、検証およびプレビューの詳細は、「トポロジ」を参照してください。

前 |  | 次
はじめに | ホーム | アクセスとセキュリティ