第1章 Oracle NoSQL Databaseの概要

目次

KVStore
レプリケーション・ノードとシャード
レプリケーション係数
パーティション
ゾーン
トポロジ
アクセスとセキュリティ
KVLite
管理コマンドライン・インタフェース
Hadoop統合
Oracle外部表統合
Coherence統合

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を使用してアクセスされます。

開発者は、Oracle NoSQL Database APIを使用して、KVStoreに格納されているデータに対する作成、読取り、更新および削除操作を実行できます。これらのAPIの使用方法については、このマニュアルの後半で説明します。

注意

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

KVStore

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

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

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

NoSQLデータベース・ストア・アーキテクチャ

各ストレージ・ノードは、1つ以上のレプリケーション・ノードを容量によって決定されたとおりにホストします。ストレージ・ノードの容量は、関連するハードウェア・リソースの大まかな基準として役立ちます。ストアは、様々な容量のストレージ・ノードで構成可能です。Oracle NoSQL Databaseでは、ストレージ・ノードに、その容量に応じたロードが割り当てられるということが保証されます。さらに、レプリケーション・ノードには少なくとも1つ、通常は多くのパーティションが含まれます。各ストレージ・ノードには、ホストするレプリケーション・ノードが稼働していることや問題がないことを確認する監視ソフトウェアも含まれています。

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

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

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

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

NoSQL Databaseのシャード

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

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

レプリケーション係数

シャードに属するノードの数は、レプリケーション係数と呼ばれます。シャードのレプリケーション係数が大きいほど、読取りのスループットは向上します(読取りリクエストをサービスするマシンが増えるため)が、書込みのパフォーマンスは低下します(書込みのコピー先のマシンが増えるため)。ストア内の各ゾーンのレプリケーション係数を設定すると、Oracle NoSQL Databaseは、ストアを構成する各ゾーンに存在する各シャードに対して適切な数のレプリケーション・ノードが作成されるようにします。

パーティション

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

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

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

ゾーン

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

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

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

トポロジ

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

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

トポロジは、様々なパフォーマンス特性を実現する場合や、ストレージ・ノードの数または特性の変更に対応する場合に変更できます。トポロジの変更およびデプロイは反復的なプロセスです。