Loading...
Skip to Content

Our Products · Ontological DB

Ontological DB

Agentic AI를 위한 온톨로지 데이터베이스. PostgreSQL이 그대로 그래프 데이터베이스가 됩니다.
Cypher로 묻고, 다른 시스템의 데이터는 복사하지 않고 그래프로 잇습니다.

PostgreSQL 16 확장 · Rust(pgrx) · Apache-2.0 오픈소스 · GitHub · 문서 · 튜토리얼

그래프 DB를 하나 더 세우지 않고, 데이터를 복사하지 않습니다

구매는 ERP에, 물류는 WMS에, 고객은 CRM에 있습니다. “동아시아에 리스크가 걸린 공급사의, 아직 도착하지 않은 선적은?” 같은 질문은 시스템 사이의 관계를 따라가야 답이 나옵니다. 그래서 흔히 그래프 데이터베이스를 따로 세우고 데이터를 ETL로 옮기는데, 그러면 서버와 권한을 두 벌로 관리하게 되고 복사본은 언제나 원천보다 늦습니다.

Ontological DB는 이미 쓰고 있는 PostgreSQL에 확장 하나로 그래프를 더합니다. 데이터는 Cypher로 묻고, 다른 데이터베이스의 테이블은 복사하지 않고 그래프의 노드로 선언해 질의하는 순간 원천에서 읽습니다. 권한·감사·과거 시점 조회는 데이터베이스가 직접 지키므로, 사람이 쓰든 AI 에이전트가 쓰든 같은 규칙이 적용됩니다.

데모 ① 흩어진 공급망 데이터를 복사 없이, Cypher 하나로 — 데이터소스 · 가상 노드 · 가상 관계 (2:23)

선언 셋, 질의 하나

외부 DB를 데이터소스로 등록하고, 테이블을 노드로, 시스템 사이의 키 대응을 관계로 한 번만 선언합니다. 그다음부터는 조인 조건을 적지 않아도 Cypher 패턴 하나가 여러 DB를 건넙니다.

CREATE DATASOURCE wms WITH ENGINE = 'mysql',
  PARAMETERS = {host: '…', database: 'wms', password: $pw}
CREATE VIRTUAL NODE Shipment FROM wms.shipment KEY shipment_no
CREATE VIRTUAL RELATIONSHIP SHIPPED_BY
  FROM Shipment(vendor_code) TO Supplier(supplier_id)
// 리스크는 그래프에, 공급사는 ERP에, 선적은 WMS에
MATCH (:Region {name: 'East Asia'})<-[:IN_REGION]-(e:RiskEvent)
      -[:AFFECTS]->(s:Supplier)<-[:SHIPPED_BY]-(sh:Shipment)
WHERE sh.ship_status <> 'DELIVERED'
RETURN e.title, s.name, sh.shipment_no

그래프에 저장한 지식(리스크)과 원천 시스템의 행(공급사·선적)이 한 질의에서 섞입니다. 데이터는 한 행도 복사되지 않습니다.

2분 남짓의 데모 영상

빈 데이터베이스에서 시작해 포털 편집기에 실제로 입력하고 실행한 화면입니다. 설명은 화면 자막으로 들어 있습니다.

데모 ② 세 언어, 하나의 그래프 — OWL로 들어온 온톨로지를 Cypher와 TypeQL이 함께 읽고 씁니다 (2:55)

데모 ③ 시간 여행 — 같은 질의를 다섯 번, 시점만 바꿔 묻습니다 (2:16)

데모 ④ 내장 보안 — 같은 질의가 역할에 따라 다른 경로를 돌려줍니다 (2:38)

데모 ⑤ 스키마 진화 — 운영 중인 그래프에서 잘못된 타입을 고칩니다 (2:08)

데모 ⑥ 에이전트 인터페이스 — 스키마를 읽고, 틀리고, 고치는 과정 (2:02)

데모 ⑦ 벡터 검색 — 문서 검색이 놓친 답을 관계 검색이 찾습니다 (2:16)

주요 기능

애플리케이션이 따로 구현하던 일을 데이터베이스가 직접 합니다 — 기능마다 실제로 실행해 확인한 튜토리얼이 있습니다

