GeminiのBig Dataとメッセージング製品が実現した革新的な技術の詳細をご覧ください

Technology

Gemini Core Technologies

Hibari® NOSQL データベース

Hibariは、キー・バリュー・ストア方式、ストレージ・ブリックス、チェイン・レプリケーションを特徴とする、クラウド・コンピューティング向け分散型データベースです。

Hibari はキー・バリュー・ストア(Distributed Key Value Store:KVS)方式を用いた分散型のノン・リレーショナル・データベース管理システム(Distributed Non-Relational Database Management Systemであり、モバイルクラウドの時代に爆発的に増加し続けるデータ、いわゆるBig Dataに柔軟に対応するために以下の特徴を備えています。

  • 汎用ハードウェアで構築可能な経済的システム
  • スケールアウトを基本とする柔軟且つ大規模な拡張性
  • 複数の装置に対するコンシステント・ハッシング及びストレージ・ブリックスによる高い性能と可用性
  • 複数の装置に対するチェイン・レプリケーションによる高い耐障害性

これにより、例えば“Hibari”を大容量のメールボックスに適用すれば、そのシステムの経済性やストレージ容量の柔軟な拡張性により、メールボックスやファイルサーバーの容量不足により従業員が頻繁にメールやファイルの削除を行わなければならないと言った非効率な状況を解決します。 また、”Hibari”を大規模なアーカイブシステムに適用すれば、多様なシステムが自動的に生成し続ける大量のログ情報やテレメトリーによる計測情報(自動車など移動体の位置情報、ガスや電力の利用情報)などを保存し管理し続けるためのストレージ・システムを経済的に構築し、運用する事ができます。

photo

データモデル 

Hibari はキー・バリュー型データベースであり、そのデータモデルはデータ項目を一意に識別するための 「キー」、そのキーに対応した値を格納するための「バリュー」、アクセスの競合を検出するための「タイムスタンプ」、データの有効期限を管理するための「有効期限」、およびメタデータを格納するための「フラッグ」と呼ばれる5つの属性からなります。

Hibariの主要コンセプト:一貫性と可用性 

Hibari はネットワーク接続された大量の汎用コンピューターにより大規模なストレージ・システムを構築するための「ストレージ・ブリックス」と呼ばれるコンセプトと、大規模ストレージ・システムに於いてデータの一貫性を犠牲にせずに高いスループットと可用性を提供する「チェイン・レプリケーション」と呼ばれるコンセプトをそのアーキテクチャーに採用しています。 

チェイン・レプリケーション 

Hibari ではデータベース・クラスターを複数の「チェイン」の集合で構成されます。また、各チェインは複数の「ブリック・ストレージ(ネットワーク接続されたコンピューターによるストレージ)」の集合により構成されます。つまり、Hibari のデータベース・クラスターはチェイン単位にグルーピングされた大量のブリックス・ストレージの集合からなります。 チェイン・レプリケーション(複製)に於ける各チェインは、基本的に1つの「ヘッド・ブリック」と「テイル・ブリック」、そして1つ以上の「ミドル・ブリック」の3種類のブリック・ストレージによって構成され、データはチェイン内のブリック・ストレージにレプリケート(複製)されます。

photo

データベース・クラスター内のあるチェインに対するデータの書き込み要求が発生した場合、その要求はチェインのヘッド・ブリックに対して送信されます。データの書き込み要求を受け付けたヘッド・ブリックは、ヘッド・ブリックで更新されたデータをミドル・ブリック経由でテイル・ブリックに送信し、チェイン内のレプリケーションを実行します。書き込み処理への応答は、テイル・ブリックから返されます。尚、Hibari ではミドル・ブリックを含まないチェイン構成でシステムを利用する事も可能です。 

photo

あるチェインに対するデータの読み出し要求が発生した場合、その要求はチェインのテイル・ブリックに送信され、テイル・ブリックから応答が返されます。チェイン内で、あるブリック・ストレージ(ノード)に障害が発生した場合、そのチェイン内の他のブリック・ストレージが、障害となったブリック・ストレージの機能を自動的に引き継ぎ、チェインの機能を正常に維持します。

例えば、3つのブリック・ストレージによるチェイン構成を利用する場合、同時に2つのブリック・ストレージに障害が発生しても、そのチェインに於けるデータへのアクセスは引き続き維持されます。ブリック・ストレージが再開されると、そのデータは自動的に修復されます。また、ブリック・ストレージの修復が完了すれば、ブリック・ストレージは自動的にチェインに再度加えられます。 

クライアント・アプリケーション(開発言語・API)

Hibariでは、クライアント・アプリケーションの開発要件に柔軟に対応するために、さまざまな開発オプションを提供しています。クライアント向けAPIとしてAmazon S3、JSON-RPC、UBF(Universal Binary Protocol)をサポートしており、Thrift、Avro、Google's Protocol Buffers、Memcachedを開発、準備しています。また、開発言語ではPython、Ruby、C/C++、Java、およびErlangに対応しています。

高性能)

