291. ODS (Operational Data Store)

핵심 인사이트 (3줄 요약)

  1. 본질: ODS(Operational Data Store)는 운영 시스템(OLTP)에서 데이터 웨어하우스(DW)로 데이터를 이동시키는 중간 단계의 임시 저장소로, 준실시간(Near Real-time) 데이터 통합과 DW용 데이터 정제 기능을 수행한다.
  2. 가치: DW에 적재하기 전 데이터 품질 확보, 다양한 운영 시스템의 실시간/준실시간 통합, 배치 ETL의補完 역할, 빠른 분석 위한 lightly transformed 데이터 제공.
  3. 융합: ETL, DW, 실시간 데이터 통합, 데이터 품질, 스트림 처리, Apache Kafka, AWS DMS와 밀접하게 연관된다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

개념 정의

ODS(Operational Data Store)는 1990년대 중반 Bill Inmon이 제시한 개념으로, "운영 환경과 데이터 웨어하우스 환경 사이의 중간 데이터 저장소"이다. ODS는 운영 시스템들로부터 데이터를 추출하고, 짧은 지연 시간으로 통합·정제하여 DW로 전달하는 역할을 한다. 전통적인 배치(batch) ETL 방식의 긴 주기(야간バッチ等)를補完하여, 준실시간(Near Real-time) 또는 실시간에 가까운 데이터 동기화를 가능하게 한다. ODS라는 용어의 "Operational"은 "실시간에 가까운 운영 데이터"라는 의미이지, 일반적인 OLTP 작업을 의미하는 것은 아니다.

필요성

전통적인 DW의 배치 ETL은 일별/주별 단위로 데이터를 이동시키므로, business пользовале在家里日益需要 실시간/준실시간 데이터 분석에 대응하기 어렵다. 그러나 운영 시스템에서 DW로 바로 데이터를 이동시키면 데이터 품질 문제가 DW까지 전파되고, 운영 시스템 부하도 증가한다. ODS는 이러한 문제점을解決하기 위해 중간 버퍼 역할로서, 운영 시스템의 데이터를 빠르게 통합·정제한 후 DW로 전달한다. 이를 통해 데이터의新鲜度(Freshness)를 높이고, DW의 데이터 품질을 확보할 수 있다.

배경

1990년대 기업들은 OLTP 시스템들의 데이터를 DW로 통합하는过程中, 몇 가지問題에 직면했다. 첫째, 운영 시스템들 간의 데이터 형식과编码이 다르다. 둘째, 운영 시스템은24/7稼働中이라 DW를위한抽出이 어렵다. 셋째, 야간 배치 ETL로는 business의 실시간 의사결정 필요에 부응할 수 없다. ODS는 이러한問題を解決하기 위한 intermediate layer로 도입되었다. 이후 Apache Kafka, AWS DMS, Debezium 등 실시간 CDC(Change Data Capture) 기술의 발전과 함께 ODS 개념도 진화하여, 오늘날에는 준실시간 스트림 처리의 일부로 기능한다.

비유

ODS는大型항공사的人物 화물流通 과정과 같다. 각 지역 창고(운영 시스템)에서 화물을 모아 중앙 물류 센터(ODS)로 옮기고, 중앙 물류 센터에서 화물을 검사·분류·포장한 후 대형 물류 창고(DW)로 이동한다. 화물은 매일 야간으로全部이동하는 것이 아니라, 물량이 쌓이면 수시로 이동하며, 화물터미널(ODS)에서 basic inspection과 분류를 먼저 수행한다. 이를 통해 최종 목적지(DW)에서 효율적으로处理할 수 있다.

📢 섹션 요약: ODS는 운영 시스템과 DW 사이의 중간 버퍼로, 준실시간 데이터 통합과 정제를 수행하여 DW의 데이터品质과新鲜度를確保하는 역할 을 한다.


Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

ODS 아키텍처 및 위치