Vehicle 라벨 하나로 트럭·전기 트럭·밴이 함께 답하는 Cypher 결과와 왼쪽의 타입 계층

Cypher를 말하는 PostgreSQL

Cypher 질의를 PostgreSQL 플래너가 최적화하는 평범한 SQL로 컴파일합니다. 속성은 JSON 덩어리가 아니라 타입마다 생성되는 실제 컬럼이라 인덱스·통계·제약이 그대로 걸리고, 상위 라벨 하나로 물으면 하위 타입이 함께 답합니다. Neo4j 드라이버는 접속 주소만 바꿔 Bolt로 붙습니다.

Bolt 4.4 게이트웨이 — 인증은 PostgreSQL 역할 그대로, Neo4j MCP 서버도 수정 없이 동작
Neo4j 공식 Movies 예제의 가이드 질의 24개가 Neo4j와 같은 결과
OWL 온톨로지를 타입 계층으로 받고, 같은 그래프를 TypeQL로도 읽고 씀
그래프에 저장한 지역·리스크 노드와 ERP의 공급사 행이 한 그래프 결과에 함께 나온 화면

복사 없는 데이터 패브릭

CREATE DATASOURCE … WITH ENGINE로 외부 DB를 등록하고 CREATE VIRTUAL NODE … FROM … KEY …로 테이블을 노드로 선언합니다. 조건과 같은 DB 안의 조인은 원천으로 내려가고, 넘어오는 것은 필요한 행뿐입니다. 여러 원천을 묶는 조인·집계는 노드 정의(AS SELECT)에 한 번만 둡니다.

원천 PostgreSQL · MySQL/MariaDB · Oracle · SQL Server(TDS 7.2)
PostgreSQL · Oracle · SQL Server 가상 노드를 잇는 Cypher 실측 약 140 ms, 한글 그대로
원천은 읽기 전용 — 원천 계정에 쓰기 권한이 있어도 엔진이 먼저 거부
스키마 디자이너 — 나이 속성을 정수로 바꾸는 변경이 검증에서 위반 1건으로 멈추고 막는 노드 id를 알려 주는 화면

서비스 중에 바꾸는 스키마

스키마 변경은 계획 → 확장 → 이행 → 검증 → 축소를 거치는 기록된 작업입니다. 계획 단계는 아무것도 바꾸지 않고, 변환할 수 없는 값이 몇 개이고 어느 노드인지 먼저 알려 줍니다. 변경 도중에도 읽기는 계속 답하고, 새 타입에 맞지 않는 쓰기는 그 순간부터 거부됩니다.

기존 행은 배치로 옮기고, 멈춘 곳에서 이어 감
이름 변경 · 상위 타입 추가는 행을 한 줄도 다시 쓰지 않음
스키마 버전마다 카탈로그 스냅샷과 변경 이력
시간 여행 막대에 시점을 넣고 같은 질의를 다시 실행해 2021년과 현재의 연봉이 다르게 나온 결과

시간 여행 — 그때의 답을 같은 질의로

타입마다 유효 시간과 시스템 시간을 함께 기록합니다. 세상이 바뀐 일(변경)과 잘못 적은 값을 고친 일(정정)이 구별되므로, “2023년 6월의 실제 연봉”과 “감사 보고서를 낼 때 우리가 알던 2023년 6월의 연봉”이 서로 다른 답으로 나옵니다.

질의는 그대로, 세션의 시점만 바꿈 — 컴파일된 SQL도 같음
미래 날짜의 변경은 그날이 오기 전까지 오늘의 답을 바꾸지 않음
시점을 답할 수 없는 질의는 오늘 데이터 대신 오류로 거부
같은 질의를 간호사와 의사 역할로 실행해 간호사에게는 경로 2개, 의사에게는 3개가 나온 결과

권한은 데이터베이스가 지킵니다

사용자는 PostgreSQL 역할이고, Bolt로 접속해도 그 역할로 인증됩니다. 타입에 행 수준 보안을 걸면 보이지 않는 노드는 조인에서 빠지고, 그 노드를 지나는 경로 전체가 결과에서 사라집니다. 결과에 그 노드가 없어도 순회 도중에 권한이 적용됩니다.

