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 |