┌─────────────────────────────────────────────────────────────────────────────┐
│                    ODS 아키텍처 - DW ETL에서의 위치                            │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  [전통적인 ETL 아키텍처]                                                     │
│  ────────────────────────                                                   │
│                                                                             │
│       ┌──────────┐    ┌──────────┐    ┌──────────┐                        │
│       │   ERP    │    │   CRM    │    │   SCM    │    ...                 │
│       │ 시스템    │    │ 시스템    │    │ 시스템    │                        │
│       └────┬─────┘    └────┬─────┘    └────┬─────┘                        │
│             │               │               │                               │
│             │    ┌──────────┼──────────┐    │                               │
│             │    │          │          │    │                               │
│             ▼    ▼          ▼          ▼    ▼                               │
│       ┌─────────────────────────────────────────────┐                      │
│       │              ETL (배치 위주)                   │                      │
│       │  Extract ──── Transform ──── Load           │                      │
│       │       (야간 배치, 수시간 주기)                  │                      │
│       └────────────────────┬────────────────────────┘                      │
│                            │                                                │
│                            ▼                                                │
│       ┌─────────────────────────────────────────────┐                      │
│       │           데이터 웨어하우스 (DW)              │                      │
│       └─────────────────────────────────────────────┘                      │
│                            ▲                                                │
│                            │                                                │
│                     [문제: 데이터 지연]                                      │
│                     [해결: ODS 도입]                                        │
│                                                                             │
│  [ODS 도입 후 아키텍처]                                                     │
│  ────────────────────────                                                  │
│                                                                             │
│       ┌──────────┐    ┌──────────┐    ┌──────────┐                        │
│       │   ERP    │    │   CRM    │    │   SCM    │    ...                 │
│       └────┬─────┘    └────┬─────┘    └────┬─────┘                        │
│             │               │               │                               │
│             │    ┌──────────┼──────────┐    │                               │
│             │    │          │          │    │                               │
│             ▼    ▼          ▼          ▼    ▼                               │
│       ┌─────────────────────────────────────────────┐                      │
│       │           ODS (Operational Data Store)       │                      │
│       │  ─────────────────────────────────────────  │                      │
│       │  • 실시간/준실시간 데이터 통합                 │                      │
│       │  • Basic 정제 (중복 제거, 기본 검증)           │                      │
│       │  • 미가공 원본 데이터 적재 (Raw Zone)         │                      │
│       │  • 짧은 지연 (분~시간 단위)                  │                      │
│       └──────────────┬─────────────────────────────┘                      │
│                      │                                                      │
│                      │ 분산된 실시간/준실시간 데이터 흐름                       │
│                      │                                                      │
│                      ▼                                                      │
│       ┌─────────────────────────────────────────────┐                      │
│       │              ETL (배치 위주)                   │                      │
│       │  Extract ──── Transform ──── Load           │                      │
│       │       (ODS에서 데이터를抽取, 야간 배치)          │                      │
│       └────────────────────┬────────────────────────┘                      │
│                            │                                                │
│                            ▼                                                │
│       ┌─────────────────────────────────────────────┐                      │
│       │           데이터 웨어하우스 (DW)              │                      │
│       └─────────────────────────────────────────────┘                      │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

ODS 데이터 흐름

