BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Neo4j 3.1がリリース - Causal Clusteringをサポート,セキュリティを強化

Neo4j 3.1がリリース - Causal Clusteringをサポート,セキュリティを強化

ブックマーク

原文(投稿日:2016/12/31)へのリンク

NoSQLグラフデータベースNeo4jの最新バージョンには,Causal Clustering(因果クラスタリング)と新たなセキュリティアーキテクチャが導入されている。Neo4jチームは先頃,同グラフデータベースのバージョン3.1をリリースした

Raftプロトコルをベースに開発されたCausal Clusteringは,大規模クラスタと,データセンタとクラウドという異なるクラスタトポロジのサポートを実現する。Neo4j Boltドライバの処理するロードバランサも組み込みで備える。さらに,Boltドライバが管理するクラスタ対応セッションを新たにサポートすることで,インフラストラクチャに対する開発者の懸念にも対処する。

セキュリティ強化には,複数ユーザやロールベースのアクセス管理(4つのグラフグローバルなデータアクセスロール – reader, publisher, architect, admin – が定義されている),クエリおよびセキュリティイベントのログ記録,実行中クエリの一覧と停止,詳細なアクセス管理などが含まれる。

最新バージョンの機能としては他にも,データベースカーネルの改良によるスペース管理の効率向上,現時点のグラフモデルを表示するSchema Viewerなどがある。

Neo4jチームのMichael Hunger氏に,新リリースについて話を聞いた。

InfoQ: Neo4j 3.1リリースの新機能であるCausal Clusteringについて説明してください。従来のクラスタ技術とはどこが違うのでしょう?

Michael Hunger: 新機能のCausal Clusteringは,トランザクショナルデータベースをクラスタリングするための,まったく新しいアーキテクチャであり,アプローチです。従来のNeo4j High Availability(HA)実装から独立したもので,これまでのアプローチにあったいくつかの問題に対処しています。

最大の目標はトータルなデータ安全性,すなわち安全なトランザクション操作と可用性の提供にあります。このアプローチは,Neo4jが従来より備えている強力なトランザクションサポートを,Raftプロトコルと非同期レプリケーションプロトコルを通じて実現するものです。自身が書き込んだ内容の読み取りに対する保証を,非常に大規模なクラスタにまで拡張します。

結果整合性 – 大部分のNoSQLデータベースではデフォルトで選択されています – では,このような操作モデルはサポートされていません。このread-your-own-writesはVon Neumann型コンピュータの動作に近く,なじみの深いモデルであるにも関わらず,ほとんどのNoSQLデータベースが開発者に対して,アプリケーションによる一貫性の保証を繰り返し強いているのです。

どのようなクラスタデータベースでも,結果整合性モデルでは特にですが,“read your own writes”は,特にユーザと対面するアプリケーションにおいて解決の難しい問題です。通常は固定セッションを用いて,書き込みを実施したサーバに読み込みをリダイレクトすることで処理しますが,この手法はスケーラビリティに対する制限となります。

Causal Clusteringは結果整合性をはるかに超越した,最もシンプルかつ高度な保証を提供します。たとえ大規模クラスタであっても,書き込んだ内容を直後に読み込むことが可能です。

因果一貫性(Causal Clusteringが提供する一貫性)に関しては,さらに2つのリソースがあります – ひとつは外部の論文で,もうひとつは因果一貫性に関する背景情報です。

新しいCausal Clusteringは,2つの主要なアーキテクチャ部分で構成されています。

  • 書き込みを受け入れ,データの安全性を宣言するサーバのコア。実際に(アクティブな)クラスタを構成するのがこのコアです。コアはRaftプロトコルを使用して,クォーラム(quorum)書き込みやクラスタのメンバシップ,リーダ情報など,さまざまなクラスタ操作にコンセンサスを提供します。

  • グラフクエリのスケールアウトを実現する,任意の数の読み込み用レプリカサーバ。

Neo4j Operaions Manualのクラスタのセットアップとオペレーションに関する章には,ステップバイステップのチュートリアルと詳細な説明があります。

高可用性(HA)とデータ安全性:

高可用性すなわちフェールオーバは,クラスタのコア部分によるクォーラム書き込みが提供するデータ安全性によって保証されています。コアに対する書き込みはすべて,コミットがクライアントに対して成功を返す前に,サーバの過半数によって承認されなくてはなりません。このアクションの安全性はRaftが保証します。

CAP理論の観点において,Neo4j Clusterが一貫性(C)と耐分断性(P)を備えていると言える理由がここにあります。ネットワークが分断した場合,過半数側のメンバのみが書き込みを受け入れ続けます。ブックマークによる因果一貫性が使用されている場合,分断された少数側からの読み出しによって古いデータが提供されることはなく,孤立したインスタンスに対する操作としてタイムアウトします。ブックマークを使用しない場合は,少数側も所持中のデータを提供します。このようにNeo4jは,古いデータや不正なデータを返しません。重度の障害時には,クラスタは最終的に読み取り専用になります。

Neo4j Causal Clusteringはトランザクションベースのブックマーキング機構を使って実装されているので,書き込み操作のブックマークを取得することが可能です。ブックマークは書き込み操作を(厳密に単調な)トランザクション識別子で表現します。次の操作でそのブックマークを使うことによって,自身のトランザクション以降の状態を読み込み対象としていることが保証されるのです。

Neo4jの公式ドライバもクラスタに対応しました。実行中のオペレーション(書き込み,読み込み,ブックマーク)を処理する場所を指定するスマートルーティングプロトコル(bolt+routing://any-server:port)を組み込みサポートしています。

スケーリング:

Neo4jクラスタのコアは,世界規模で展開するデータセンタ全体に対してデプロイすることも可能です。エンドユーザの使用するアプリケーションのために,任意の数の読み取りレプリカを立ち上げてクラスタを拡大できます。これらのレプリカはクラスタのメンバシップや書き込み処理には参加しませんが,最終的には一貫性を持つようになります。

この場合も前述のブックマーク機能は有効で,自身で書き込んだ内容の読み込みが可能です。この読み込みレプリカは,グラフ演算処理用の専用レポートインスタンスないしサーバの設定に使用することもできます。

地理的可用性に関しては,コアマシンをさまざまなデータセンタに拡張することも可能です。この場合はコミットパスがWANを越えることになりますが,Raftの特性として,最速のマシン群の速度で実行することができます。したがって,もしもニューヨークとボストンとロンドンにデータセンタがあるならば,大西洋を越えたロンドンへのネットワークパスではなく,より短い,ニューヨークとボストン間のネットワークパスがトランザクションのコミットに対する制限になります。

InfoQ: Neo4jの新しいセキュリティ基盤は何ですか?現在サポートされているセキュリティ機能とはどのように違うのでしょう?

Hunger: これまでのNeo4jは,ただひとつの組込みユーザを持っていました。保護されたネットワーク内でデータベースを動作させて,悪意を持った攻撃から防御していたのです。

バージョン3.1ではユーザ,特に金融と公共に関連するユーザからの強い要望で,より強固なセキュリティ基盤をNeo4jに加えることにしました。

このモデルでは,特定のロールをもった複数のユーザを定義できます。既定のロールとして,reader,publisher(読み/書き),architect(読み/書き/スキーマ定義),administratorが用意されていますが,独自のロールを追加してカスタムコード(ユーザ定義のプロシージャなど)でチェックすることも可能です。このモデルの認証と承認に関する処理は,組込み(ネイティブ)実装,LDAP/Active Directiryベースの実装,あるいは別に用意したセキュリティインフラストラクチャ(Kerberosなど)に接続する独自実装のいずれかによってサポートされます。

ネイティブのユーザ管理としては,Neo4j Browserが提供するUIを使って,ユーザの管理(作成,一時停止,削除)とロールの割り当てを行なうことができます。このUIが基盤として使用するプロシージャは,独自に開発する運用ツールでも使用可能です。LDAP / Active Directoryのインテグレーションには,詳細に設定されたCAPAがあります。

データレベルのセキュリティは,現時点では,データのサブセットへのアクセスを許可するユーザ定義プロシージャによって提供されています。これらのプロシージャは,特定のロールを持ったユーザのみが実行できるように設定することも可能です。

最新バージョンはNeo4jのWebサイトからダウンロードできる。

 

この記事を評価

関連性
スタイル

この記事に星をつける

おすすめ度
スタイル

BT