第1章 Oracle NoSQL Databaseの概要

目次

KVStore
レプリケーション・ノードとシャード
レプリケーション係数
パーティション
トポロジ
アクセスとセキュリティ
KVLite
Hadoop統合

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

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

KVStore

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

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

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

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

各ストレージ・ノードは1つ以上のレプリケーション・ノードをホストし、レプリケーション・ノードには1つ以上のパーティションが含まれます。 各ストレージ・ノードには、ホストするレプリケーション・ノードが稼働していることや問題がないことを確認する監視ソフトウェアも含まれています。

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

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

レプリケーション・ノードはシャードに編成されます。シャードには、データベースの書込みの実行を担い、それらの書込みをシャード内の他のレプリケーション・ノードにコピーする1つのレプリケーション・ノードが含まれます。これはマスター・ノードと呼ばれます。シャード内の他のすべてのレプリケーション・ノードは、読取り専用操作のサービスに使用されます。これらはレプリカと呼ばれます。ある時点で存在できるマスター・ノードは1つだけですが、シャードのメンバーはいずれもマスター・ノードになることが可能です。つまり、各シャードでは、単一マスター/複数レプリカ・ストラテジを使用して、読取りのスループットと可用性を向上させます。

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

NoSQL Databaseのシャード

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

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

現在、デプロイ後はストアのパフォーマンス・チューニングはできませんが、一貫性ポリシーと永続性保証の設定方法によってストアの全体的なパフォーマンスが影響を受けることにも注意してください。詳細は、「一貫性保証」および「永続性保証」を参照してください。

レプリケーション係数

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

パーティション

各シャードには1つ以上のパーティションが含まれています。ストア内のキーと値のペアは、キーによって編成されます。さらに、キーにはパーティションが割り当てられます。キーは、パーティションへの配置後は別のパーティションに移動できません。Oracle NoSQL Databaseでは、すべての使用可能なパーティション間でキーが均等に割り当てられます。

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

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

トポロジ

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

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