[Data] DuckDB, Data Warehouse 종류, Data 관리를 위한 필수요소

2024. 11. 6. 21:51·Data Enginnering/Database

 

DuckDB

국내는 사실 대기업 제외하고 덕디비선에서 종결이 많이 될 것 같다는 생각을 합니다
이 한 마디 말을 듣고 충격을 받아 공부했다.

DuckDB는 C++로 구현된 오픈 소스 컬럼 지향의 관계형 데이터베이스 관리 시스템(RDBMS)으로, 2019년에 처음 공개되었습니다. 이 시스템은 대규모 데이터베이스에서 복잡한 쿼리를 고성능으로 처리하도록 설계되었으며, 특히 임베디드 환경에서의 사용을 염두에 두고 개발되었습니다.

DuckDB는 온라인 분석 처리(OLAP) 워크로드에 최적화되어 있으며, Apache Parquet 파일을 저장소로 활용하여 서버리스 애플리케이션에서 매우 빠른 응답을 제공합니다. 이러한 특성 덕분에 대규모 데이터셋의 인터랙티브한 분석에 적합하지만, 엔터프라이즈 데이터 스토리지 요구사항과는 다소 맞지 않을 수 있습니다.

또한, DuckDB는 벡터화된 쿼리 처리 엔진을 사용하며, 외부 종속성이 없고 C++11 컴파일러만으로 빌드할 수 있습니다. 전통적인 클라이언트-서버 모델과 달리 호스트 프로세스 내에서 실행되며, Python 인터프리터와의 바인딩을 통해 NumPy 배열로 직접 데이터를 배치할 수 있는 기능을 제공합니다.

이러한 특징들로 인해 DuckDB는 Facebook, Google, Airbnb 등에서 사용되고 있으며, 데이터 분석 및 처리 분야에서 주목받고 있습니다.

 

쉽게 말하면?

DuckDB는 애플리케이션 내부에 직접 포함되어 실행되는 '임베디드' 데이터베이스입니다. 이는 별도의 서버 프로세스 없이도 애플리케이션이 데이터베이스 기능을 활용할 수 있음을 의미합니다. 이러한 구조는 SQLite와 유사하며, 두 데이터베이스 모두 서버리스 환경에서 동작합니다.

반면, MySQL이나 PostgreSQL과 같은 전통적인 관계형 데이터베이스는 클라이언트-서버 모델을 채택하고 있습니다. 이러한 시스템에서는 데이터베이스 서버가 별도로 실행되며, 애플리케이션은 네트워크를 통해 이 서버와 통신하여 데이터를 주고받습니다. 이러한 구조는 대규모 데이터 처리와 복잡한 데이터 모델링에 적합하지만, 서버 구성 및 유지보수에 추가적인 비용과 노력이 필요합니다.

따라서, DuckDB와 SQLite는 서버리스 환경에서 간단하고 빠른 데이터베이스 기능을 제공하며, MySQL이나 PostgreSQL은 서버 기반으로 더 복잡한 기능과 확장성을 제공합니다.

 


Data Warehouse

1. Amazon Redshift

  • 소속: Amazon Web Services (AWS)에서 제공
  • 용도: 주로 데이터 웨어하우스로, 대용량 데이터 분석에 특화되어 있습니다.
  • 특징: SQL 기반 분석 기능이 강력하며, BI 도구와 쉽게 통합할 수 있습니다. 다수의 데이터를 빠르게 분석할 수 있도록 열(column)-기반 저장소를 사용합니다.
  • 주요 장점: 대규모 데이터 집합에 대한 고성능 쿼리 실행, AWS 생태계 내의 다른 서비스와 통합 용이

2. Snowflake

  • 소속: 독립적인 클라우드 데이터 웨어하우스 제공 업체
  • 용도: 다양한 클라우드 플랫폼(AWS, Azure, GCP)에서 작동하는 데이터 웨어하우스로, 여러 클라우드 간 데이터 저장소를 쉽게 관리할 수 있습니다.
  • 특징: 컴퓨팅과 저장을 분리하여 유연한 비용 구조를 제공합니다. 필요할 때마다 컴퓨팅 리소스를 추가하거나 줄일 수 있습니다.
  • 주요 장점: 간편한 관리, 높은 확장성, 사용자 친화적인 인터페이스

