Spanner Graph 알고리즘 스키마 요구사항 및 기능 호환성

스키마 요구사항

Spanner Graph 알고리즘은 다음 요구사항을 충족하는 스키마가 있는 그래프에서 실행할 수 있습니다.

  • 에지 입력 테이블은 소스 노드 입력 테이블에 인터리브 처리되어야 하며 대상 노드 입력 테이블에 대한 외래 키 또는 정보 외래 키가 있어야 합니다. Spanner Graph 스키마 설계 권장사항을 참고하세요.
  • 그래프 알고리즘의 각 입력 테이블에는 고유한 식별 라벨이 있어야 합니다.

다음은 지원되지 않는 스키마의 예입니다.

-- Unsupported: Both `Person` and `Account` can only be referred to via label `Entity`.
CREATE PROPERTY GRAPH FinGraph
  NODE TABLES (
    Person KEY (id)
      LABEL Entity PROPERTIES (...),
    Account KEY (id)
      LABEL Entity PROPERTIES (...)
  );

다음은 지원되는 스키마의 예시입니다.

-- Supported: Even though label `Entity` refers to both `Person` and `Account`,
-- label `Customer` uniquely identifies `Person`, label `Account` uniquely identifies `Account`.
CREATE PROPERTY GRAPH FinGraph
  NODE TABLES (
    Person KEY (id)
      LABEL Customer PROPERTIES (...)
      LABEL Entity PROPERTIES (...),
    Account KEY (id)
      LABEL Account PROPERTIES (...)
      LABEL Entity PROPERTIES (...)
  );

기능 호환성

이 섹션에서는 일반 그래프 기능과의 알고리즘 쿼리 호환성을 간략하게 설명합니다.

지원되는 MATCH 절

알고리즘 쿼리 구조에서 MATCH 절을 사용하여 알고리즘의 입력 그래프를 정의할 때는 다음 사항을 고려해야 합니다.

  1. MATCH에는 이름이 지정된 변수가 하나인 요소 패턴 (노드 또는 에지)이 하나만 포함되어야 합니다.
  2. 에지 패턴에 종료 노드의 명시적 패턴이 포함된 경우 노드 패턴에서 노드 라벨이나 변수를 사용하지 마세요.
  3. 다른 곳에 정의된 변수를 참조하지 않는 경우 요소 패턴 내에서 WHERE 절을 사용할 수 있습니다.
  4. MATCH 절의 라벨 표현식은 하나의 요소 테이블을 고유하게 식별해야 합니다.

다음 예에서는 지원되는 MATCH 절을 보여줍니다.

-- Supported: Assuming only 1 element table has `Account` label:
MATCH (a:Account)

MATCH (a:Account WHERE a.id > 400)

MATCH (a:Account WHERE a.id IN [101, 102, 105])

MATCH -[e:Transfers WHERE e.amount < 500]->

다음 예에서는 지원되지 않는 MATCH 절을 보여줍니다.

-- Unsupported: End nodes for edge patterns cannot have labels or named variables.
MATCH (a:Account)-[]->

-- Unsupported: Each MATCH can only name one variable.
MATCH (a:Account)-[e:Transfers]->

-- Unsupported: If there are multiple node element tables in the graph, each MATCH
-- must uniquely identify one element table.
MATCH (a)

-- Unsupported: The `Entity` label maps to both `Account` and `Person` node element tables.
MATCH (a:Account | Entity)

RETURN 절 사용

알고리즘 쿼리 구조RETURN 절은 알고리즘 쿼리에서 반환되는 데이터를 정의합니다. 다음과 같은 제약 조건에 따라 RETURN 절에서 알고리즘의 출력 서명의 열을 참조할 수 있습니다.

  • 알고리즘이 노드를 출력하는 경우 노드의 속성을 반환할 수 있습니다. 노드의 ELEMENT_DEFINITION_NAME을 반환할 수도 있습니다.
  • 알고리즘이 경로를 출력하는 경우 PATH_LENGTH(path).를 반환할 수 있습니다.
  • 알고리즘에서 스칼라 출력을 반환할 수 있습니다.
  • 리터럴 상수를 반환할 수 있습니다.

다음 예에서는 지원되는 RETURN 절을 보여줍니다.

-- Supported.
CALL PageRank(...) YIELD node, score
RETURN ELEMENT_DEFINITION_NAME(node) AS node_type, node.id, score

-- Supported: You can return constants.
CALL PageRank(...) YIELD node, score
RETURN node.id, score, "pagerank-run1" AS algo_run_id

-- Supported.
CALL ShortestPath(...) YIELD source_node, target_node, path, cost
RETURN source_node.id AS source_id, target_node.id AS target_id,
  PATH_LENGTH(path) AS length, cost

다음 예에서는 지원되지 않는 RETURN 절을 보여줍니다.

-- Unsupported: You cannot return the graph element `node` directly.
RETURN node, score

-- Unsupported: You can only return properties of `node`. Applying a function to a node property
-- is not supported.
RETURN node.id + 1, score

-- Unsupported: You can only return the scalar `score` directly from the algorithm output. Applying
-- a function to scalar output is not supported.
RETURN node.id, score + 1

-- Unsupported: General function calls are not allowed.
RETURN JSON_OBJECT(node.id, score) as json_obj

매개변수가 지원되지 않음

알고리즘 쿼리는 쿼리 매개변수를 지원하지 않습니다.

뷰에서 생성된 그래프 지원

보기에서 그래프를 만들 때 알고리즘 입력을 정의하는 데 사용되는 노드와 가장자리 (가장자리의 끝 노드 포함)가 보기를 기반으로 하지 않는 경우에만 알고리즘 쿼리가 지원됩니다.

다음 단계