쓰기 권한은 타입 · 연산 · 속성 단위 — Cypher든 SQL이든 Bolt든 같은 거부
AI 에이전트에게는 파라미터 계약과 전제 조건이 붙은 행위(Action)만 허용
누가 · 누구를 대신해 · 왜 했는지 감사 기록 — 쓰기 역할도 고칠 수 없음
질의를 실행하기 전 진단 — 패턴 단계별 행 수와 연결되지 않은 노드에 대한 카티션 곱 경고

에이전트가 스스로 고치는 인터페이스

처음 보는 그래프에서 에이전트가 필요로 하는 것을 데이터베이스가 직접 줍니다. 프롬프트에 넣을 크기로 줄인 스키마, 실행하지 않고 받는 오류 코드와 정정 후보, 틀리지 않았는데 0행인 이유, 실행 전의 비용 추정입니다.

관계의 방향까지 담은 스키마 요약
0행이면 패턴의 어디서 끊겼는지 짚어 줌
카티션 곱은 실행 전에 경고, 실행한 질의는 감사 로그에
관계에 붙은 임베딩으로 해결 사유가 비슷한 고객 문의와 문서를 찾아 그래프로 보여 주는 결과

관계에도 붙는 임베딩

임베딩은 별도 벡터 저장소가 아니라 프로퍼티라서 노드뿐 아니라 관계에도 선언됩니다. “이 문의가 왜 이 문서로 해결됐는가” 같은 관계의 맥락을 의미로 찾고, 유사도 정렬을 그래프 패턴·조건과 함께 SQL 한 문장으로 실행합니다.

Neo4j와 같은 CREATE VECTOR INDEX 문장
조건은 상위 k개를 자르기 전에 적용
벡터 순위와 그래프 거리를 합치는 하이브리드 검색(RRF)
Ontological Portal — 왼쪽에 타입·관계·상속 계층, 오른쪽에 Cypher가 컴파일된 SQL과 그래프 결과

Ontological Portal

그래프를 직접 다루는 웹 콘솔입니다. 편집기에 Cypher와 패브릭 문장을 치면 결과가 그래프 · 표 · JSON으로 나오고, SQL 탭에는 그 Cypher가 컴파일된 SQL이 그대로 보입니다. 왼쪽에는 타입과 관계, 상속 계층이 정리되어 있습니다.

Graph · Table · JSON · SQL 탭
스키마 지도(디자이너) · 시간 여행 막대 · 질의 기록
:schema · :why · :explain 명령, 비밀번호는 :param으로(기록에 남지 않음)

동작 방식

새 서버가 아니라 PostgreSQL 확장입니다. 원천 데이터베이스에는 PostgreSQL의 외부 테이블(FDW)로 닿고, Cypher는 플래너가 비용을 매기는 SQL이 됩니다.

1. 설치

PostgreSQL 16에서 CREATE EXTENSION ontological. 그래프는 이 데이터베이스 안의 테이블과 인덱스입니다.

2. 연결

CREATE DATASOURCE로 원천 DB를 등록합니다. 등록만 해도 원천의 테이블이 보이고, 데이터는 한 행도 옮기지 않습니다.

3. 선언

테이블을 가상 노드로, 시스템 사이의 키 대응을 가상 관계로 한 번 선언합니다. 이후 모든 홉이 그 조인입니다.

4. 질의

Cypher가 SQL로 컴파일됩니다. 조건과 같은 DB 안의 조인은 원천으로 내려가고, 서로 다른 DB 사이의 조인은 PostgreSQL이 맡습니다.

5. 확인

질의 앞에 EXPLAIN FABRIC을 붙이면 원천마다 실제로 보낸 SQL과 넘어온 행 수를 단계별로 보여 줍니다.

6. 통제

