2017-01-06 1 views
0

Я сохраняю данные в OrientDB для определенных кластеров. Like ThisСохранить для исправления кластера через Rest Call OrientDB в распределенном режиме

CREATE VERTEX <Class> CLUSTER <Cluster> SET ect... 

Затем я запрашиваю конкретные кластеры через вызовы REST для получения данных. Это отлично работает в автономном режиме, но в распределенном режиме это происходит не потому, что я могу попытаться сохранить данные на узле, который не является владельцем этого кластера. Есть ли способ автоматически отправить вызов REST на правильный узел?

Если нет, как я могу запросить базу данных, чтобы увидеть, какие узлы владеют отдельными кластерами, чтобы я мог написать некоторую логику для отправки запроса на правильный узел?

Я использую OrientDB 2.2.0

+0

привет, не могли бы вы привести несколько примеров? tnx –

+0

У меня есть функция на стороне сервера, которая сохраняется в конкретном кластере следующим образом: Создайте VERTEX Class1 CLUSTER USA ... Я выполняю его с помощью вызова POST REST: /database/functions/functions1 ... Есть ли способ получить вызов, отправленный владельцу кластера США? – manjam

ответ

0

На распределенной 2.2.13 с 2 узлами Я изменил стратегию выбора кластера для класса по умолчанию; то вы можете создать вершину

 
    orientdb {db=GratefulDeadConcerts}> alter class written_by CLUSTERSELECTION default 
    orientdb {db=GratefulDeadConcerts}> select name,defaultClusterId,clusterIds,clusterSelection from (select expand(classes) from metadata:schema) where clusterSelection="default" 
 
    +----+----------+----------------+-------------------------+----------------+ 
    |# |name  |defaultClusterId|clusterIds    |clusterSelection| 
    +----+----------+----------------+-------------------------+----------------+ 
    |0 |written_by|33    |[33,34,35,36,37,38,39,40]|default   | 
    +----+----------+----------------+-------------------------+----------------+ 
запросов работает с Почтальон слишком

 
    localhost:2480/command/GratefulDeadConcerts/sql/select name,defaultClusterId,clusterIds,clusterSelection from (select expand(classes) from metadata:schema) where clusterSelection="default" 
    localhost:2481/command/GratefulDeadConcerts/sql/select name,defaultClusterId,clusterIds,clusterSelection from (select expand(classes) from metadata:schema) where clusterSelection="default" 

принять Пожалуйста, посмотрите на документацию о кластерной стратегии для классов
http://orientdb.com/docs/2.2/SQL-Create-Class.html
http://orientdb.com/docs/2.2/SQL-Alter-Class.html
http://orientdb.com/docs/2.2/SQL-Create-Vertex.html

Пример:

 
    orientdb {db=GratefulDeadConcerts}> CREATE CLASS V1 EXTENDS V 
    Class created successfully. Total classes in database now: 14. 

    orientdb {db=GratefulDeadConcerts}> select name,defaultClusterId,clusterIds,clusterSelection from (select expand(classes) from metadata:schema) where name="V1" 
    +----+----+----------------+-------------------------+----------------+ 
    |# |name|defaultClusterId|clusterIds    |clusterSelection| 
    +----+----+----------------+-------------------------+----------------+ 
    |0 |V1 |54    |[54,55,56,57,58,59,60,61]|round-robin  | 
    +----+----+----------------+-------------------------+----------------+ 

    orientdb {db=GratefulDeadConcerts}> alter class V1 CLUSTERSELECTION default   
    Class updated successfully. 

    orientdb {db=GratefulDeadConcerts}> info class V1 
    CLASS 'V1' 
    Records..............: 0 
    Super classes........: [V] 
    Default cluster......: v1 (id=54) 
    Supported clusters...: v1(54), v1_1(55), v1_2(56), v1_3(57), v1_4(58), v1_5(59), v1_6(60), v1_7(61) 
    Cluster selection....: default 
    Oversize.............: 0.0 

    orientdb {db=GratefulDeadConcerts}> CREATE VERTEX V1 CLUSTER V1 set name="me" , type="artist" 
    Created vertex 'V1#54:0{name:me,type:artist} v1' in 0.017000 sec(s). 

    orientdb {db=GratefulDeadConcerts}> select * from V1 
    +----+-----+------+----+------+ 
    |# |@RID |@CLASS|name|type | 
    +----+-----+------+----+------+ 
    |0 |#54:0|V1 |me |artist| 
    +----+-----+------+----+------+ 
+0

Спасибо за ответ. В целях разъяснения. Допустим, у меня есть два узла, где IP-адрес Node 1 равен 1.1.1.1, а IP-адрес узла 2 - 2.2.2.2. Cluster V1 является владельцем Node 1. Если я отправлю вызов REST в Node 2, например, это 2.2.2.2/command/database/SQL/Create VERTEX V1 CLUSTER V1 set name = 'abc', он сохранит этот кластер, хотя я не отправляя владельцу кластера (если у меня есть выбор кластера изменений по умолчанию)? – manjam

Смежные вопросы