如何使用" cluster" OrientJS的功能?

时间:2016-03-12 03:21:33

标签: orientdb orientjs

我对OrientDB世界很感兴趣,并渴望在生产中使用OrientDB / OrientJS。

阅读相关文件后,我对使用" cluster"感到困惑。 OrientJS的功能。这些功能涉及" CREATE CLASS"," ALTER CLASS ADDCLUSTER"," create records in the specified cluster",&#34 ; select records from clusters"," LiveQuery"等。

请详细说明这些问题。

2 个答案:

答案 0 :(得分:1)

我创建了一个数据库来尝试有关群集功能的请求。

var OrientDB = require('orientjs');

var server = OrientDB({
    host: 'localhost',
    port: 2424,
    username: 'root',
    password: 'root'
});

var db = server.use({
    name: 'OrientJStest',
    username: 'root',
    password: 'root'
});
  1. 创建课程(Place):

    db.class.create('Place', 'V')
        .then(function (Class) {
            console.log("Created class "+Class.name);
    });
    

    <强>输出

    Created class Place
    
  2. 创建广告资源(Name):

    db.class.get('Place')
        .then(function (Class) {
        console.log('Class: ' + Class.name);
        Class.property.create({
            name: 'name',
            type: 'String'
        })
        .then(function (newProp) {
            console.log('Property created: ' + newProp.name);
        });
    });
    

    <强>输出:

    Class: Place
    Property created: name
    
  3. ALTER CLASS(Place)ADDCLUSTER(place2):

    db.query('ALTER CLASS Place ADDCLUSTER place2')
        .then(function (cluster) {
            console.log(cluster);
    });
    
  4. 插入群集(place):

    db.insert().into('cluster:place')
        .set({name:'London'}).all()
        .then(function (record) {
            console.log('Created record: ',record);
    });
    

    <强>输出:

    Created record:  [ { '@type': 'd',
        '@class': 'Place',
        name: 'London',
        '@rid': { [String: '#15:0'] cluster: 15, position: 0 },
        '@version': 1 } ]
    
  5. 插入群集(place2):

    db.insert().into('cluster:place2')
        .set({name:'Manchester'}).all()
        .then(function (record) {
            console.log('Created record: ',record);
    });
    

    <强>输出:

    Created record:  [ { '@type': 'd',
        '@class': 'Place',
        name: 'Manchester',
        '@rid': { [String: '#16:0'] cluster: 16, position: 0 },
        '@version': 1 } ]
    
  6. SELECT FROM CLUSTER(place):

    db.select().from('cluster:place').all()
        .then(function (vertex) {
            console.log('Vertexes found: ',vertex);
    });
    

    <强>输出:

    Vertexes found:  [ { '@type': 'd',
        '@class': 'Place',
        name: 'London',
        '@rid': { [String: '#15:0'] cluster: 15, position: 0 },
        '@version': 1 } ]
    
  7. SELECT FROM CLUSTER(place2):

    db.select().from('cluster:place2').all()
        .then(function (vertex) {
            console.log('Vertexes found: ',vertex);
    });
    

    <强>输出:

    Vertexes found:  [ { '@type': 'd',
        '@class': 'Place',
        name: 'Manchester',
        '@rid': { [String: '#16:0'] cluster: 16, position: 0 },
        '@version': 1 } ]
    
  8. 从类Place的所有群集中选择

    db.select().from('Place').all()
        .then(function (vertex) {
            console.log('Vertexes found: ',vertex);
    });
    

    <强>输出:

    Vertexes found:  [ { '@type': 'd',
        '@class': 'Place',
        name: 'London',
        '@rid': { [String: '#15:0'] cluster: 15, position: 0 },
        '@version': 1 },
      { '@type': 'd',
        '@class': 'Place',
        name: 'Manchester',
        '@rid': { [String: '#16:0'] cluster: 16, position: 0 },
        '@version': 1 } ]
    
  9. 如您所见,顶点位于同一个类中但位于不同的簇中。

    希望有所帮助

答案 1 :(得分:0)

根据文档,集群&#34;是一种非常通用的方式来对记录进行分组&#34;,默认类和集群之间的关系是1:1,然后每个创建的类由其相对集群创建。 您始终可以指定在哪个集群中放置新记录/文档/顶点/边。因此,让我们为每个字母创建1个集群并将其添加到类中。例如:

create cluster employee_a // cluster id = 12 alter class Employee addcluster 12

create cluster employee_b // cluster id = 13 alter class Employee addcluster 13

create cluster employee_c // cluster id = 14 alter class Employee addcluster 14

如何管理群集取决于您的需求。 然后根据您选择的策略,相应地保存新的顶点(例如:使用&#34;循环#34;保存在集群12中的1个顶点,1个顶点保存在集群13中,1个顶点保存在集群14中。

要获取特定群集中存在的数据: 从群集中选择:12