콘텐츠로 이동

데이터 플랫폼 도메인 모델

최종 업데이트: 2026-03-27 | 관련 이슈: ARK-1139


개념 한 줄 정의

개념 정의
Source 데이터를 가져오는 연결 — DB 주소, 크리덴셜 자체
Dataset 그 연결에서 "어떤 데이터를 어떤 형상으로 볼 것인가"의 스펙
Pipeline 그 Dataset으로 "무엇을 만들 것인가"의 실행 레시피
Content Model (CM) Pipeline이 생산한 완성된 시계열 팩터 산출물
Catalog CM의 집합소 — 팀 간 공유·구독 마켓플레이스

각 개념 상세

Source

원천 시스템과의 연결 정보 그 자체. 소스는 자체로는 아무것도 하지 않는다.

  • PostgreSQL / MySQL / MariaDB 연결 (host, port, credentials)
  • 파일 업로드 (S3 경로)
  • (예정) REST API, FTP/SFTP

Dataset

"어떤 데이터인가" 를 정의하는 명사적 개념.

Source에서 특정 테이블/컬럼을 선택하고, 그 데이터가 어떤 구조여야 하는지(스펙)와 언제 갱신되어야 하는지(스케줄)를 정의한다.

{
  "name": "KR Daily Transactions",
  "columns": [
    { "name": "date",   "type": "date" },
    { "name": "ticker", "type": "string" },
    { "name": "close",  "type": "float" },
    { "name": "volume", "type": "int" }
  ],
  "time_axis":   { "column": "date",   "frequency": "daily" },
  "entity_axis": { "column": "ticker" },
  "schedule":    "0 9 * * 1-5"
}

Dataset의 핵심 속성:

  • Spec: 컬럼 정의, 타입, time_axis, entity_axis, delivery_lag
  • Schedule: 언제 Source에서 데이터를 다시 끌어올지 (cron)
  • Vendor: 이 데이터의 출처 (FnGuide, Bloomberg, Internal 등)

Dataset은 Source 없이도 존재할 수 있다:

  • CSV/Excel 파일 직접 업로드 → Dataset
  • 타팀 Catalog CM 구독 → Dataset

Pipeline

"그 데이터로 무엇을 만들 것인가" 를 정의하는 동사적 개념.

Dataset이 갱신되면 Pipeline이 자동 트리거되어 CM을 생성·갱신한다. AI Agent가 CM 초안을 생성하고, 사용자 피드백을 받아 반복 개선하는 루프를 가진다.

  • 1 Pipeline = 1 Dataset (Pipeline은 정확히 하나의 Dataset에 귀속)
  • 1 Dataset → N Pipelines (같은 데이터에서 다른 관점의 CM을 여럿 뽑을 수 있음)

Pipeline과 Dataset을 분리하는 이유:

같은 데이터 형상에서 여러 관점의 CM을 만들어야 할 때 Dataset을 재정의하지 않아도 된다. Dataset을 변경하면 영향받는 Pipeline 목록이 명확히 추적된다.


Content Model (CM)

Pipeline의 산출물. 실제로 Portfolio/Alpha에서 사용하는 데이터.

  • 상태: buildingpreviewscheduledrunningpaused
  • 결과는 CatalogEntry로 등록됨

Catalog

CM의 집합소. is_public 플래그로 팀 간 공유 여부를 결정한다.

  • CatalogSubscription으로 타팀 CM을 구독 → 자신의 Dataset처럼 활용 가능
  • 좋은 CM은 코드처럼 재사용된다 (중복 작업 제거)

전체 흐름

flowchart LR
    subgraph Sources["Source Layer"]
        S1[RDS Connection]
        S2[File Upload]
        S3[Catalog 구독]
    end

    subgraph Datasets["Dataset"]
        D1[spec + schedule + vendor]
    end

    subgraph Pipelines["Pipeline"]
        P1[AI 피드백 루프]
        P2[CM 초안 생성]
    end

    subgraph CMs["Content Model"]
        C1[시계열 팩터]
    end

    subgraph Catalog["Catalog"]
        CAT[Marketplace]
    end

    Sources --> Datasets --> Pipelines --> CMs --> Catalog
    Catalog -->|구독| Sources

MISC 구성 예시

Source: PostgreSQL (주식 거래 DB)
  └── Dataset A: "KR Daily Transactions"
        schedule: daily 9am
        ├── Pipeline 1 → CM: 일별 수익률
        ├── Pipeline 2 → CM: 20일 변동성
        └── Pipeline 3 → CM: 거래량 분위수

Source: CSV 파일 업로드
  └── Dataset B: "FnGuide Report Data"
        └── Pipeline 4 → CM: 리포트 지표

Catalog (타팀 CM 구독)
  └── Dataset C: "Bloomberg Universe"
        └── Pipeline 5 → CM: 복합 팩터

하나의 Source에서 여러 Dataset을 만들고, 각 Dataset에서 여러 Pipeline을 만들어 다양한 CM을 생성할 수 있다. Dataset은 Source와 독립적으로도 존재한다.


관련 문서