3. Databricks

  • 소속: Apache Spark의 창시자들이 설립한 기업으로, Azure 및 AWS 등에서 제공됩니다.
  • 용도: 빅데이터 분석 및 머신 러닝 플랫폼으로, 주로 Spark를 기반으로 한 대규모 데이터 처리를 수행합니다.
  • 특징: Spark 엔진을 기반으로 대용량 데이터를 빠르게 처리하고, 머신 러닝 작업을 지원하는 통합 데이터 분석 및 AI 플랫폼입니다.
  • 주요 장점: 강력한 데이터 처리 및 분석 기능, 데이터 과학 및 머신 러닝 작업 지원, 노트북 기반의 협업 환경 제공

4. BigQuery

  • 소속: Google Cloud Platform (GCP)에서 제공
  • 용도: 완전 관리형 서버리스 데이터 웨어하우스로, Google의 클라우드 인프라를 통해 대규모 데이터를 SQL 쿼리로 분석할 수 있습니다.
  • 특징: 무한히 확장 가능한 저장소와 고속 SQL 분석을 지원하며, Google의 생태계(예: Google Sheets, Google Analytics)와 잘 통합됩니다.
  • 주요 장점: 매우 빠른 쿼리 속도, 실시간 데이터 분석 지원, 서버 관리 필요 없음

관계 및 차이점 요약

이 네 플랫폼은 모두 빅데이터 처리를 위해 설계되었지만, 목적과 특징이 다릅니다.

  • Redshift와 Snowflake는 데이터 웨어하우스에 주력하여 데이터 저장 및 분석을 위해 SQL을 주로 사용합니다. Snowflake는 멀티 클라우드 지원과 컴퓨팅-저장소 분리로 더욱 유연한 확장성을 제공하는 반면, Redshift는 AWS 환경에 최적화되어 있습니다.
  • Databricks는 머신 러닝과 빅데이터 처리를 위한 Spark 기반 플랫폼으로, 데이터 웨어하우스보다는 데이터 엔지니어링과 머신 러닝에 중점을 둡니다.
  • BigQuery는 Google의 서버리스 데이터 웨어하우스로, Google의 생태계와 쉽게 통합할 수 있으며, 실시간 데이터 분석에 적합합니다.

Data 관리를 위한 필수요소

1. Data Infrastructure (데이터 인프라)

Data Infrastructure는 데이터를 저장, 처리, 분석하는 데 필요한 모든 기술적 자원과 시스템을 의미합니다. 데이터 파이프라인을 원활히 운영하기 위한 서버, 데이터베이스, 데이터 레이크, 클라우드 시스템, ETL 도구, 데이터 처리 엔진 등을 포함합니다.

  • 구성 요소: 데이터베이스, 데이터 웨어하우스, 데이터 레이크, 데이터 파이프라인, 클라우드 서비스, 분석 도구(예: Spark, Hadoop) 등이 있습니다.
  • 목적: 데이터를 안전하게 저장하고 빠르고 신뢰성 있게 처리할 수 있는 환경을 구축하는 것입니다. 또한, 데이터 사용자가 데이터를 쉽게 검색하고 분석할 수 있도록 지원합니다.
  • 예시: AWS와 같은 클라우드 플랫폼을 이용하여 S3에 데이터를 저장하고, Redshift나 BigQuery를 사용해 데이터를 분석할 수 있습니다.

예시: 한 금융회사가 고객 트랜잭션 데이터를 실시간으로 분석하기 위해, Kafka(데이터 스트리밍), AWS S3(저장), Apache Spark(처리)와 같은 인프라를 구성해 두는 것.

2. Data Quality (데이터 품질)

Data Quality는 데이터의 정확성, 일관성, 완전성, 적시성을 측정하는 기준입니다. 즉, 데이터가 얼마나 신뢰할 수 있고 분석에 적합한지를 평가하는 개념입니다. 데이터 품질을 유지하기 위해서는 오류 데이터를 탐지하고 정제하는 절차가 필요하며, 잘못된 데이터로 인해 비즈니스 의사결정에 영향을 미치는 일을 방지하고자 합니다.

  • 핵심 요소:
    • 정확성 (Accuracy): 데이터가 실제를 정확히 반영하는지 여부.
    • 일관성 (Consistency): 서로 다른 소스에서 수집된 데이터 간의 일관성이 있는지.
    • 완전성 (Completeness): 필요한 데이터가 빠짐없이 존재하는지.
    • 적시성 (Timeliness): 데이터를 필요할 때 사용할 수 있는지 여부.
  • 관리 방법: 데이터 검증, 데이터 클렌징, 품질 모니터링 도구를 활용해 데이터의 품질을 지속적으로 관리합니다.
  • 예시: 고객의 이메일 주소가 모두 유효한지 확인하고, 구매 기록이 중복 없이 기록되는지 정기적으로 검토하는 작업.

