[Data Engineering] Database Design

망고 언니·2024년 4월 1일

1 데이터 처리, 저장 및 구성

데이터 처리에 대한 두 가지 접근 방식인 OLTP와 OLAP에 대해 알아보기

1. OPTP vs OLAP

OLTP

  • 온라인 트랜잭션처리 (트랜잭션이 중심) ,
  • 무수히 많이 발생되는 각각의 작업요청을 오류없이 처리하고, 그 결과값을 실시간으로 확인시켜줘야 함을 의미합니다.

OLAP

  • 온라인 분석 처리 (분석이 중심)
  • 기존에 저장되어 있는 데이터를 사용자의 요구와 목적에 맞게 분석하여 정보를 제공하는 개념

OLTP 데이터베이스는 직원이 근무한 시간을 추적하는 데 사용되며, 이 달의 직원이 누구인지에 대한 분석을 실행하려면 OLAP으로 전환해야 합니다.

OLTP는 일상적인 운영을 지원하는 데 중점을 두는 반면, OLAP 작업은 더 모호하고 비즈니스 의사 결정에 중점을 둡니다.

구분OLTPOLAP
목적비지니스 활동 지원비즈니스 활동에 대한 평가,분석
주 트랜잭션형태SELECT, INSERT, UPDATE, DELETESELECT
속도수초 이내수초 이상 수분 이내
데이터표현시간실시간과거
관리단위테이블분석된 정보
최적화 방법트랜잭션 효율화, 무결성의 극대화조회 속도, 정보의 가치, 편의성
데이터의 특성트랜잭션 중심정보 중심
예시회원정보 수정,상품주문,댓글 남기기&수정1년간의 주요 인기 트랜드, 한달간의 항목별 수입지출

2. 데이터의 종류

  1. structed data(정형 데이터)
  • 스키마로 정의되는 구조화된 데이터
  • 데이터 유형, 외래키과 같은 개념을 사용하여 테이블간의 관계도 정의
  • 일괄적인 주고 때문에 새 구조로의 진화가 어려움
    ex ) 스프레드 시트 , csv
  1. unstructed data(비정형 데이터)
  • 스키마가 없고 가장 원시적인 테이터 (소셜데이터의 텍스트, 이미지, 영상 워드등)
  • 예시) photo, mp3
  1. semi structed data(반정형 데이터)
  • 구조에 따라 저장된 데이터지만 데이터 형식과 구조가 변경도리 수 있음
  • 정형데이터에 비해 확장이 유연하고 간단
  • 예시) NoSQL, XML, JSON 이 포함

3. ETL vs ELT

  1. ETL (Extract Transform, Load)
    Extract : 소스 data로부터 추출
    Transform : DeNomalize 등의 추출된 데이터 변형
    Load : DW(DataWarehouse)로의 데이터 적재

  2. ELT
    Extract : 소스 data로부터 추출
    Load : DW(DataWarehouse)로의 데이터 적재
    Transform :적제된 데이터 변형

2 데이터베이스 스키마 및 정규화

1. 스키마

  1. star schema
  • 정규화를 사용하지않음
  • 각 차원에 대해 단일 테이블과 함께 팩트 테이블로 구성되는 단순하고 일반적인 모델링이다.
  • 스키마는 중심인 팩트 테이블을 둘러싸고 확장되는 패턴으로 표시된 차원 테이블을 사용하여 별 모양처럼 보인다.
    팩트 테이블의 dimension은 기본 키와 외래 키를 통해 차원 테이블에 연결된다.

  1. snowflake schema
  • 데이터의 중복을 제거하기위해 정규화를 사용
  • 차원 테이블의 계층적 형태를 포함하는 일종의 스타 스키마
    이 스키마에는 기본 및 외래키를 통해 팩트 테이블에 연결된 다양한 차원 및 하위 차원 테이블로 구성된 팩트 테이블이 있다.
    구조는 눈송이와 유사하게 생겼다.
  • 테이블을 추가 테이블로 분할하는 정규화를 사용한다.
    테이블을 분할함으로써 중복성을 줄이고 메모리 낭비를 방지할 수 있다.
  • 스노우플레이크 스키마는 관리하기는 더 쉽지만 설계와 이해가 복잡하다. 또한 쿼리를 실행하는 데 더 많은 조인이 필요하므로 검색 효율이 떨어질 수 있다.