Hibari の処理性能については、並列処理に優れていると言われるプログラミング言語 Erlang による開発である点をあげることが出来ます。また、ErlangはHyperScale技術と多くの設計原則を共有しており、他のGeminiのHyperScaleとの統合をシンプルにしています。更に以下の2つのアプローチの採用によって高性能な分散システムを実現しています。

photo

1つ目のアプローチは、「コンシステント・ハッシング・アルゴリズム」によるデータの分散配置です。Hibariに格納されるデータは、コンシステント・ハッシング・アルゴリズムにより、データベース・クラスターの複数のチェインに分散配置されます。データが複数のチェインに分散して配置されることにより、個々のチェインへ分散されたデータへのアクセスを同時に並行して実行することが可能となります。

2つ目のアプローチは、「ストレージ・オプション」にあります。Hibari ではデータベースのストレージ・オプションとして、DISKベースとDISK+RAM(on-memory)ベースのストレージを選択することが出来ます。システムでの高速性に対する要求が特に高い場合には、RAMベースのストレージを選択します。この両方の場合において、データのディスクへの書き込みをデータ・センターの障害から防ぎます。「バッチ・コミット」技術がディスクI/Oを最小化するために使われています。

高い拡張性

Hibariはデータベース・クラスターを構成するブリック・ストレージ(ノード)をダイナミックに追加可能なアーキテクチャーを採用しており、システムを停止させること無く、データベース・クラスターを拡張し、ストレージ容量やアクセス性能を向上させることが可能です。またHibariに於けるストレージ・ブリックスの実装では、システムの拡張を容易にするために、以下の機能を提供します。

  • 自動レプリケーション機能
  • 自動データ配置バランシング機能(ノードの追加や削減などのクラスター構成の変更時)

このように Hibariでは、クラスターへのダイナミックなリソース追加が可能なアーキテクチャーの採用や自動的なデータ管理機能を提供することにより、小規模なシステムから大規模なシステムまでの自由自在なシステムのスケーリングが可能となっています。

高可用性

Hibariではコンシステント・ハッシング・アルゴリズムとチェイン・レプリケーションにより、データへのアクセスの可用性を向上させています。

Hibariではコンシステント・ハッシング・アルゴリズムによりデータベースのキー空間を分割し、データを複数のチェインに分散配置します。データベース・クラスターにデータを効率良く分散配置することで、個々のチェインへのアクセスを並列処理することを可能とし、データへのアクセスの可用性を高めています。

またHibari のデータベース・クラスターを構成する各チェインは、チェイン・レプリケーションにより、2重化以上の冗長構成を利用する事が可能であるため、あるチェイン内の複数のブリック・ストレージに同時に障害が発生した場合にも、そのチェイン内のデータへのアクセスは可能です。例えば、3つのブリック・ストレージによるチェイン構成を利用する場合、そのチェイン内で同時に2つのブリック・ストレージに障害が発生しても、そのチェインに於けるデータへのアクセスは維持されます。

尚、Hibari ではシステムを構成するその他全てのコンポーネントに於いても冗長化構成を利用可能であるため、システム上の単一障害点(Single Point Of Failure : SPOF)を完全に排除する事が可能です。それぞれのブリック・ストレージ装置は障害から独立します。Disk、RAM、CPU、電力供給、ネットワークインターフェースや他のコンポーネントはチェイン・リプリケーションの実装においては、すべて同じように考えられています。このアーキテクチャーは、よく「シェアード・ナッシング(shared nothing)」ストレージ・アーキテクチャーと呼ばれています。

高信頼性

分散型データベースでは、データの冗長性確保のためにレプリケート(複製)されたデータ同士の「一貫性の確保」が重要な課題の一つとなります。

Hibariでは、データベースに分散配置された複数のレプリケーション・データの一貫性確保に於いて 強い一貫性(Strong Consistency)を保証しています。この方式では、クライアントからのデータ読み出しの要求に対して、常にシステムは書き込み処理が完了した最新のデータを提供することを保証します。

またHibariでは、ストレージ・オプションとしてRAMベースのストレージを選択した場合にも、全てのデータ更新をDisk上に記録しデータの信頼性を確保します。

高い経済性

Hibariでは要求されるシステムの規模に係わらず、汎用ハードウェアを使用して非常に経済的にシステムを構築し運用することが出来ます。Hibariはスケールアウトによるシステム拡張を基本としており、システムに求められる処理性能やデータ容量の変化に合わせて、柔軟にクラスターのサイズ変更(拡大・縮小)をシステムの停止無く行うことが出来ます。

更に、クラスター内のノードとして異なるハードウェア機種を混在して使用することも可能なため、クラスター・サイズの拡張を行う際のハードウェアは、その時点で最新のコスト・パフォーマンスの高い機種を選定し導入することが可能です。

また、クラスター・サイズの変更や障害発生後の復旧におけるデータの再配置も、自動データ配置バランシング機能によって自動的に実施されるため、システムの運用をシンプルにし、運用コスト全体を削減することにつながります。

このページのトップへ