예시: 온라인 쇼핑몰에서 '배송지 주소' 필드가 항상 존재하고 정확하게 기입되었는지 검증해 고객 불편을 최소화하는 작업.

3. Data Contract (데이터 계약)

Data Contract는 데이터 제공자와 데이터 소비자가 데이터 구조, 타입, 유효성 조건에 대해 사전 합의한 약속을 의미합니다. 데이터가 파이프라인을 따라 이동할 때 데이터 형식이 변하지 않고, 예상한 대로 데이터가 전달되도록 하는 규약입니다. 데이터 계약이 없으면, 데이터 스키마나 형식이 임의로 변해 파이프라인의 여러 부분에 문제가 발생할 수 있습니다.

  • 구성 요소: 필드 이름, 데이터 타입, 필수 여부, 유효성 조건, 형식 규칙 등을 포함합니다.
  • 목적: 데이터의 신뢰성과 일관성을 보장하고, 예상치 못한 스키마 변화로 인한 장애를 방지하는 것입니다.
  • 예시: 고객 데이터 파이프라인에서 customer_id가 항상 숫자형이고 가입일 필드가 YYYY-MM-DD 형식으로 전달되는지 확인하는 계약을 설정하는 것.

예시: 마케팅 팀이 사용하는 고객 데이터에서 고객의 나이(age)가 항상 숫자 형식이고 0 이상이어야 한다는 규약을 데이터 엔지니어링 팀과 사전에 합의하는 경우.


세 가지의 차이점 요약

  • Data Infrastructure는 데이터를 처리하는 물리적 및 가상 시스템을 의미합니다.
  • Data Quality는 데이터의 신뢰성과 일관성을 관리하기 위한 데이터 자체의 기준입니다.
  • Data Contract는 데이터 제공자와 소비자가 데이터의 형식과 구조에 대해 사전 정의한 규약으로, 데이터가 일관되게 유지되도록 보장합니다.

 

 

'Data Enginnering > Database' 카테고리의 다른 글

[NoSQL] K-V / Document / Column / Graph Databases  (0) 2024.11.19
[SQL] Nested Query, Join, Aggregate, Group, Order  (1) 2024.11.15
[SQL] Data Retrieval in SQL / JOIN vs WHERE / Table as Sets  (1) 2024.11.08
[SQL] Integrity Constraint, DDL vs DML  (0) 2024.11.07
[SQL] select, group by, count 사용하기  (3) 2024.10.31
'Data Enginnering/Database' 카테고리의 다른 글
  • [SQL] Nested Query, Join, Aggregate, Group, Order
  • [SQL] Data Retrieval in SQL / JOIN vs WHERE / Table as Sets
  • [SQL] Integrity Constraint, DDL vs DML
  • [SQL] select, group by, count 사용하기
Ctrl_engineer
Ctrl_engineer
Ctrl 키는 혼자일 때보다 다른 키와 함께할 때 진짜 힘을 발휘합니다. 데이터도, 사람도 마찬가지입니다. 연결되고 흐를 때, 세상은 더 나은 방향으로 움직입니다. 저는 데이터의 흐름을 설계하고, 신뢰를 심는 엔지니어가 되고자 합니다. 이곳은, 그 여정의 작은 흔적들을 기록하는 공간입니다.
  • Ctrl_engineer
    Ctrl the flow
    Ctrl_engineer
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • Research (9)
        • Raspberry Pi (9)
      • Data Enginnering (24)
        • Cloud (3)
        • Elastic (6)
        • Database (9)
        • Pipeline (3)
      • CS STUDY (0)
        • Computer Science (0)
        • DataStructure & Algorithm (0)
      • Programming (13)
        • Python (13)
      • Mathematics and Statistics (10)
      • Data Science (3)
        • Data Insight (2)
        • Learning (0)
        • ML & DL (0)
      • DIARY (0)
      • TIL (Today I Learned) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    3blue1brown
    heap size
    linear algebra
    라즈베리파이5
    오블완
    Khan Academy
    부스트코스
    shellyplugs
    Khan
    climb-mates
    점프투파이썬
    라즈베리파이 네트워크 설정
    py4e
    SQL
    ssh 비밀번호 없이 접속
    spark
    티스토리챌린지
    Statistics and Probability
    elasticSearch
    proxyjump 설정
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Ctrl_engineer
[Data] DuckDB, Data Warehouse 종류, Data 관리를 위한 필수요소
상단으로

티스토리툴바