2. 정규화

  • 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다.
  • 정규화를하게 되면 공간이 절약

3 데이터베이스 보기

1. view vs Materialized view

1) view

  • 실체가 존재하지 않는 다는 의미로 가상 테이블이라고도 불린다.
  • 반복적인 조회를 단순하게 만들어 줄 수 있다.
    • ex) 특정 테이블의 특정 컬럼들만 자주 불러와서 사용하는 경우.
    • ex) 특정 테이블들을 UNION하여 가져 올 경우.
    • ex) 특정 DB LINK를 반복적으로 사용할 경우. 등 등
  • SELECT만 가능하고 UPDATE, DELETE, INSERT는 불가능하다.
-- 컬럼명을 변경없이 상용할 경우
CREATE VIEW ${viewName} AS ${SELECT구문}

-- 컬럼명을 변경하여 사용할 경우
CREATE VIEW ${viewName}(${colName1}, ${colName2}, ...) AS ${SELECT구문}

2) Materialized view

  • 구체화 뷰(MView) 라고 불린다.
  • 기존 View와 비슷하게 동작하지만 실제데이터를 가지고 있다는 차이가 있다.
  • 원본테이블에 INSERT,UPDATE, DELETE가 발생하면 MView에도 반영이 된다.
  • Index를 생성하여 조회 성능을 향상 시킬 수 있다.
CREATE MATERIALIZED VIEW view_name

BUILD [IMMEDIATE | DEFERRED]

REFRESH [ FAST | COMPLETE | FORCE | NEVER ]

ON [COMMMT | DEMAND]

[[ENABLE | DISABLE] QUERY REWRITE [ON PREBUILT TABLE]]

[[ENABLE | DISABLE] ON QUERY COMPUTATION

AS

SELECT 문장;

Normalization

  • 테이블 내 중복성 감소
  • 논리 데이터 모델 변경
  • 데이터베이스 내의 테이블을 조정하여 중복된 데이터를 줄이고,
    데이터를 더 효율적으로 관리할 수 있게 하는 과정

Vertical Partitioning

  • 열(컬럼)을 기준으로 데이터를 분리하는 방법입니다.
    -> 이는 특정 데이터를 자주 사용하지 않거나, 접근 속도가 다른 저장 매체로 이동시키고자 할 때 사용합니다.

Horizontal Partitioning

  • 행(로우)을 기준으로 데이터를 나누는 것을 말합니다.
    이 방법은 특히 데이터베이스가 매우 크거나 사용자 요구가 많을 때 유용합니다.
    ->예를 들어, 특정 기간(예: 4분기)의 데이터만 별도의 테이블로 옮기면, 해당 기간의 데이터에 빠르게 접근할 수 있습니다.

4 데이터베이스 관리

데이터 통합시 염두에 두어야 할 사항

1. Data integration do's and dont's

Dont's

  • 자동화된 테스팅과 능동적인 알람이 필요하지 않다
  • 지금 당장 필요한 작업에 적합한 솔루션을 선택해야 한다
  • 최종 보기에서 모든 데이터는 실시간으로 업데이트되어야 한다
  • 데이터 통합 솔루션, 수동 코딩이든 ETL 도구든, 한 번 작동하면 결과적인 뷰를 - 영원히 쿼리 실행에 사용할 수 있다
  • 모든 사람이 최종 보기에서 민감한 데이터에 접근할 수 있어야 한다
  • 데이터 통합 후 모든 데이터는 단일 테이블에 있어야 한다

DO

  • 원하는 데이터에 단일 뷰를 통해 접근할 수 있다는 것은 모든 데이터가 함께 저장된다는 의미가 아니다
  • 나의 원본 데이터는 다른 형식과 데이터베이스 관리 시스템에 있을 수 있다
  • 나의 원본 데이터는 다른 물리적 위치에 저장될 수 있다
  • 데이터 통합은 비즈니스 주도적이어야 한다.
profile
안녕하세요. DBA 망고언니입니다.

0개의 댓글