我在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。我的班级模型如下:
(Tweet和User上面的TwitterBaseClass)我有这样的边缘:
TwitterTweet --originalTweet--> TwitterTweet
TwitterTweet --postedBy--> TwitterUser
TwitterTweet --hasHashtag--> Hashtag
我认为做有效请求的最佳做法是为每个关键字创建一个集群。例如,当我有关键字" shark"和#34;狗"我收到鲨鱼和狗的推文,它们都存储在不同群集的同一个图表中。
非常感谢您的帮助,提前谢谢 路德维希
orient-db v.7.7-rc1
答案 0 :(得分:1)
您应该添加群集"测试"通过API或通过SQL发送给类助手:
alter class assistant addcluster test
答案 1 :(得分:1)
在下一个版本2.0中,您无法将多个群集关联到一个类,因此为了与将来的版本保持兼容,最好使用类继承来拆分多个群集上的记录。
编辑2014-10-08:
这不再是真的,使用2.0你不能在任何集群中存储记录,但应该声明X类的主机记录。所以类可以有多个集群。我们使用此功能来管理分布式。