ONE SIZE DOES NOT FIT ALL

  • 전통적인 RDBMS
    관계형 데이터 모델, ER-Diagram, SQL 스키마, 정규화, 데이터 무결성 ...
    트랜잭션, ACID 속성 ...
    병행처리(Concurrency control), 2PLP... 회복, 로그 ...

  • 전통적 DBMS의 문제점
    Scalability: 오라클을 10,000대에 설치/관리할 수 있나??
    Performance: 오라클에서 초당 만건 이상의 변경을 처리할 수 있나? 

    Schema: 정형화된 스키마가 없으면?
    Reliability는 필요 없으니 더 빠를 수는 없나?
    Persistent는 필요 없으니 더 쉬울 수는 없나?
    복잡한데이터모델은필요없으니더간단할수없나? 


NoSQL

"Not only SQL"

전통적인 RDBMS와는 다른 종류의 새로운 데이터 저장/ 관리 시스템 


NoSQL의 장/단점

장점
유연한 스키마
쉽고 빠른 설치/관리
Massive Scalability
완화된 일관성(consistency)High Performance & Availability

단점
SQL과같은표준질의언어부족프로그래밍모델도입 

완화된 일관성ACID가 보장 안됨 



NoSQL 종류

MapReduce / Hadoop

  • –  대용량 데이터 분석 (OLAP)

  • –  Google: MapReduce + Google File System

–  Apache: Hadoop + Hadoop Distributed File System

Key-Value

  • –  High Performance 병렬 해시

  • –  잦은 변경, 빠른 반응 속도 (OLTP)

–  Dynamo (Amazon), Cassandra (Facebook/Apache), BigTable (Google), HBase (Facebook/Apache)

Document

Key + 문서 (XML, JSON 과 같은 반구조화/비구조화 자료구조) MongoDB, CouchDB (Apache), SimpleDB (Amazon)

Graph
    – Node/Edge, RDF, Semantic Web 예: Neo4j, Allegro 



MapReduce

Map: 문제를 sub-problem으로 나누어 분산 해결 

map(item)<key, value>

Reduce: sub-problem 별로 결과를 취합 

reduce(key, <list of values>)value

예)책한권에서단어별출연빈도수세기

  • –  Map: 아이들 각각에게 한 페이지씩 나누어주고, <단어, 빈도수>를 각각

    포스트잇에 적어 보고하도록 함.

  • –  Reduce: A/B/C/D/E... 별로 포스트잇을 취합하여 각각 숫자를 더함 



MapReduce 프레임워크

Apache Hive (Facebook/Netflix) Hadoop + Data warehouse
    – HiveQL(SQL 유사 질의 언어) 지원

Apache Pig (Yahoo)
    – Pig Latin: High-level language for Hadoop

Apache ZooKeeper

  • –  분산환경에서설정공유,이벤트처리,분산관리등

  • –  open source centralized configuration service and naming registry for large distributed systems 

Key/Value

단순한 데이터 모델: (key, value)

단순한 연산: put, get, update, delete

장점

Efficiency: 빠른 처리 속도

Scalability: 필요에 따른 손쉬운 서버 확장 

Fault-tolerance: 데이터 복제 


DHT: Distributed Hash Tables

Hash
    – put(key, value)
    – valueßget(key)

Distributed
    – 임의의 노드에 분산 저장
    – 노드의 추가/삭제가 자유로움

대표적인구현방법 Chord(1):

Ring형태 구성
m비트의 키와 노드 ID사용
O(log N)의 라우팅 테이블 크기
O(logN)홉만에데이터도달보장 



BSP (Bulk Synchronous Parallel)

병렬계산을위한계산모델

  • Pregel: A System for Large-Scale Graph Processing, SIGMOD 2010 by Google

  • Apache Hama: http://hama.apache.org/

  • Apache Giraph: http://incubator.apache.org/giraph/ 

NewSQL (?)

  • VoltDB by Michael Stonebraker
    Automatic partitioning across a shared nothing server cluster
    Main memory data architecture
    Elimination of multi-threading and locking overhead
    Built-in High Availability using synchronous multi-master replication 

    Review of VoltDB's stored procedure interface

  • Vertica (HP) by Michael Stonebraker Real-Time Loading & Querying
    Advanced In-Database Analytics
    Columnar Storage & Execution

    Aggressive Data Compression
    Scale-Out MPP Architecture
    Automatic High Availability
    Optimizer, Execution Engine & Workload Management Native BI, ETL, & Hadoop/MapReduce Integration 


분석 전용 DBMS

기존DBMS 분석전용DBMS
Concurrency Control No concurrency
Row-기반 저장구조 Column-기반 저장구조 중앙집중서버 병렬/분산처리
고수준의 트랜잭션 레벨 약화된 트랜잭션 레벨 디스크기반 메인메모리기반

참고: Key Features of EXASOL

  • Relational database management system

  • Standard hardware cluster

  • In-memory query processing

  • Massively parallel data processing

  • Column by column storage

  • Intelligent and innovative compression algorithms

  • Self-learning and self-optimising system

  • Simple integration thanks to standard interfaces 



Column-Oriented DBMS

컬럼순서로데이터저장

고객ID

이름

주소

나이

전화번호

CE1

박현민

서울

24

....

CE2

이강선

대전

20

....

CE3

홍길동

서울

18

....

이점
    – 컬럼단위의대한분석에용이
    – 압축이 효과적메모리 기반 처리 용이
    – 병렬 처리에 유리 (SIMD: Single Instruction, Multiple Data) 


'컴퓨터공학 > DataBase' 카테고리의 다른 글

Relational Model의 주요 개념  (0) 2013.01.14
Database 이론  (0) 2013.01.14

+ Recent posts