我对OrientDB世界很感兴趣,并渴望在生产中使用OrientDB / OrientJS。
阅读相关文件后,我对使用" cluster"感到困惑。 OrientJS的功能。这些功能涉及" CREATE CLASS
"," ALTER CLASS ADDCLUSTER
"," create records in the specified cluster
",&#34 ; select records from clusters
"," LiveQuery
"等。
请详细说明这些问题。
答案 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'
});
创建课程(Place
):
db.class.create('Place', 'V')
.then(function (Class) {
console.log("Created class "+Class.name);
});
<强>输出强>:
Created class Place
创建广告资源(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
ALTER CLASS(Place
)ADDCLUSTER(place2
):
db.query('ALTER CLASS Place ADDCLUSTER place2')
.then(function (cluster) {
console.log(cluster);
});
插入群集(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 } ]
插入群集(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 } ]
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 } ]
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 } ]
从类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 } ]
如您所见,顶点位于同一个类中但位于不同的簇中。
希望有所帮助
答案 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