2016-09-10 7 views
0

私は、3つのノード、すなわちmaster1、master2、master3でorientDB 2.2.6に分散データベースを作成しています。各ノードでhazelcast.xmlファイルとorientdb.server.config.xmlファイルを変更しました。私は以下のように3つのノードすべてに共通のdefault-distributed-db-config.jsonを使用しました。orientdb分散データベースのシャーディング

{ 
    "autoDeploy": true, 
    "readQuorum": 1, 
    "writeQuorum": "majority", 
    "executionMode": "undefined", 
    "readYourWrites": true, 
    "failureAvailableNodesLessQuorum": false, 
    "servers": { 
    "*": "master" 
    }, 
    "clusters": { 
    "internal": { 
    }, 
    "address": { 
    "owner" : "master1", 
    "servers": [ "master1" ] 
    }, 
    "address_1": { 
     "owner" : "master1", 
     "servers" : [ "master1" ] 
    }, 
    "ip": { 
     "owner" : "master2", 
     "servers" : [ "master2" ] 
    }, 
    "ip_1": { 
     "owner" : "master2", 
     "servers" : [ "master2" ] 
    }, 
    "id": { 
     "owner" : "master3", 
     "servers" : [ "master3" ] 
    }, 
    "id_1": { 
     "owner" : "master3", 
     "servers" : [ "master3" ] 
    }, 
    "*": { 
     "servers": [ "<NEW_NODE>" ] 
    } 
    } 

} 

次に、master1マシンのmaster2マシンとmaster3マシンをこの順序で起動し、デフォルトのDBを同期させました。次に、データベースと3つのクラス(Address、IP、ID)とそれらのプロパティとインデックスをmaster1マシンに作成しました。 default-distributed-db-config.jsonファイルで述べたように、Addressクラスには2つのクラスタがあり、それらはmaster1マシンに存在します。クラスIPには2つのクラスタがあり、それらはmaster2マシンにあります。

Addressクラスに値を挿入すると、ラウンドロビン方式に従って、期待通りにmaster1マシンのクラスタに到達しています。しかし、master2マシンからIPの値を挿入すると、master1にクラスタが作成され、新しいクラスタに挿入されます。基本的には、すべての値がmaster1マシンに入っています。 List Clustersを実行すると、master2およびmaster3マシンのクラスタは空になります。

したがって、3つのノードにデータを配信できませんでした。それは基本的に単一のマシンにデータを格納します。データを断片化する方法は?私がデータを挿入しようとしているところに問題はありますか?

おかげで現在のOrientDBリリースで

答えて

0

は、書き込み操作は、(削除/作成/更新)転送されません。読み込みのみです。このため、データを書き込むクラスタを処理するサーバーにクライアントを接続する必要があります。

ローカルクラスタが選択されているため、通常は問題ありませんが、リモートサーバー上の特定のクラスタに書き込む場合は、これはまだサポートされていません。

+0

http://orientdb.com/docs/2.2.x/Distributed-Sharding.htmlのリンクに記載されている内容を複製したいと思います。このリンクは、異なるマシンでどのようにデータを分散し、分割できるかを示しています。私が間違ってやっていることは、私がシャーディングをそのように作ることを許していないのですか? –

+0

私の場合、私はmaster2をクラスタipとip_1の所有者とみなしました。しかし、master2から値を挿入すると、データベース自体が作成した新しいクラスタip_0に格納されています。これを避けて、所有者ノードからロードするときにipとip_1に格納する方法は? –

+0

どのAPIを使用していますか?レコードを保存するときにクラスタを通過していますか? – Lvca

関連する問題