OrientDB - 集群概念的问题

时间:2014-03-24 10:01:15

标签: orientdb

我在orient db中遇到了群集问题。所以我想确保我对集群的理解是正确的,如果你能解决我的问题,那就太好了。

我对集群的理解

首先我想确保我正确理解集群的概念:对我来说,集群是数据的子集,一个集群可以包含不同的类,单个类可以包含在不同的集群中,这是正确的吗?

例如,我有数据:

{"name": "john", "sports": "tennis", "gender": "male", "@class": "assistant"}
{"name": "susan", "sports": "hockey", "gender": "female", "@class": "assistant"}
{"name": "peter", "sports": "hockey", "gender": "male", "@class": "trainee"}
{"name": "mary", "sports": "tennis", "gender": "female", "@class": "trainee"}

然后我就可以拥有这样的集群:

cluster:Male {john, peter}
cluster:Tennis {john, mary}

对OrientDB中群集的理解是否正确?

我的集群问题

将新数据插入数据库时​​,我想将数据添加到特定群集。我的数据是json格式。群集已存在。但使用以下命令插入后,群集仍为空。这可以通过使用java API以及使用Web界面来实现。

INSERT INTO cluster:Test CONTENT {"name": "john", "@class": "assistant"}

请求时保存数据本身:

SELECT FROM assistant

我确实找到了该条目但该条目不在群集中:测试。我究竟做错了什么?


修改2014/03/26

我的用例

我实际上是在我的数据库中保存推文。我通过给定的关键字搜索Twitter。我的班级模型如下:

  • TwitterTweet
  • TwitterUser
  • 主题标记

(Tweet和U​​ser上面的TwitterBaseClass)我有这样的边缘:

TwitterTweet --originalTweet--> TwitterTweet
TwitterTweet --postedBy--> TwitterUser
TwitterTweet --hasHashtag--> Hashtag

我认为做有效请求的最佳做法是为每个关键字创建一个集群。例如,当我有关键字" shark"和#34;狗"我收到鲨鱼和狗的推文,它们都存储在不同群集的同一个图表中。


非常感谢您的帮助,提前谢谢 路德维希

orient-db v.7.7-rc1

2 个答案:

答案 0 :(得分:1)

您应该添加群集"测试"通过API或通过SQL发送给类助手:

alter class assistant addcluster test

答案 1 :(得分:1)

在下一个版本2.0中,您无法将多个群集关联到一个类,因此为了与将来的版本保持兼容,最好使用类继承来拆分多个群集上的记录。

编辑2014-10-08:

这不再是真的,使用2.0你不能在任何集群中存储记录,但应该声明X类的主机记录。所以类可以有多个集群。我们使用此功能来管理分布式。