java - 我可以在 OrientDB 上查询期间访问对象的集群名称吗?

标签 java orientdb

也许这可能是由于设计不佳造成的,因此我们将不胜感激。

例如,我有一个图形数据库,可以帮助我基于继承对对象关联进行建模

class:Element <----- class:Car

因此,如果我得到一辆新车,我只需将其插入汽车类

后来我添加了一个要求,即保留一个“元模型”,或者对进入模型的所有数据的愿景,同时保持用户的数据分离,为了实现这一点,我决定每个用户的数据,应该转到单独的一组集群。

因此,如果 personA 尝试在车内插入某些东西,系统将自动创建新的簇,并将该元素放在正确的簇上。

class:Element <----- class:Car ------ cluster:personA_Car

此模型同样适用于关系和其他类型的元素。

在类:Car的同一级别,驻留稍后将与汽车相关的其他类,例如割草机、自行车,所有这些类都是动态创建的,数据和关系的集群也是如此。

底线,该模型看起来像一棵树,其中使用关系,我关联不同类型的对象,并且为了区分用户 A 和用户 B,我使用集群,但在查询时我只有集群名称的前缀,但我的根元素所在的实际集群对我来说是未知的。

概括来说,我需要找到一种方法能够为 personA 做这样的事情:

 select * from Element e where in.in.size() is null (and 'e' resides on cluster starting with personA)

除了在 orientEngine 上执行第一部分,并编码第二部分以获取 clusterName 并获取正确的名称之外,还有其他更好的方法吗?

最佳答案

从 orientDb 团队收到的答复:

嗨卡米洛,

在此阶段,无法在查询中访问集群名称。您可以定义一个自定义 JavaScript 函数,该函数根据记录检索集群名称(使用 native API),然后在查询中使用此函数。 无论如何,每个用户使用一个集群的想法可能会导致一些问题:在当前版本中,每个数据库最多有 32.000 个集群,因此您可能会用完可用的集群。 我建议你采取不同的策略,例如。添加用户实体并将其与元素记录链接。这样您的查询就会变得直接

原帖 https://groups.google.com/forum/#!searchin/orient-database/Can $20I$20access$20Cluster$2Fs$20name$20for$20objects$20during$20a$20query/orient-database/YvKaRLeHWqI/A78ZIkBABQAJ

关于java - 我可以在 OrientDB 上查询期间访问对象的集群名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32658980/

相关文章:

java - 从 PHP 执行 java MySQL 存储过程

Java 泛型转换不符合预期

java - 为什么equals()有Comparator但Java中的Comparable接口(interface)没有

java - 我可以将 Room Persistence Library 用于 Java 桌面应用程序吗?

express - orientjs 和 expressjs 4 集成

Orientdb 无法从 Java 打开数据库

java - 使用 hashmap 表示加权图

java - orientdb 中的这些 [size=40] 标签是什么

node.js - 如何在 MEAN 堆栈中使用 orientDB

golang请求Orientdb http接口(interface)报错