역할 · 행 수준 보안 · 감사 · 시점 조회는 PostgreSQL의 것을 그대로 씁니다. 원천에는 쓰지 않습니다.
데이터 패브릭 예 — 그래프의 지역·리스크, PostgreSQL ERP의 공급사·발주·품목, MySQL WMS의 선적·재고, MySQL CRM의 고객·주문·클레임이 점선의 가상 관계로 이어진 구조도
점선이 DB를 넘는 가상 관계입니다. 실선은 한 DB 안의 관계입니다.
EXPLAIN FABRIC 결과 — ERP에서는 조인이 원천에서 실행되고, WMS에는 지연 조건이 붙은 SQL만 내려가 2행이 넘어온 단계별 표
EXPLAIN FABRIC — ERP는 발주와 공급사를 자기 안에서 조인했고, WMS는 지연 조건에 맞는 2행만 보냈습니다.

그래프 DB를 따로 두는 방식과 무엇이 다른가

관계를 따라 묻기 위해 별도 그래프 데이터베이스를 세우고 업무 데이터를 ETL로 옮기는 구성과 비교했습니다.

구분 별도 그래프 DB + ETL 복제 Ontological DB
설치 · 운영 그래프 DB 서버를 따로 세우고 운영 쓰고 있는 PostgreSQL에 확장 하나
업무 데이터 ETL로 복사 — 복사본은 원천보다 늦음 가상 노드로 질의하는 순간 원천에서 읽음, 복사 없음
시스템 사이의 조인 질의할 때마다 조인 조건을 다시 작성 가상 관계로 한 번 선언, 이후 모든 홉이 그 조인
권한 · 감사 그래프 DB와 원천에 각각 설정 PostgreSQL 역할 · 행 수준 보안 · 감사 하나, 순회 도중에도 적용
과거 시점 조회 스냅샷이나 이력 테이블을 따로 설계 세션 시점만 바꾸면 같은 Cypher가 그때의 답
스키마 변경 마이그레이션 스크립트를 별도로 작성 계획 → 확장 → 이행 → 검증 → 축소, 서비스 중에
접속 방법 그래프 DB 전용 드라이버 Neo4j 드라이버(Bolt)와 PostgreSQL 클라이언트 모두

현재 범위 — 원천 데이터베이스는 읽기 전용이며, 가상 관계의 가변 길이 순회(*1..n)는 아직 지원하지 않습니다. Cypher의 UNION과 SPARQL도 아직입니다. 기능마다 되지 않는 것은 제품 문서에 함께 적어 두었습니다.


Ontological Studio

Ontological Studio에 들어 있습니다

Ontological DB는 데스크톱 앱 Ontological Studio의 엔진입니다. 설치 파일 하나에 PostgreSQL 16과 Ontological 확장, Bolt 게이트웨이, 포털이 함께 들어 있어 따로 설치하지 않고 바로 써 볼 수 있습니다.

데이터소스 탭에서 원천 DB를 연결해 가상 노드로 노출하고, 그 위에서 에이전트가 온톨로지를 만들고 근거와 함께 답합니다. 서버에 직접 설치하려면 GitHub의 소스를 받아 확장을 빌드합니다.

Ontological Studio 데이터소스 탭 — 원천 데이터베이스를 연결하고 가상 노드로 노출하는 화면

연관 솔루션

온톨로지를 만들고, 실행하고, 일에 씁니다

Ontological Studio

문서와 원천 DB를 복제 없이 연결해 에이전트가 온톨로지를 만들고, 근거와 함께 답하고, 승인을 거쳐 업무 시스템 액션까지 실행하는 데스크톱 앱입니다.

살펴보기

Ontologic Platform

온톨로지 위에서 자연어 질의 · 원인 분석 · What-if 시뮬레이션 · 감시 자동화를 수행하는 실행 플랫폼입니다.

살펴보기

Process GPT

사람 · AI 에이전트 · 기존 시스템을 하나의 업무 프로세스로 잇는 에이전트 프로세스 플랫폼입니다.

살펴보기

직접 돌려 보세요

Ontological DB는 Apache-2.0 오픈소스입니다. 기능마다 빈 데이터베이스에서 실제로 실행한 튜토리얼 일곱 편이 있습니다.
가장 빠른 길은 Ontological Studio를 설치하는 것입니다.


더 궁금한 점이 있으신가요?

Ontological DB에 대해 더 알고 싶으시거나 문의사항이 있으시면 언제든지 연락주세요.