용어집#

이 매뉴얼이 쓰는 용어이며, 각 용어를 제대로 다루는 페이지로 가는 링크를 함께 두었습니다. 여럿이 서로 나란히 놓여야만 뜻이 통하므로, 용어를 가나다순이 아니라 무엇을 설명하는지에 따라 묶었습니다.

모델#

속성 그래프(property graph)

데이터가 간선으로 이어진 정점의 집합이고, 그 둘 모두 이름 붙은 값을 지니는 데이터 모델입니다. AgensGraph는 속성 그래프 하나와 관계형 테이블 한 벌을 같은 데이터베이스에 담으며, 문장 하나가 둘 다 읽을 수 있습니다. 속성 그래프 모델을 참고하십시오.

그래프(graph)

이름이 붙은 속성 그래프입니다. 레이블 집합을 담는 그릇이자 graph_path가 고르는 단위입니다. 그래프는 CREATE GRAPH로 만드는 PostgreSQL 스키마입니다. 그래프가 어떻게 저장되는가를 참고하십시오.

정점(vertex)

그래프 안의 개체 하나입니다. 사람, 영화, 계정 같은 것입니다. 정점은 식별자 하나와 정확히 하나의 레이블, 그리고 속성의 집합을 가집니다. label[graphid]{properties} 형태로 찍히며, 예를 들어 movie[3.7]{"title": "Avatar"} 입니다. 속성 그래프 모델을 참고하십시오.

간선(edge)

정점 둘 사이의 방향 있는 연결 하나이며, 자기 레이블과 속성을 가집니다. 간선은 양 끝점 없이는 존재할 수 없습니다. 모든 간선은 방향이 있고, 패턴은 어느 방향으로든 그것을 지날 수 있습니다. 속성 그래프 모델을 참고하십시오.

속성(property)

정점이나 간선에 붙은, 이름이 있는 값 하나입니다. title·year·weight 같은 것입니다. 속성에는 스키마가 없습니다. 레이블이 같은 정점 둘이 같은 키를 지녀야 할 이유가 없습니다. 속성들은 요소마다 하나씩 있는 jsonb 문서 안에 함께 삽니다. 속성 키는 식별자가 아니므로 키워드 예약이나 대소문자 접기의 영향을 받지 않습니다. 그래프가 어떻게 저장되는가를 참고하십시오.

레이블(label)

정점이나 간선을 분류하는 이름이자 저장의 단위입니다. 레이블은 PostgreSQL 테이블입니다. 정점은 레이블을 정확히 하나 가지며, 정점을 만든 뒤에는 바꿀 수 없습니다. 레이블의 집합이란 것은 없습니다. 그래프가 어떻게 저장되는가를 참고하십시오.

vlabel

정점 레이블이며 CREATE VLABEL로 만드는 것입니다. 그 테이블은 (id graphid, properties jsonb)이고 그래프의 ag_vertex를 상속합니다. 데이터 정의를 참고하십시오.

elabel

간선 레이블이며 CREATE ELABEL로 만드는 것입니다. 그 테이블은 vlabel의 컬럼에 start와 end를 더하고 그래프의 ag_edge를 상속합니다. 데이터 정의를 참고하십시오.

레이블 상속(label inheritance)

레이블은 다른 레이블을 상속할 수 있으며, 그래서 부모에 대한 일치가 모든 자식의 행도 함께 반환합니다. 레이블 집합 대신 개체 하나가 여러 역할을 맡는 방법이 이것입니다. MATCH (n:parent ONLY)이 그것을 끕니다. 레이블 상속을 참고하십시오.

식별과 지칭#

graphid

정점이나 간선의 식별자이자 일급 타입입니다. 레이블 id.로컬 id 라는 숫자 둘로 찍히는 64비트 값입니다. 그래서 3.7은 레이블 3의 7번 행입니다. 그것을 반환하는 것은 id(n)입니다. n.id는 아닙니다. id는 평범한 속성 이름일 뿐이기 때문입니다. 제한을 참고하십시오.

graph_path

문장이 상대할 그래프를 가리키는 설정입니다. 기본값은 없습니다. graph_path가 설정돼 있지 않으면 모든 그래프 문장이 ERROR: graph_path is NULL로 거부됩니다. 세션에는 SET graph_path = name으로, 그 밖에 롤마다 또는 클러스터 전체에 설정할 수 있습니다. 설정을 참고하십시오.

쿼리#

경로(path)

정점과 간선이 번갈아 이어진 것이며, 생성자가 아니라 패턴이 만들어 냅니다. MATCH p = (a)-[e]->(b)가 그것을 graphpath 타입의 값으로 묶고, 그다음 nodes()· relationships()·length()가 그것을 읽습니다. 그래프 읽기를 참고하십시오.

순회(traversal)

한 정점에서 간선을 따라 다른 정점에 닿는 것입니다. 그래프 쿼리는 키로 조인하는 대신 이것을 합니다. 깊이를 모르는 순회는 수량이 붙은 간선 -[r*1..3]->으로 씁니다. 그래프 읽기를 참고하십시오.

속성 인덱스(property index)

속성 표현식에 대한 인덱스이며 CREATE PROPERTY INDEX ON label (key)로 만듭니다. 키가 properties 문서에 대한 표현식인 PostgreSQL 인덱스이고, 평범한 CREATE INDEX로는 그 키를 적을 수 없습니다. 그래프가 어떻게 저장되는가를 참고하십시오.

승격된 컬럼(promoted column)

선언한 타입의 실제 컬럼을 받은 속성이며, properties 문서에서 생성되어 저장됩니다. 속성 읽기가 그 컬럼으로 해석되므로 그것에 대한 평범한 인덱스가 쿼리를 처리하고 값도 자기 타입을 지킵니다. 예제 데이터셋의 movie.year가 그런 것입니다. CREATE VLABEL과 ALTER VLABEL을 참고하십시오.

언어#

Cypher

AgensGraph가 처음부터 받아 온 그래프 쿼리 언어입니다. 선언형이고, 패턴을 ASCII로 그려 일치시킵니다. AgensGraph의 방언은 다른 구현과 비슷하지만 같지는 않습니다. Cypher, GQL, SQL과 Cypher 호환성을 참고하십시오.

GQL

그래프 쿼리 언어의 국제 표준인 ISO/IEC 39075:2024입니다. 2.18 릴리스가 그 상당 부분을 구현했으며, LET·NEXT·FILTER·FINISH·INSERT·FOR 문장이 거기에 들어갑니다. GQL은 별도의 모드가 아닙니다. GQL의 문장과 Cypher의 문장은 한 파이프라인에서 자유롭게 섞입니다. GQL 적합성을 참고하십시오.

관련 항목#