OrientDB를 사용하면 클래스 계층 구조, 상속 및 다형성 쿼리를 사용할 수 있습니다. 당신은 "Class1"(관련)과 "Class2"(세부 사항) 두 가지 클래스를 가질 수 있습니다. 둘 다 수퍼 클래스를 공유합니다 (예 : "SuperClass").
MATCH
{class:Class1, as:p1} -TheEdgeClass-> {class:Class1, as:p2, while:($depth < 10)}
RETURN $elements
또는 슈퍼 클래스에
, 당신은 모두 적절하고 세부 사항을 필요로하는 경우 :
MATCH
{class:SuperClass, as:p1} -TheEdgeClass-> {class:SuperClass, as:p2, while:($depth < 10)}
RETURN $elements
두 번째 쿼리 만 관련 기록을 필요로하는 경우
그런 다음, 서브 클래스에 쿼리를 실행할 수 있습니다 그것은 모두 "Superclass"를 확장하기 때문에 "Class1"과 "Class2"의 두 레코드를 모두 반환한다는 의미입니다.
가장자리 클래스에도 똑같이 적용되므로 가장자리의 클래스 계층 구조를 가질 수 있으며 다형성을 사용하여 통과해야하는 관계를 선택할 수도 있습니다.
물론 다른 전략이 있습니다. 패턴에 WHERE 조건을 추가하고 속성을 기준으로 필터링 할 수 있지만 데이터 지역성의 이점을 잃을 수 있습니다 (다른 클래스의 레코드는 다른 파일에 저장되므로 단일 클래스를 기반으로 쿼리 할 때 더 많은 기회를 가질 수 있습니다. 핫 캐시 및 적은 디스크 액세스).
또한 클래스 계층 구조가 여러 수준 깊이 일 수 있다고 생각하십시오 (실제 클래스 트리)
감사합니다!Neo4J에서는 (특히 와일드 카드 트래버 설에서) 트래버스를 수행하는 동안 이동하지 않도록 지정하는 여러 가지 기타 노드가있는 경우 다른 쿼리의 속도가 느려집니다. –