기반 데이터셋 매핑 — 컬럼을 속성으로 잇기
직전 레슨에서 정의한 엔티티에 실제 데이터셋을 연결합니다. 컬럼과 속성의 1:1 매핑, Identity Keys 매핑, 백엔드 sink 자동 동기화, 그리고 같은 데이터셋이 여러 엔티티를 떠받칠 수 있는가의 결정까지.
직전 레슨에서 엔티티의 모양을 정의했습니다. 본 레슨은 그 모양 안에 실제 데이터가 흐르도록 데이터셋을 연결합니다. 매핑이 끝나면 백엔드 sink 가 그래프 데이터베이스에 인스턴스를 자동 적재하고, 다음 레슨의 그래프 탐색기에서 노드가 처음 보이기 시작합니다.
기반 데이터셋 한 줄 정의
엔티티/관계는 의미 레이어입니다. 기반 데이터셋(backing dataset) 은 그 의미 레이어를 떠받치는 실제 표 데이터입니다.
- 한 엔티티는 한 기반 데이터셋을 가집니다.
- 기반 데이터셋의 References 탭에는 이 엔티티가 자동 등록됩니다 — 데이터셋 시점으로 들어와도 나를 떠받침으로 쓰는 엔티티가 누구인지 한눈에 보입니다.
- 데이터셋은 같은 컬렉션 안에 있어야 매핑 드롭다운에 노출됩니다. 1 컬렉션 = 1 온톨로지 스코프 규칙의 연속.
매핑 절차
직전 레슨의 IOT_Machine 엔티티를 같은 컬렉션의 machines 데이터셋에 잇는 흐름입니다.
- 빌더 캔버스에서
IOT_Machine노드를 클릭해 인스펙터를 엽니다. - 인스펙터의 Data Source (또는 Mapping) 탭을 선택합니다.
- 데이터셋 선택 드롭다운에서 같은 컬렉션의
machines데이터셋을 고릅니다. 다른 컬렉션의 데이터셋은 의도적으로 보이지 않습니다. - 필드 매핑 영역에서 엔티티 속성 한 줄씩 옆에 데이터셋 컬럼 드롭다운이 뜹니다. 1:1 로 맞춥니다.
- Identity Keys 매핑 — 직전 레슨에서 체크한
machine_id옆에 데이터셋의 PK 역할 컬럼을 명시합니다. 이 매핑이 명시돼야 인스턴스 단위 조회가 가능해집니다.
IOT_Machine 의 매핑은 컬럼명이 그대로 일치하므로 다음처럼 정리됩니다.
| 엔티티 속성 | 데이터셋 컬럼 | 비고 |
|---|---|---|
machine_id (Identity Key, Display) | machine_id | PK 역할 |
sensor_count | sensor_count | |
reading_count | reading_count | |
latest_recorded_at | latest_recorded_at | Timestamp(ms) |
anomaly_count | anomaly_count | |
latest_health_score | latest_health_score | Float (0–1) |
같은 컬렉션의 운영 DB 미러가 IOT_Sensor 엔티티의 backing 으로 들어가는 그림을 함께 그려 두면, 02 레슨에서 만든 그래프의 다음 노드가 자연스럽게 자리 잡습니다(sensor_id 가 Identity Key).
컬럼명이 일치하지 않으면
운영 데이터셋의 컬럼명이 도메인 어휘와 다를 때(예: mch_id, ts_ms)가 흔합니다. 이 표면에서 컬럼명을 바꾸지 않습니다 — 매핑 드롭다운에서 어느 컬럼이 어느 속성에 들어갈지만 결정합니다. 데이터셋 컬럼명 자체를 바꿔야 한다면 두 가지 길이 있습니다.
- 엔지니어 코스 03 레슨의 컬럼 선택/이름 바꾸기 노드 — 파이프라인 상류에서 한 번 정리해 마트 데이터셋을 만들고, 그 마트를 backing 으로 매핑.
- 엔지니어 코스 04 레슨의 코드 노드 — 더 복잡한 변환(타입 캐스팅, 단위 정규화) 후 마트로 떨어뜨림.
이 표면은 매핑 화면으로 깔끔히 유지하고, 컬럼 정리는 엔지니어 표면에 위임합니다.
Sink — 매핑이 끝나면 자동
매핑이 완료된 시점에 다음이 일어납니다.
- 백엔드 sink 인프라가 기반 데이터셋의 행을 그래프 데이터베이스 노드로 자동 동기화합니다.
- 이전 버전의 EntitySink / RelationSink UI 는 제거됐습니다. sink 는 사용자가 직접 트리거하지 않는 인프라 단계입니다.
- 매핑 직후 그래프 탐색기에서 해당 라벨(예:
IOT_Machine) 옆 노드 개수가 채워지기 시작합니다.
인스턴스 Data 탭 — 행 단위 확인
매핑이 끝났으면 인스펙터의 Data 탭을 열어 봅니다. 기반 데이터셋의 행이 페이지 단위로 보이고, 다음이 자동으로 적용됩니다.
- Identity Keys 기반 fetch — PK 컬럼 기준 행 단위 조회. 행 클릭 시 인스턴스 상세 패널이 열립니다.
- Display Column 우선 정렬 — 표시명이 1차 컬럼, 시스템 이름은 보조.
- 컬럼 필터 · 정렬 — 다른 데이터셋의 Data 탭과 같은 UX.
- 인스턴스 직접 편집은 지원하지 않습니다 — 편집은 기반 데이터셋 또는 파이프라인에서 합니다. 의미 레이어와 데이터 출처의 책임 경계를 표면이 강제하는 형태입니다.
같은 데이터셋이 여러 엔티티를 떠받칠 수 있는가
가능합니다. 흔한 패턴 두 가지를 미리 알아 두면 본인 도메인에서 머무는 시간이 짧아집니다.
- 부모/자식 분리 — 한 거래 데이터셋이 주문 엔티티와 주문 라인 엔티티의 backing 으로 동시에 잡힙니다. Identity Keys 만 다르게 잡으면 됩니다(
order_idvs(order_id, line_no)). - 다른 시점의 같은 표 — 한 매장 마스터가 지점 엔티티와 부지 엔티티의 backing 으로 동시에 잡힙니다. 속성 부분집합만 다르게 매핑.
다만 관계의 기반 데이터셋으로 동시에 쓰는 경우는 신중하게 — 다음 레슨에서 관계의 backing 패턴을 따로 다룹니다.
자가 점검
- 엔티티 인스펙터의 Data 탭에 기반 데이터셋의 행이 페이지 단위로 보이는가
- 그래프 탐색기 좌측 메타데이터 패널에서 해당 라벨 옆 노드 개수가 0 이 아닌가 (몇 초 ~ 분 대기)
- 기반 데이터셋 자체 페이지의 References 탭에 본 엔티티가 등록됐는가
- Identity Keys 매핑이 비어 있지 않은가 — 비어 있으면 03 단계로 돌아가 한 줄 채움
다음 레슨
다음 레슨은 두 엔티티를 잇는 관계를 빌더 캔버스에서 드래그로 만듭니다. 카디널리티(1:1 · 1:N · N:N), 명명 규칙(verb_phrase), 그리고 관계도 기반 데이터셋을 가질 수 있다는 점까지 다룹니다.