Neo4j SDN5针对性能的正确架构设计 - @RelationshipEntity vs @NodeEntity

时间:2018-04-01 17:38:51

标签: neo4j spring-data-neo4j database-indexes spring-orm spring-data-neo4j-5

我有以下SDN5节点实体:

@NodeEntity
public class Decision {

    @Index(unique = true)
    private Long id;

}

@NodeEntity
public class Characteristic{

    @Index(unique = true)
    private Long id;

}

根据我的业务需求,我可以拥有数十万Decision数十或数百个 Characteristic个节点。

我还需要为每个Decision节点的每个Characteristic放置值。在某些情况下,我可以在同一Decision和`特征之间有多个(相同类型的)值。

我看到了两种可行的方法:

1。value@RelationshipEntity之间DecisionCharacteristic. In case of multiple values(of the same types) between the same属性放入and决定value特征Value属性将保存一个数组。

2。引入新的@NodeEntity @Relationship并为DecisionCharacteristic. In case of multiple values(of the same types) between the same决定and添加两个Value特征 - 将创建所需数量的单独Decisions节点。

我最大的标准是针对用户需求的实时查询效果 - 按Characteristics上的值过滤1

考虑到这一点 - 我应该选择哪种方式来创建所述系统的模式 - 2@RelationshipEntity

我知道@NodeEntity的属性不支持架构索引(可以使用关系属性上的APOC手动索引添加此行为的模拟)。另一方面,Decision支持属性上的模式索引,但引入附加的Value节点会增加查询期间遍历的关系计数。

此外,如果同一Characteristic in case of the solution withproperty must be represented as array property on @ RelationshipEntity add_action('init','create_single_schedule'); add_action('single_cron_job','single_cron_function'); function single_cron_function(){ Do cron here } function create_single_schedule(){ //check if event scheduled before if(!wp_next_scheduled('single_cron_job')) //schedule event to run after 60 seconds (or one minute) wp_schedule_single_event (time()+60, 'single_cron_job'); } @ RelationshipEntity`之间存在多个值,并且我不确定如何将数组编入索引.. < / p>

请告知如何正确设计此类架构以及选择何种方式。

0 个答案:

没有答案