Week 13 - BigData and Distributed Database

2024. 2. 2. 22:27CS Life/Database

Motivation

  • Very Large volumes of data being collected
  • Web Log (Early source of data) 와 같은 데이터들이 가치가 생김

Big data : 이전 세대 데이터베이스에서 처리하는 데이터와 차별화

  • Volume : Much larger amounts of data stored
  • Velocity : Much higher rates of insertions
  • Variety : many types of data, beyond relational data

Querying big data

매우 큰 Scalability 를 필요로 하는 Transaction Processing System
많은 애플리케이션들이 높은 확장성을 얻을 수 있다면 ACID 특성과 다른 데이터베이스 기능을 희생할 의사가 있다

ACID (추가 정보)

Atomicity, Consistency, Isolation, Durability의 약자
데이터베이스 트랜잭션의 안전성과 무결성을 보장

Query Processing system that

  • need very high scalabiliy
  • need to support non-relation data

Big Data Storage Systems

Reduce the role of database
Increase role of read/write the data
그래서 등장한 시스템들

  • Distributed file systems
  • Sharding across multiple databases
  • Key-value storage systems
  • Parallel and distributed databases

Hadoop File System Architecture


전체 클러스터를 위한 단일 Namespace 로 구성
파일은 블록 단위로 분할 (64MB 크기)
각 블록은 여러 DataNode 에 복제되어서 저장
클라이언트 : NameNode 에 위치한 블록들을 탐색 + DataNode 에 직접 데이터 접근

단어

  • NameNode (Logical) :
    filename 을 블록 ID 에 매핑
    각 블록 ID 를 블록의 복제본을 가지고 있는 DataNode 에 매핑
  • DataNode (Physical) :
    블록 ID 를 디스크의 물리적 위치에 매핑

즉 아래 단계처럼 생각할 수 있다

  1. 클라이언트는 파일을 생성하거나 업로드합니다.
  2. NameNode는 파일 이름을 블록 ID에 매핑합니다.
  3. DataNode는 블록 ID에 해당하는 데이터를 저장합니다.
  4. DataNode는 데이터를 디스크에 저장합니다.

Data Coherency

  • Write-once-read-many access model
  • 클라이언트는 기존 파일에 추가만 가능
  • 분산형 파일 시스템은 많은 파일에는 적합
  • 수십수억 개의 작은 튜플(Data) 로 인해 오버헤드가 매우 높고 성능이 저하

Sharding

Partition data Across Multiple Database (여러 데이터베이스에 걸쳐 데이터를 분할)
분할은 일반적으로 일부 분할 속성 (Partitioning keys or Shard keys (User ID)) 에 대해서 수행

(E.g., records with key values from 1 to 100,000 on database 1,records with key values from 100,001 to 200,000 on database 2, etc.)

애플리케이션은 어떤 레코드가 어떤 데이터베이스에 있는지 추적하고 해당 데이터베이스에 쿼리/업데이트를 전송

장점 : Scales well, Easy to implement
단점 : Not transparent (투명하지 않음) → 애플리케이션이 쿼리 라우팅, 여러 데이터베이스에 걸친 쿼리를 수행해야함
데이터베이스에 과부하가 걸리면 일부를 분산하는 것이 쉽지 않다
데이터베이스가 많을수록 장애 가능성 상승
가용성을 보장하기 위해 복제본을 유지하는데 애플리케이션의 작업량 상승

Simple Problem

Type of Skew

Data distribution skew : 데이터베이스에서 테이블의 데이터가 불균등하게 분산되어 있는 현상
Balanced range-partitioning vector 를 생성하여 range partitioning 을 통해 해결

Init : Partitioning = Static 이라고 가정
Partitioning vector 는 한번 생성하면 변경되지 않음
변경할 경우 Repartitioning 필요

Dynamic Partitioning 은 vector 를 지속적으로 변경할 수 있음

