데이터 저장소

Koo·2023년 8월 21일
post-thumbnail

1. RDBMS(Relational DataBase Management System)

데이터베이스?

  • 관계를 맺고 있는 테이블들로 구성된 데이터들의 집합
  • 행은 하나의 데이터를, 열은 데이터의 속성(특성)을 나타냄
  • 서로 다른 테이블을 공통 속성을 이용해 join하여 새로운 테이블을 생성 가능

데이터베이스와 스프레드시트의 차이

RDBMSSpreadSheet
용량 대용량 데이터를 위해 저장, 조회, 처리 등이 최적화 한정된 용량
고유성 테이블의 각 행은 고유한 값을 가짐 행과 열값이 고유하지 않음
관계 관계 설정 가능 관계 설정 불가능
데이터 타입 각 필드는 특정 데이터 타입이나 값을 제한할 수 있음 -
SQL 매우 빠르게 조회 가능 느린 조회 속도
보안 각 테이블이나 행, 열에 따른 권한 부여가 가능 파일 단위로 권한 부여가 가능

관계형 데이터베이스

  • IBM DB2
  • Microsoft SQL Server
  • MySQL
  • Oracle Database
  • PostgreSQL

클라우드 기반 데이터베이스

  • Amazon RDS
  • Google SQL
  • IBM DB2 on Cloud
  • Oracle Cloud
  • Azure SQL

관계형 데이터베이스의 장점

  • 테이블을 조인하여 유용한 데이터를 만들 수 있음
  • 데이터베이스를 사용하는 동안 사용가능한 유연성
  • 테이블 관계 설정을 통한 데이터 중복의 최소화
  • 쉬운 백업과 복구를 위한 유용한 옵션
  • 데이터베이스의 트랜잭션의 정확성과 신뢰성을 보장하는 ACID
    • 원자성(Atomicity) - 트랜잭션은 전부 성공하거나, 전부 실패
    • 일관성(Consistency) - 트랜잭션 이전과 이후, 데이터베이스는 무결성을 유지
    • 독립성(Isolation) - 모든 트랜잭션은 다른 트랜잭션과 독립적
    • 지속성(Durability) - 하나의 트랜잭션이 성공적으로 수행되면, 기록이 영구적으로 유지

관계형 데이터베이스의 한계

  • structured data에 대해서만 사용 가능
  • 두 테이블의 스키마와 데이터 타입이 같을 때만 데이터의 마이그레이션이 가능
  • 필드에 정의된 길이보다 큰 데이터가 들어오면 데이터의 소실이 있을 수 있음

2. NoSQL(Not only SQL)

NoSQL?

Non-relational database는 데이터의 저장과 조회를 위해 유연한 스키마를 제공

  • 클라우드 컴퓨팅, 빅데이터, 웹사이트와 모바일 애플리케이션의 대용량 데이터의 등장으로 인기
  • 특정 데이터 모델을 대상으로 사용됨
  • 최신 애플리케이션의 생성과 관리를 위한 유연한 스키마를 가짐
  • 행과 열로 이루어진 테이블 형식의 스키마를 사용하지 않음
  • SQL을 사용하지 않음
  • 유연성과 반대로, 일관성 및 ACID 트랜잭션을 잃을 수 있다
  • 스키마리스 구조를 이용해 데이터를 저장
  • 개발자가 입력 단계에서 데이터의 무결성 검증을 제대로 해야 한다

NoSQL 데이터베이스의 종류

  • Key-value Database
    • key는 고유한 값으로 유지
    • 테이블 간 조인을 고려하지 않으므로 외부키나 컬럼별 constraint 등이 필요 없음
    • Column Family Database도 포함하여 얘기하는 경우도 많음
    • 값에 모든 데이터 타입을 허용하기 때문에 개발자들이 입력 단계에서 검증 로직을 구현해 데이터 무결성을 보장하는 것이 중요
    • 간단한 데이터 모델을 대상으로 데이터를 자주 읽고 쓰는 애플리케이션에 적합
    • boolean이나 int값처럼 단순한 값이 일반적이지만, JSON 같은 구조화된 데이터도 저장 가능
    • ex)
      • Redis
      • Riak
      • Oracle Berkely
      • AWS DynamoDB
    • Key-value Database의 사용
      • 성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
      • 장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
      • 모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
      • 이미지나 오디오 파일 같은 대용량 객체 저장
  • Document Database
    • Key-value Database와 같이 데이터 저장에 Key-value Type을 사용

    • Document Database에서는 값을 문서로 저장
      - 문서는 Semi-structured data로 보통 JSON이나 XML을 사용

    • 값을 저장하기 전 스키마를 지정하지 않고, 문서를 추가하면 해당 문서가 스키마가 된다

    • 각 문서별로 다른 필드를 가질 수 있기 때문에 입력 단계에서 데이터 무결성을 보장해야 한다

      • ex)

        • MongoDB
        • CouchDB
        • Couchbase
      • Document Database의 사용

        	- 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
        • 제품처럼 다양한 속성이 있는 데이터 관리
        • 다양한 유형의 메타데이터 추적
        • JSON 데이터 구조를 사용하는 애플리케이션
        • 비정규화된 중첩 구조의 데이터를 사용하는 애플리케이션
  • Column Family Database
    • 대용량 데이터, 읽기와 쓰기 성능, 높은 가용성을 위해 설계

    • Column과 Row 등 관계형 데이터베이스에서 사용하는 용어를 사용해 스키마 정의

    • 미리 정의된 스키마를 사용하지 않기 때문에 입력 단계에서 데이터 무결성을 보장해야 한다

    • 테이블 간 조인을 지원하지 않음

    • Column Family Database는 일반적으로 비정규화되어 있음

    • 한 객체에 대한 모든 정보를 가능한 매우 넓은 단일 Row에 넣어 저장

      • 한 Row에 수백만 개의 컬럼을 보관하는 것도 비정상적인 것이 아님
    • 보통 여러 대로 구성된 클러스터에서 운영되며, 단일 서버에서 운영될만큼 데이터가 적다면 Document Database나 Key-value Database를 고려하는 것이 좋다

    • 컬럼 수가 많다면 이들을 컬렉션으로 묶어 사용 가능 → Column Family

      • 성 + 이름 = 이름 컬렉션
      • 사무실 전화 + 핸드폰 전화 = 전화번호
    • ex)

      • HBase
      • Cassandra
      • GCP BigTable
      • Microsoft Azure Cosmos DB
    • Column Family Database의 사용

      • 데이터베이스에 쓰기 작업이 많은 애플리케이션
      • 지리적으로 여러 데이터 센터에 분산되어 있는 애플리케이션
      • 복제본 데이터가 단기적으로 불일치하더라도 큰 문제가 없는 애플리케이션
      • 동적 필드를 처리하는 애플리케이션
      • 수백만 테라바이트 정도의 대용량 데이터를 처리할 수 있는 애플리케이션
  • Graph Database
    • 시각화, 분석, 분산된 데이터의 관계를 발견하는 데 유용

    • 대용량의 트랜잭션을 처리하기에 유용하지 않음

    • ex)

      • Neo4J
      • Cosmos DB
    • Graph Database의 사용

      • 연관된 데이터
      • SNS 데이터
      • 실시간 제품 추천
      • 네트워크 다이어그램
      • 사기 검출
      • 접근 관리