┌─────────────────────────────────────────────────────────────────────────────┐
│                    ODS 데이터 흐름과 역할                                        │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  [ODS 3대Zone 구조]                                                        │
│  ───────────────────                                                        │
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐  │
│  │                    ODS 구조                                            │  │
│  │  ─────────────────────────────────────────────────────────────────  │  │
│  │                                                                       │  │
│  │  ┌───────────────────────────────────────────────────────────────┐  │  │
│  │  │  ① Raw Zone (landing, bronze)                                 │  │  │
│  │  │  ──────────────────────────────────────────────────────────── │  │  │
│  │  │  • 원본 데이터 그대로 저장                                      │  │  │
│  │  │  • 운영 시스템의忠实한 복제본                                   │  │  │
│  │  │  • 모든 변환/수정은 이후 단계에서 수행                           │  │  │
│  │  │  • 예: CDC 로그, API 응답 원본                                  │  │  │
│  │  └───────────────────────────────────────────────────────────────┘  │  │
│  │                               │                                       │  │
│  │                               ▼                                       │  │
│  │  ┌───────────────────────────────────────────────────────────────┐  │  │
│  │  │  ② Cleansed Zone (silver)                                     │  │  │
│  │  │  ──────────────────────────────────────────────────────────── │  │  │
│  │  │  • 기본 정제 수행 (중복 제거,NULL 처리, 형식 통일)              │  │  │
│  │  │  • 준실시간 분석에 활용 가능                                    │  │  │
│  │  │  • DW로 넘어가기 전品質 검증 구간                               │  │  │
│  │  │  • 예: 고객명 NULL → "UNKNOWN", 날짜 형식 통일                  │  │  │
│  │  └───────────────────────────────────────────────────────────────┘  │  │
│  │                               │                                       │  │
│  │                               ▼                                       │  │
│  │  ┌───────────────────────────────────────────────────────────────┐  │  │
│  │  │  ③ Integrated Zone (gold)                                      │  │  │
│  │  │  ──────────────────────────────────────────────────────────── │  │  │
│  │  │  • 비즈니스 룰 적용, 콘포밍 디멘젼 통합                         │  │  │
│  │  │  • DW 적재 준비 완료 상태                                      │  │  │
│  │  │  • 예: 고객 ID 정규화, 상품 카테고리 매핑                       │  │  │
│  │  └───────────────────────────────────────────────────────────────┘  │  │
│  │                                                                       │  │
│  └─────────────────────────────────────────────────────────────────────┘  │
│                                                                             │
│  [ODS vs DW vs Data Lake 비교]                                             │
│  ─────────────────────────────                                             │
│                                                                             │
│  ┌──────────────────┬──────────────┬──────────────┬──────────────┐     │
│  │      특성         │     ODS      │     DW       │  Data Lake   │     │
│  ├──────────────────┼──────────────┼──────────────┼──────────────┤     │
│  │ 목적             │ 실시간 통합   │ 장기 분석     │ 원시 데이터   │     │
│  │                  │ (준실시간)   │ (배치)       │ 저장         │     │
│  │ 데이터 범위       │ 최근 데이터   │ 과거+현재    │ 모든 데이터   │     │
│  │                  │ (수일~수주)  │ (5~10년)     │              │     │
│  │ 변환 수준        │ Light transform│ Full transform│ Schema-on-  │     │
│  │                  │              │              │ read        │     │
│  │ 일관성           │ operacionais  │ 분석적        │ 없음 (Raw)   │     │
│  │                  │ (근实时)      │ (정확성)     │              │     │
│  │ 사용자           │ 운영/분석가   │ 분석가/경영진 │ 데이터 scientist│     │
│  │ 툴              │ SQL, 대시보드 │ BI, OLAP    │ Notebook,   │     │
│  │                  │              │              │ Spark       │     │
│  └──────────────────┴──────────────┴──────────────┴──────────────┘     │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

ODS 구축 방법

┌─────────────────────────────────────────────────────────────────────────────┐
│                    ODS 구축 방법 - CDC + 스트림 처리                           │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  [CDC (Change Data Capture) 기반 ODS 구축]                                  │
│  ───────────────────────────────────────────                                 │
│                                                                             │
│       ┌──────────┐    ┌──────────┐    ┌──────────┐                        │
│       │  MySQL   │    │ PostgreSQL│   │   API    │                        │
│       │  Source  │    │  Source   │    │  Source  │                        │
│       └────┬─────┘    └────┬─────┘    └────┬─────┘                        │
│             │               │               │                               │
│             │         ┌─────┴─────┐         │                               │
│             │         │           │         │                               │
│             ▼         ▼           ▼         ▼                               │
│       ┌─────────────────────────────────────────────┐                      │
│       │              CDC Agent                        │                      │
│       │  Debezium | AWS DMS | Oracle GoldenGate     │                      │
│       │  ─────────────────────────────────────────  │                      │
│       │  • 로그 기반 변경 캡처 (Low impact)          │                      │
│       │  • INSERT/UPDATE/DELETE 감지                 │                      │
│       │  • 오프셋 관리 (Exactly-once)                │                      │
│       └────────────────────┬────────────────────────┘                      │
│                            │                                                │
│                            ▼                                                │
│       ┌─────────────────────────────────────────────┐                      │
│       │           Message Queue                      │                      │
│       │       Apache Kafka / Amazon Kinesis          │                      │
│       └────────────────────┬────────────────────────┘                      │
│                            │                                                │
│                            ▼                                                │
│       ┌─────────────────────────────────────────────┐                      │
│       │         Stream Processing                    │                      │
│       │  Apache Flink / Spark Streaming / Kafka Streams│                   │
│       │  ─────────────────────────────────────────  │                      │
│       │  • 데이터 정제 (Cleanse)                    │                      │
│       │  • 데이터 변환 (Enrich)                     │                      │
│       │  • 준실시간 집계 (Near real-time aggr.)    │                      │
│       │  • 중복 제거 (Deduplication)               │                      │
│       └────────────────────┬────────────────────────┘                      │
│                            │                                                │
│                   ┌────────┴────────┐                                       │
│                   ▼                 ▼                                        │
│            ┌───────────┐    ┌───────────┐                                 │
│            │  ODS (Raw) │    │ ODS(Cleansed)│                               │
│            │   Zone     │    │   Zone     │                                 │
│            └───────────┘    └───────────┘                                 │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

