我在东方数据库中遇到了集群问题。因此,我想确保我对集群的理解是正确的,然后如果您能帮助我解决我的问题,那就太好了。
我对集群的理解
首先,我想确保我正确理解集群的概念:对我来说,集群是数据的子集,一个集群可以包含不同的类,单个类可以包含在不同的集群中,这是正确的吗?
例如我有数据:
{"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
我确实找到了该条目,但该条目不在集群中:Test。我究竟做错了什么?
编辑2014/03/26
我的用例
我实际上将推文保存在我的数据库中。我正在通过给定的关键字搜索 Twitter。我的类(class)模型如下所示:
- 推特推文
- Twitter用户
- 标签
(在推文和用户上方有一个 TwitterBaseClass),我有这样的边缘:
TwitterTweet --originalTweet--> TwitterTweet
TwitterTweet --postedBy--> TwitterUser
TwitterTweet --hasHashtag--> Hashtag
我认为执行高效请求的最佳实践是为每个关键字创建一个集群。例如,当我有关键字“鲨鱼”和“狗”时,我会收到有关鲨鱼和狗的推文,它们都存储在不同集群的同一个图中。
非常感谢您的帮助,提前致谢
路德维希
orient-db v.1.7-rc1
最佳答案
在下一个版本 2.0 中,您无法将多个集群关联到一个类,因此为了与 future 版本保持兼容,最好使用类继承将记录拆分到多个集群上。
编辑2014-10-08:
这不再是真的,在 2.0 中你不能在任何集群中存储记录,但应该声明它托管 X 类的记录。所以类可以有多个集群。我们使用这个功能来管理分布式。
关于OrientDB - 集群概念问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22606111/