NoSQL의 장점

  • 대용량의 Structured, Semi-structured, Unstructured Data를 다룰 수 있음
  • 분산된 시스템으로 사용될 수 있음
  • 효율적이고 비용 효율적으로 확장 가능한 아키텍처
    • 새로운 노드를 추가하여 용량이나 성능을 높일 수 있음
  • 간단한 디자인과 더 나은 제어를 통한 가용성과 확장성을 향상

3. Data Warehouse, Data Marts, Data Lakes

데이터 마이닝 저장소는 OLAP로 reporting, 분석, 인사이트 도출 등에 사용됨

Data Warehouse

  • 다양한 소스로부터 통합한 데이터의 중심 저장소
  • 단일 소스로 사용됨
  • 전처리된 데이터를 저장
  • 데이터 웨어하우스에 저장된 데이터는 이미 전처리가 완료되어 분석 준비 상태임
  • 데이터 웨어하우스는 원래 트랜잭션 시스템의 관계형 데이터를 저장
    • CRM
    • ERP
    • HR
    • 금융 애플리케이션
  • NoSQL의 등장 이후 NoSQL 데이터베이스도 데이터 웨어하우스로 사용됨
  • 데이터 웨어하우스는 3개의 계층으로 구성
    • Database Server - 서로 다른 소스로부터 데이터를 추출
    • OLAP Server - 데이터베이스 서버로부터 받은 정보를 처리하고 분석
    • Client Front-End Layer - 데이터를 쿼링, reporting, 분석
  • 최근에는 클라우드 위에서 사용됨
    • 더 적은 비용
    • 한계가 없는 용량과 컴퓨팅 용량
    • 사용한만큼의 비용 청구
    • 빠른 복구 지원
  • ex)
    • teradata
    • Oracle EXADATA
    • IBM DB2
    • NETEZZA
    • Amazon Redshift
    • Google Bigquery
    • Cloudera
    • Snowflake Cloud Data

Data Marts

  • 데이터 웨어하우스의 하위 영역
  • 특정 비즈니스 목적 또는 사용자를 위해 설계
  • 필요한 데이터를 더 빠르고 효율적으로 제공하기 위해 사용됨
  • 데이터 마트의 3가지 유형
    • Dependent

      • 데이터 웨어하우스의 하위 영역
      • 데이터 웨어하우스의 일부분에 대한 분석을 제공
      • 독립적인 보안과 독립적인 퍼포먼스를 제공
      • 이미 전처리가 된 데이터를 데이터 웨어하우스에서 가져옴
    • Independent

      • 독립 데이터 마트는 데이터 웨어하우스가 아닌 운영체제나 외부 소스에서 생성
      • 운영 체제 및 외부 소스에서 직접 제공되기 때문에 소스 데이터에 대한 변환 프로세스가 필요
    • Hybrid

      • 하이브리드 데이터 마트는 데이터 웨어하우스와 운영체제, 외부 데이터를 모두 결합

Data Lake

  • 대용량의 Structured, Semi-structured, Unstructured data를 별도의 가공 없이 저장
  • 데이터 구조나 스키마 없이 데이터를 저장
  • 소스에서 얻은 데이터를 그대로 저장하여 필요할 때 필요에 맞게 가공
  • 데이터 레이크도 데이터 거버넌스를 가지며, 데이터는 분류되고 보호되고 관리됨
  • AWS S3이나 Hadoop, NoSQL 데이터베이스 등을 이용해 배포 가능
  • 장점
    • 모든 종류의 데이터를 저장
    • 저장 용량에 따른 빠른 확장
    • 데이터 구조, 스키마, 변환에 필요한 시간 절약
    • 필요에 따라 데이터를 가공할 수 있음
  • ex)
    • amazon
    • cloudera
    • google
    • IBM
    • Informatica
    • Microsoft
    • Oracle EXADATA
    • SAS
    • Snowflake
    • teradata
    • zaloni
profile
스터디를 해보자

0개의 댓글