서버 측 도구#

AgensGraph에 딸려 오는 도구는 PostgreSQL의 것이므로 PostgreSQL의 해당 레퍼런스가 그대로 적용되며 여기서 되풀이하지 않습니다. 이 페이지는 다른 점, 그리고 가장 많이 쓰는 도구에 그래프가 더하는 것을 다룹니다.

대화형 클라이언트와 그 그래프 메타 명령은 agens 클라이언트를 참고하십시오.

AgensGraph가 도구 모음에 더하는 것#

도구 두 개가 두 번째 이름으로도 배포됩니다:

AgensGraph 이름

PostgreSQL 이름

차이

agens

psql

브랜딩뿐입니다. 둘 다 설치되며, 그래프 메타 명령은 어느 쪽에서도 동작합니다.

ag_ctl

pg_ctl

브랜딩뿐입니다. 둘 다 설치됩니다.

agens --version
agens (AgensGraph) 2.18.6.0

참고

개발 브랜치에서 빌드한 것은 대신 -devel 접미사를 붙여 알려 줍니다.

psql --version
psql (PostgreSQL) 18.6

그 밖의 모든 것 — initdb·pg_dump·pg_dumpall·pg_restore·pg_upgrade· pg_basebackup·pg_controldata·pg_checksums·vacuumdb·reindexdb·createdb와 나머지 — 은 PostgreSQL 이름과 PostgreSQL 동작을 그대로 지닙니다.

AGDATA는 기본 데이터 디렉터리로서 PGDATA와 나란히 동작하므로, export AGDATA=/path/to/data 를 해 두면 -D를 생략할 수 있습니다. 이것을 읽는 바이너리는 정확히 셋 — initdb·pg_ctl·ag_ctl — 이고, 우선순위가 서로 다릅니다. initdb는 PGDATA보다 AGDATA를 앞세우고, pg_ctl과 ag_ctl은 PGDATA를 앞세웁니다. 그 밖의 모든 도구는 PGDATA만 받습니다.

기동과 정지#

ag_ctl -D /path/to/data -l /path/to/data/server.log start
ag_ctl -D /path/to/data status
ag_ctl -D /path/to/data reload
ag_ctl -D /path/to/data stop -m fast

systemd에서는 PostgreSQL 자신의 유닛 관례를 쓰고 그것이 AgensGraph 바이너리를 가리키게 하십시오. 여기에 그래프에만 해당하는 것은 없습니다. 배포를 참고하십시오.

그래프 덤프하기#

그래프는 스키마이고 그 레이블은 테이블이므로, pg_dump와 pg_dumpall은 특별한 옵션 없이 그래프를 다룹니다. 따라서 덤프에는 CREATE GRAPH·CREATE VLABEL·CREATE ELABEL 문장과 레이블 데이터가 담깁니다.

pg_dump -d mydb -f mydb.sql
pg_dump -d mydb -Fc -f mydb.dump

그래프 하나만 덤프하려면 그 스키마를 지정하십시오:

pg_dump -d mydb --schema=moviekb -f moviekb.sql

그래프에만 해당하는 알아 둘 것 네 가지입니다:

  • 두 도구 모두 AgensGraph 버전을 검사하지 않습니다. PostgreSQL 자신의 server_version 범위 검사만 적용되므로, 더 새 덤프를 더 낡은 서버에 복원하면 앞에서 거부되는 대신 도중에 파싱 실패로 드러납니다.

  • 평범한 컬럼을 지닌 레이블의 덤프는 그 ALTER TABLE 문장을 SET enable_graph_ddl = on으로 감쌉니다. 그 설정은 어느 롤이든 쓸 수 있으므로 평범한 사용자도 복원할 수 있습니다. 그 롤에 ALTER ROLE … SET으로 강제로 꺼 두지 않았다면 말입니다.

  • 어떤 그래프든 승격된 컬럼을 쓰고 있으면 2.18 덤프는 2.17에 복원되지 않습니다. 내보내진 CREATE VLABEL 형태를 2.17 파서가 받아들이지 못하며, 평문 스트림에서는 그 문장 뒤의 모든 것이 유실됩니다.

  • Cypher 쿼리로 정의한 뷰는 그 Cypher가 컴파일된 SQL로 덤프됩니다. 사용자가 쓴 Cypher가 아닙니다. 복원되고 동작하지만, 되돌려 받는 정의는 사용자가 쓴 정의가 아닙니다. SQL과 Cypher 섞어 쓰기를 참고하십시오.

복원한 뒤에는 그래프 메타데이터를 다시 만들고 다시 ANALYZE 하십시오. 정확한 명령은 2.18로 업그레이드하기에 있으며, 업그레이드뿐 아니라 모든 복원에 적용됩니다.

메이저 버전 간 업그레이드#

pg_upgrade는 특별한 처리 없이 그래프에서 동작하며, AgensGraph에만 해당하는 조건이 둘 있습니다:

  • 레이블이 id·start·end·properties 말고 다른 컬럼을 지닌 그래프는, 물리적 컬럼 배치를 망가뜨리는 대신 거부합니다.

  • 끝난 뒤에는 ag_graphmeta가 비어 있고 그래프가 무효로 표시되므로, regather_graphmeta()를 실행하기 전까지 플래너의 스캔 쳐내기가 꺼져 있습니다.

전체 절차는 2.18로 업그레이드하기에 있고, 업그레이드 실습은 실제 출력을 곁들인 예제입니다.

베이스 백업과 WAL#

pg_basebackup·WAL 아카이빙·pg_receivewal·pg_verifybackup·pg_rewind는 모두 그래프를 있는 그대로 — 같은 클러스터 안의 스키마와 테이블로 — 다루므로, 물리 백업은 그래프 데이터와 관계형 데이터를 같은 시점에 함께 담습니다. 백업과 복구를 참고하십시오.