빅데이터 시스템

세미·2022년 10월 25일
0

데이터베이스

목록 보기
4/9

빅데이터

  • 빅데이터 != 단지 양이 많아서
  • 현존하는 DB system 으론 다루기 어려운 data. 새로운 종류의 data
  • 빅데이터 특징
    • Volume : 데이터의 양이 많음
    • Velocity : 삽입속도↑ (한번에 수십만개의 data 저장요청)
    • Variety : 데이터 종류 매우 다양

Querying Big Data

Transaction procssing systems that need very high scalability

  • Transaction : 두개의 data를 하나의 연산단위로 묶음 (ex.은행 이체)
  • 빅데이터를 원활하게 사용 = Transaction processing system 필요
  • high scalability(확장성) = ACID properties 희생해야함. 따라서 확장성을 보장하기 어려움.

Query processing systems

  • 높은 확장성 필요
  • 비구조적데이터 처리 필요 (non-relation data)

Big data Storage Systems

1. 분산파일 시스템
굉장히 많은 양의 데이터들의 높은 access rate를 감당하기 위해 여러 서버에 파일을 나눠서 저장하고 처리를 하는 시스템
매우많은 기계에 데이터파일시스템을 분산
수십개의 서버에 수억개의 데이터를 저장.
Single file-system view 제공
- 비록 데이터가 여러 서버에 나뉘어 저장됐지만, 사용자 입장에선 한곳에 있는 것처럼 느낌.
- data intensive application이 사용
- 값싸고 신뢰할수 없는 컴퓨터를 사용. 서버비용문제 이유.
- 때문에 장애가 비번하게 발생 할 수 있음. -> 요청을 처리할 수 없음.->
- 이 문제를 해결하기 위해 파일을 replication, dectet faulure, recover

  • Hadoop file system
    • Single Namespace : 이 서버에 다 저장되어 있는 것처럼.
    • NameNode : 메타데이터(파일이름, 생성날짜, 파일크기)만 저장. data의 물리적 위치 저장.
    • DataNode : Maps a Block ID to a a physical location on dish
  • Data Coherency(데이터 일관성) : 데이터를 수정하면 복제된 데이터도 수정되어야 함. 가장 최신의 데이터를 읽어와야 함.
  • 문제: 블록을 관리할때 오버헤드가 발생할 수 있음. 성능 ↓ (메타데이터를 커버해야함.)
  1. ACID Properties in DBMS
    A = Atomicity
    • transaction이 일어나면 둘다성공 or 둘다실패
    • transaction을 구성하는 세부연산들의 실패,성공 여부가 다르면 안됨.
      C = Consistency
    • transaction 전후로 데이터베이스가 일관성이 있어야함.
    • 항상 동일한 데이터가 일관성 있게 제공되어야 한다.
      I = Isolation (고립성)
    • transaction이 여러건이 동시에 발생할수 없다. = 서로 충돌발생X
    • 여러개가 발생해도 독립적으로 수행되어야 한다.
      D = Durability (내구성)
    • 시스템 장애가 발생하더라도 transaction의 변경사항은 유지되어야한다.

2. Sharding

  • partition
  • DB를 쪼개는 것. key,범위를 기준으로 잘게 분할.
  • logical하게 데이터를 분할한것. (분산 파일 시스템은 DB와 상관X. 더 low level)
  • 물리적인 서버 여러대에 나뉘어 저장하는것을 의미.
  • 어떤 데이터가 어디에 있는지 tracking 할수 있어야 한다.
  • 모든 샤드를 한 서버에 넣을 수도 있음. (서버1:1~20, 서버2: )
  • (서버1: 1~10, 서버2: 11~20) <- 아예 DB가 다른것.
  • 장점: 구현하기 쉬움. 스케일링하기 쉬움.
  • 단점
    - Not transparent (여러 데이터베이스에 걸쳐서 이제 걸쳐 있는 데이터에 액세스를 해야 되기 때문에 그런 어떤 요청을 그러면 정확하게 내가 위치를 파악을 해두고 한 곳에만 보낼 건지 아니면 전체에다가 다 요청 뿌려가지고
    혹시 이 키에 해당하는 데이터를 가지고 있으면 답변 회신해 주세요.
    이런 식으로 할 건지 그런 거에 대해서 정해야 되거든요.
    그런 게 좀 약간 골치 아프다는 그런 얘기인 거잖아요.
    )
    - database Overloaded. -> load를 분산하는게 쉽지 않음. 특정요청이 몰려버러셔 데이터베이스가 오버로디드가 되도 그 로드를 분산시키는게 굉장히 어려움.
    - DB가 죽으면 처리할 수 없음.

3. Key-Value Store

  • 매우 작은 사이즈의 데이터를 매우많이 기록할때 사용
  • 여러대의 서버를 이용해서 partition 사용
  • 시스템이 쿼리를 어느위치에 어느데이터가 있는지 routing
  • replicate 사용.
  • 관계형모델 x --> 속도가 굉장히 빠름.
  • key,value가 굉장히 단순. = 지원 제한. 그래서 속도가 굉장히 빠름.
  • put(),delete() -> 쓰기 get()->읽기
  • range queries 사용 가능. 한번에 여러개를 읽어올 수 있음.
  • SNS 등 광범히 하게 사용.

0개의 댓글