[다이어그램 해설] ODS는 전통적으로 배치 ETL의補完 역할로 도입되었지만, 현대에는 CDC(Change Data Capture)와 스트림 처리 기술(Kafka, Flink 등)을 활용하여 준실시간 데이터 통합에 활용된다. ODS의 3대 Zone(Raw, Cleansed, Integrated) 구조는 데이터 품질 관리와 lineage 추적에 도움이 된다. DW가 장기 분석을 위한 完全 정제된 데이터를 필요로 하는 반면, ODS는 준실시간 분석이나 빠른 데이터 가용성이 필요한用例에 활용될 수 있다.

📢 섹션 요약: ODS는 DW로 데이터를 전달하기 전 중간에서 준실시간 통합과 정제를 수행하는 버퍼 역할이며, Raw/Cleansed/Integrated 3-Zone 구조로 데이터品質을관리한다.


Ⅲ. 결론

ODS(Operational Data Store)는 운영 시스템과 DW 사이의 중간 저장소로, 준실시간 데이터 통합과 DW로의 데이터 전달을 담당한다. 전통적인 배치 ETL을補完하며, CDC와 스트림 처리 기술의 발전과 함께 그 역할이 진화하고 있다. Raw/Cleansed/Integrated 3-Zone 구조는 데이터 품질 관리와 lineage 추적에 유용하며, ODS 자체를 준실시간 분석에 활용하는用例도 증가하고 있다. 그러나 ODS를 별도로 구축·운영하는 것은额外한 복잡성이 되므로, 조직의 실제 필요에 따라 도입 여부를 판단해야 한다.

📢 섹션 요약: ODS는 DW의 전단계로 준실시간 데이터 통합과 정제를 수행하며, 현대에는 CDC + 스트림 처리와 결합하여 데이터新鲜度를높이는 역할을 한다.


핵심 인사이트 ASCII 다이어그램 (Concept Map)

┌─────────────────────────────────────────────────────────────────────────────┐
│                    ODS Concept Map                                            │
│                                                                             │
│              ┌─────────────────────────────────┐                           │
│              │   Operational Data Store (ODS)   │                           │
│              │     (운영 데이터 저장소)           │                           │
│              └───────────────┬─────────────────┘                           │
│                              │                                               │
│         ┌────────────────────┼────────────────────┐                        │
│         ▼                    ▼                    ▼                        │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐               │
│  │  Raw Zone   │    │ Cleansed Zone│    │Integrated Zone│               │
│  │  (Bronze)   │    │   (Silver)   │    │   (Gold)    │               │
│  │  원본 데이터  │    │ 기본 정제     │    │ 비즈니스 통합 │               │
│  └──────────────┘    └──────────────┘    └──────────────┘               │
│         │                    │                    │                       │
│         └────────────────────┼────────────────────┘                        │
│                              ▼                                               │
│                   ┌─────────────────────┐                                  │
│                   │  CDC + Stream      │                                  │
│                   │  Processing        │                                  │
│                   │  (Real-time ETL)  │                                  │
│                   └─────────────────────┘                                  │
│                                                                             │
│  역할: 실시간 통합 | 품질 검증 | DW 지원                                     │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

참고

  • ODS는 운영 시스템과 DW 사이의 중간 저장소이다.
  • 준실시간/실시간 데이터 통합 기능을 수행한다.
  • Raw/Cleansed/Integrated 3-Zone 구조를 가진다.
  • CDC와 스트림 처리 기술과 결합하여 진화하고 있다.
  • DW의 데이터品质과新鲜度를確保하는 역할을 한다.
  • 배치 ETL을補完하며 별도 구축 시 관리 복잡성 증가 주의.