私は、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リリースで
http://orientdb.com/docs/2.2.x/Distributed-Sharding.htmlのリンクに記載されている内容を複製したいと思います。このリンクは、異なるマシンでどのようにデータを分散し、分割できるかを示しています。私が間違ってやっていることは、私がシャーディングをそのように作ることを許していないのですか? –
私の場合、私はmaster2をクラスタipとip_1の所有者とみなしました。しかし、master2から値を挿入すると、データベース自体が作成した新しいクラスタip_0に格納されています。これを避けて、所有者ノードからロードするときにipとip_1に格納する方法は? –
どのAPIを使用していますか?レコードを保存するときにクラスタを通過していますか? – Lvca