ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 원천 시스템에서의 데이터 생성
    <견고한 데이터 엔지니어링> 2023. 10. 9. 19:05
    728x90

    Data 흐름

     

    1. 원천 시스템에서의 데이터 생성

    데이터 수집은 IoT 장치, 신용카드 단말기, 망원경 센서, 주식 거래 등에서 데이터를 수집한다.

     

    File -> 바이트의 시퀀스로서 일반적으로 디스크에 저장

    애플리케이션은 종종 파일에 데이터를 쓴다. (로컬 매개변수, 이벤트, 로그, 이미지 및 오디오 저장)

     

    • 정형  : xlsx, csv
    • 반정형 : json, xml, csv
    • 비정형 : txt, csv

     

    API. : 시스템 간에 데이터를 교환하는 표준 방식

    다양한 서비스와 프레임워크, 그리고 API 데이터 수집 자동화 서비스

     

    애플리케이션 데이터베이스 OLTP

     

    • 애플리케이션의 상태를 저장
    • 은행 계좌의 잔액을 저장하는 데이터베이스
    • 개별 데이터 레코드를 높은 속도로 읽고 쓰는 온라인 트랜잭션 처리
    • 트랜잭션 데이터베이스
    • 짧은 지연 시간과 높은 동시성 지원

     

    기본적으로 OLTP 데이터베이스는 수천 명 , 수백만 명의 사용자가 애플리케이션과 동시에 상호 작용하고 데이터를 갱신하거나 작성할 때 애플리케이션 백엔드로서 잘 작동한다.

     

    ACID

     

    • 일관성 : 데이터베이스를 읽을 때 검색된 항목의 마지막으로 기록된 버전이 반환되는 것을 의미
    • 독립성 : 동일한 항목에 대해 2개의 갱신 작업이 동시에 실행 중일 때 최종 데이터베이스 상태는 이들 갱신이 제출된 순서대로 순차적으로 실행되는 것과 일치한다는 의미
    • 내구성 : 정전 시에도 커밋된 데이터가 손실되지 않음을 의미
    • 원자성 : 단위로 커밋되는 여러 변경 사항의 집합. 전체 트랜잭션은 양쪽을 모두 갱신하면서 실행되거나, 모두 갱신하지 않고 실패해야 한다.(전체 작업이 트랜잭션으로서 발생)

     

     

    애플리케이션 백엔드를 지원하기 위해 꼭 필요한 것이 아니며, 되려 이 제약을 완화한다면 성능과 확장성에 상당한 이점이 될 수 있다. 그러나 ACID는 데이터베이스가 일관된 형상을 유지하도록 보장하고, 앱 개발자의 작업을 획기적으로 간소화한다.

     

     

    Eventual consistency : 최종 일관성 -> ACID 완화시 분산 데이터베이스가 채택하는 원칙중 하나

     

    OLTP에서 분석 쿼리를 실행하면 OLTP의 구조적 제한이나 경쟁 트랜잭션 워크로드와의 리소스 경합 때문에 성능 문제가 발생할 수 있따.

     

    온라인 분석 처리 시스템 OLAP

     

    • 대규모 분석 쿼리를 실행하도록 구축
    • 개별 레코드의 조회 처리에는 비효율적
    • 모든 쿼리에는 크기가 100MB 이상인 최소 데이터 블록을 스캔하는 작업 포함
    • 대규모 대화형 분석 쿼리를 지원하는 데이터베이스 시스템 지칭
    • Online : 시스템이 들어오는 쿼리를 지속해 수신 대기한다는 뜻

     

    [OLAP 용례 for Data Engineer]

    • 데이터 웨어하우스 : ML 모델을 훈련하는 데 사용되는 데이터를 제공
    • 분석 시스템에서 파생된 데이터를 CRM, SaaS 플랫폼 또는 트랜잭션 애플리케이션과 같은 원천 시스템으로 다시 전송되는 역방향 ETL 워크플로를 OLAP 시스템이 제공할 수 있음

     

    변경 데이터 캡처 CDC

     

    • 데이터베이스에서 발생하는 각 변경 이벤트(입력, 갱신, 삭제)를 추출하는 방법
    • 데이터베이스 간의 거의 실시간으로 복제하거나 다운스트림 처리를 위한 이벤트 스트림을 생성하는 데 자주 사용

     

    로그 LOG

    • 시스템에서 발생하는 이벤트에 대한 정보를 수집
    • 로그는 웹 서버의 트래픽과 사용 패턴을 수집
    • 풍부한 데이터 원천으로서 다운스트림 데이터 분석, ML 및 자동화에 잠재적으로 유용

     

    • OS
    • Application
    • Server
    • Container
    • Network
    • IoT

     

    • 모든 로그는 이벤트와 이벤트 메타데이터 추적
    • 최소 누가, 무엇을, 언제 수행했는지를 수집해야 함

     

     

    로그 인코딩 

    • 바이너리 인코딩 로그 : 공간 효율과 빠른 I/O를 위해 데이터를 사용자 정의 압축 형식으로 인코딩 Ex. 데이터베이스 로그
    • 반정형 로그 : 객체 직렬화 형식(JSON)의 텍스트로 인코딩
    • 일반 텍스트 로그

     

    로그 해상도

    • 로그에 캡처된 이벤트 데이터의 양
    • 로그 레벨 : 로그 엔크리를 기록하는 데 필요한 조건 (에러와 디버깅에 관한 조건)

     

    로그 지연시간 : 배치 / 실시간

    • 배치 로그 : 종종 파일에 연속적으로 기록
    • 개별 로그 엔트리는 실시간 애플리케이션을 위해 카프카나 펄사와 같은 메시징 시스템에 기록

     

    데이터베이스 로그

     

    • 로그 선행 기록 : 데이터베이스 보장과 복구에 중요한 역할을 담당
    • 데이터베이스 서버는 데이터베이스 테이블에 대한 쓰기 및 갱신 요청을 수신.
    • CDC가 데이터베이스 변경에서 이벤트 스트림을 생성하는 데 매우 유용

     

    CRUD

     

    • 생성, 조회, 갱신, 삭제
    • 애플리케이션 상태를 데이터베이스에 저장하는 가장 일반적인 패턴
    • 데이터를 사용하기 전에 생성해야 한다는 것
    • 데이터가 생성되면 데이터를 조회하고 갱신할 수 있으며, 마지막에는 데이터를 삭제해야 할 수도 있다.

     

    CRUD : 스토리지와 관계 없이 데이터에 대해 이러한 네 가지 연산을 수행할 수 있도록 보장

     

    입력 전용 패턴

     

    • 데이터를 포함하는 테이블에서 이력을 직접 유지
    • 레코드를 갱신하는 대신, 새로운 레코드가 생성된 시점을 나타내는 타임스탬프와 함께 입력
    • 데이터베이스 로그를 테이블 자체에 직접 유지
    • 별도의 분석 입력 전용 패턴은 일반적인 CRUD 애플리케이션 테이블과 함께 사용되는 경우 많음
    • 입력 전용 ETL 패턴에서는 CRUD 테이블에서 갱신이 발생할 때마다 데이터 파이프라인이 대상 분석 테이블에 새 레코드를 입력
    • 각 변경 사항이 테이블에 입력되므로 데이터가 자주 변경될 시 테이블이 상당히 커질 수 있다.
    • 현재 상태를 조회할 때 MAX를 실행하기 때문에 레코드 조회 시 추가 오버헤드 발생

     

    메시지와 스트림

     

    • 이벤트 기반 아키텍처 : 메시지 큐/ 스트리밍 플랫폼
    • 메시지 : 둘 이상의 시스템 간에 전달되는 원시 데이터
    • 스트림: 이벤트 레코드의 추가 전용 로그

     

    시간 유형

     

    • 스트리밍 : 데이터가 연속적인 것으로 간주되고 데이터가 생성된 직후 소비될 것으로 예상되는 만큼 시간이 훨씬 더 중요하고 미묘해진다.
    • 이벤트 시간 : 원본 이벤트 자체의 타임스탬프를 포함해 원천 시스템에서 이벤트가 생성된 시점
    • 수집 시간 : 원천 시스템에서 메시지 대기열, 캐시, 메모리, 객체 스토리지, 데이터베이스 또는 데이터가 저장된 다른 위치로 이벤트가 언제 수집되었는지를 나타냄
    • 처리 시간 : 수집 시간 이후에 데이터가 처리될 때 발생.
    • 처리에 걸린 시간 : 데이터를 처리하는 데 걸린 시간

     

    가능하면 자동화된 방식으로 기록

     

     

     

     

    728x90
Designed by Tistory.