→ 파티션 벡터를 지속적으로 변경하는 예시

  • 테이블의 데이터 분포가 불균등해지면, DBMS는 파티션 벡터를 변경하여 데이터를 다시 분산합니다.
  • 새로운 데이터가 삽입되면, DBMS는 파티션 벡터를 변경하여 새로운 데이터를 적절한 파티션에 할당
  • 기존 파티션이 너무 커지면, DBMS는 파티션을 분할하여 데이터를 분산합니다

Replication


장애 발생시 가용성을 높이는 것 : Avaliability Despite Failures
2개 많게는 3개 노드에 복제
복제 단위는 일반적으로 Partition/Tablet
장애가 발생한 노드의 데이터 요청은 자동으로 복제본으로
각 테블릿에 대한 Partition table 은 두 개의 노드에 복제

Loacation of Replicas

  • 데이터 센터 내에 복제
    • 머신 장애 처리 가능
    • 로컬로 복제본을 사용할 수 있을 경우 Latency Reduce
  • 데이터 센터 간 복제
    • 데이터 센터 간의 장애 (화재, 지진 등) 처리
    • 전체 데이터 센터에 대한 Network Partitioning
    • 인근 데이터센터에서 복제본을 사용 가능할 경우 낮은 레이턴시

Key Value Storage System

  • KV Store
  • Key value database

대규모 데이터셋의 빠른 처리를 위한 SQL 간소화
수십억개의 작은 레코드(KB) 를 대량으로 저장
레코드는 여러 머신에 분할
쿼리는 시스템에서 적절한 머신으로 할당 (route)
키값 저장소는 모든 복제본 업데이트가 적용
값이 일관되게 유지하도록 보장
→ Key-value stores ensure that updates are applied to all replicas, to ensure that their values are consistent

  • 연관된 키와 함께 해석되지 않은 byte 를 저장할 수 있다.
  • E.g., Amazon S3, Amazon Dynamo
  • 연관된 키가 있는 Wide-table (Attribute name 이 임의로 많을 수 있음)
  • 와이드 테이블 (Wide-table)은 행과 열로 구성된 데이터 모델입니다. 열은 데이터의 속성을 나타내며 각 행은 특정 엔티티에 대한 데이터를 포함합니다. 와이드 테이블은 유연하고 확장성이 뛰어나지만 쿼리 성능이 저하
  • JSON : MongoDB, CouchDB (document model)
  • 문서 저장소 (Document store)는 데이터를 JSON이나 XML과 같은 반구조화된 형식으로 저장
    Some key-value stores support multiple versions of data, with timestamps/version numbers

Key value stores support

  • put(key, value) : used to store values with an associated key
  • get(key) : which retrieves the stored value associated with the specified key
  • delete(key) : Remove the key and its associated value

Some systems also support range queries on key values
Key value stores are not full database systems
완전한 데이터 베이스 시스템은 아님

  • Have no/limited support for transactional updates
  • 트랜잭션 업데이트를 지원하지 않거나 제한적으로 지원
  • Applications must manage query processing on their own
  • 애플리케이션이 자체적으로 쿼리 처리를 관리해야함

RocksDB : Developed and maintained by facebook

Centralized Database Systems

run on a single computer system
single-user system
multi-user system 은 server system 으로 알려짐
클라이언트 시스템에서 요청을 수진
Multi-core system with Coarse-grained Parallelism

  • Typically, a few to tens of processor cores
  • 대체로 세분화된 병렬처리는 매우 많은 수의 컴퓨터를 사용

Server System Architecture

두가지가 있음

1. Transaction Server

관계형 데이터베이스 시스템에서 널리 사용
Query Server System 또는 SQL 서버 라고도 함
Client send requests to the server
Transactions are executed at the server
Results are shipped back to the client

Process Structure

일반적인 트랜잭션 서버는 공유 메모리에 데이터를 접근하는 여러 프로세스로 구성
공유 메모리는 공유 데이터를 보유

  • Buffer Pool
  • Lock Table
  • Log Table
  • Log Buffer
  • Cached Query Plans (동일한 쿼리가 다시 제출될 경우 재사용)
    모든 데이터베이스는 공유 메모리에 접근할 수 있다.

Server Process

  • 사용자 쿼리를 받아서 결과를 반환
  • 프로세스는 MultiThreaded 화 되어, 하나의 프로세스가 여러 사용자 쿼리를 동시에 수행 가능
  • 일반적으로 여러개의 멀티스레드 서버 프로세스가 있음
    Database Writer Process
  • 수정된 버퍼 블록을 지속적으로 디스크에 출력
    Log Writer Process
  • 서버 프로세스는 단순히 로그 레코드를 로그 레코드 버퍼에 추가
  • 로그 라이터 프로세스는 로그 레코드를 안정적인 스토리지에 출력
    CheckPoint Process
  • 주기적인 체크포인트 수행
    Process Monitor Process
  • 다른 프로세스를 모니터링하고 다른 프로세스가 실패하면 복구 조치 수행
    Lock Manager Process
  • 데이터베이스 시스템에서 데이터 무결성 유지와 동시성 제어를 위해 중요한 역할을 하는 프로세스
  • 잠금 요청 허가를 위한 프로세스 간 통신의 오버헤드를 피하기 위해서 lock table 에서 직접 작동
  • deadlock detection 을 위해서 지속적으로 사용
    두 프로세스가 동시에 동일한 데이터 구조에 액세스하지 않도록 하기 위해서 데이터 베이스 시스템은 mutual extension 을 사용한다.
  1. Data Server
    고성능 트랜잭션 처리 시스템을 구현하는데 사용되는 병렬 데이터 서버
    데이터 항목은 처리가 수행되는 클라이언트로 전송
    업데이트된 데이터는 서버에 다시 Write
    이전 세대의 데이터 서버는 데이터 항목 단위 또는 여러 데이터 항목을 포함하는 페이지 단위로 운영
    현 세대 데이터 서버 (데이터 저장 시스템) 는 데이터 항목 단위 (Units of data items) 로 작동
    → 일반적으로 사용되는 데이터 항목 형식에는 JSON, XML 또는 해석되지 않은 이진 문자열이 있음.

단어 설명

  • Prefetching : 곧 사용될 수 있는 항목을 미리 가져오는 것
  • Data caching : Cache Coherence
  • Lock caching
    • 클라이언트가 보낸 트랜잭션 전반에서 lock 이 caching
    • lock 은 서버에 의해 call back 될 수 있음
  • Adaptive Lock Granularity (적응형 잠금 세분화)
  1. Lock Granularity escalation : 세분화 락에서 더 큰 범위의 락(예: 페이지 락, 테이블 락)으로 전환
    동시성 제어 성능을 향상시키는 데 사용
  2. Lock Graularity de-escalation : 더 큰 범위의 락에서 더 작은 범위의 락(예: 페이지 락에서 세분화 락)으로 전환 → 락 범위 디스컬레이션은 데이터 무결성을 유지

Parallel Systems

  • 다중 프로세스와 다중 디스크로 구성
  • 빠른 상호연결 네트워크로 연결
    Motivation : 단일 컴퓨터 시스템이 처리할 수 있는 것 이상의 워크로드 처리
  1. 고성능 Transaction Processing : 웹 규모의 사용자 요청 처리
  2. 대용량 데이터에 대한 Decision Support : 대규모 웹에서 수집한 데이터 처리

Parallel Database Architectures


“이 글은 Obsidian 에서 작성되어 업로드 되었습니다”

'CS Life > Database' 카테고리의 다른 글

Week 12 - Transaction and Recovery  (0) 2024.02.02
Week 11 - Data Storage Structure  (0) 2024.02.02
Week 14 - Normalization  (0) 2023.12.10
Week 10 - Physical Storage Systems  (0) 2023.12.10
Week 8 - Database Design Using E-R Model  (1) 2023.12.10