Transcript Nosql

NoSQL
Not only SQL Database
진용준, 박군제 | 마이황 / UNTOC | 2012.05.11
NoSQL
Not only SQL Database
진용준, 박군제
기부천사 / UNTO
2012.05.11
대외비
DataBase Trend ?
NoSQL: Trend?
인터넷과 하드웨어의 발전
-> 검색 서비스, 소셜 네트워크 서비스,
Dataware Housing 같은 Service의 출현.
NoSQL: Trend?
기존의
데이터에 대한 강한 수준의 정합성이나
견고성 보다는
손쉬운 확장성, 고가용성이 더 중요.
BASE 속성을 가짐.
NoSQL: BASE 속성?
BAsically Available.
Soft state.
Eventually consistent.
NoSQL
RDBMS Relational Database?
:
정형화된 Table로 구성된
데이터 항목들의 집합체.
사용자와 Relational Database를
연결시켜 주는 검색 언어를 SQL이라고 함.
Relational DataBase에서는
ACID 속성에 집중.
RDBMS ACID 속
:
성?
Atomicity(원자성)
Consistency(일관성)
Isolation (고립성)
Durability (지속성)
NoSQL: NoSQL?
SQL(Structured Query Language) 을
사용하지 않는다.
ACID를 보장하지 않는다.
분산, 내고장성(fault tolerance) 구조 이다.
WHY NoSQL ?
NoSQL: Why?
왜 비 관계형 이어야 하는가?
RDB는 확장하기가 어렵다.
NoSQL: Why?
Replication - 복제에 의한 확장
M-S 구조 Read는 빠르지만 Write에서는
병목현상 발생.
Partitioning(sharding) - 분할에 의한 확장
RDB의 가치는 관계! 파티션은 이 관계를
깬다.
?
14
CAP Theorem ?
16
NoSQL: CAP Theorem?
Consistency (일관성)
: 모든 사용자는 항상 동시에
같은 데이터를 조회
NoSQL: CAP Theorem?
Availability(유효성)
: 모든 사용자는 항상
Read/Write 할 수 있다.
장애시에 다른 노드들이 작동.
NoSQL: CAP Theorem?
Partition Tolerance(파티션 허용)
:물리적 네트워크 분할에도 시스
템은 잘 작동해야한다.
NoSQL: CAP Theorem?
Consistency (일관성)
Availability(유효성)
Partition Tolerance(파티션 허용)
NoSQL: CAP Theorem?
RDBMS = C + A
(Critical Transaction 보장)
NoSQL = C + P or A + P
(성능 보장형 , 비동기 SNS)
22
NoSQL: Data의 분산방식?
Meta-Data 방식
P2P 방식
NoSQL: Meta-Data 방식?
Master 서버에 Data의 배치정보 저장.
Master 서버를 경유하여 실제 Data를
처리할 서버로 접속.
정보를 중앙에서 관리 MapReduce도 쉽다.
NoSQL: P2P방식?
Hash 함수를 이용해서 특정 키를 서비스하는
서버를 찾는 방식
장애가 지역적인 Key 영역에서 나타남
분석 작업시 Meta 보다 어렵다.
Google Bigtable을 통한
NoSQL 알기 ?
NoSQL: Bigtable?
A Bigtable is a sparse, distributed,
persistent multidimensional sorted map.
NoSQL: Bigtable?
A Bigtable is a sparse, distributed,
persistent multidimensional sorted map.
NoSQL: NoSQL?
Map이다.
유일한 Key 와 그것에 관련된 하나의
Value를 가진 자료형.
NoSQL: Map?
{
"zzzzz" : "woot",
"xyz" : "hello",
"aaaab" : "world",
"1" : "x",
"aaaaa" : "y"
}
NoSQL: Bigtable?
A Bigtable is a sparse, distributed,
persistent multidimensional sorted map.
NoSQL: Sorted?
Sorted 이다.
일부 NoSQL (Hbase, BigTable)이 가지고
있는 기능.
NoSQL: Bigtable?
A Bigtable is a sparse, distributed,
persistent multidimensional sorted map.
NoSQL: Multidimensional
?
다차원 적이다.
다차원 적인 Map을 제공한다 .
Map의 Map을 지원.
NoSQL: Multidimensional?
{
"1" : {
"A" : "x",
"B" : "z" },
"aaaaa" : {
"A" : "y",
"B" : "w"
},
"aaaab" : {
"A" : "world",
"B" : "ocean"
}
,
"xyz" : {
"A" : "hello",
"B" : "there"
},
"zzzzz" : {
"A" : "woot",
"B" : "1337"
}
}
NoSQL: Bigtable?
A Bigtable is a sparse, distributed,
persistent multidimensional sorted map.
NoSQL: Persistent
?
영구적이다.
당연히 데이터는 어느 정도 이상은
영구적이어야 한다.
다만 메모리 기반의 noSQL의 경우
이 특성이 조금 떨어진다.
NoSQL: Bigtable?
A Bigtable is a sparse, distributed,
persistent multidimensional sorted map.
NoSQL: ditrubuted?
분산 기반이다.
기존의 RDB가 확장성에 대한
제약이 심했기 때문에 설계 초기부터
분산에 기반을 두게됨.
NoSQL: Bigtable?
A Bigtable is a sparse, distributed,
persistent multidimensional sorted map.
NoSQL: Sparse?
드물다. ( 구조가)
기존의 RDB가 명확한 스키마 기반이었다면
유연성을 제공하는 스키마.
NoSQL: NoSQL 특징
관계형 데이터 모델이 아닌
키-값 데이터 모델
데이터는 분산된 노드에 파티션
복제되어 저장
정합성보다는 단절내성
NoSQL: RDB가 버려야 할 것들
UPDATE 와 DELETE
JOIN
ACID Transaction
고정 스키마
NoSQL: NoSQL에 기대 되는 특성
확장성
Availability
원자성
높은 성능
결과적 일관성
배포, 모델링, 쿼리의 유연성
데이터의 지속성
다이나모 Dynamo:
Amazon, BigData Service
Dynamo:
Dynamo?
키-값 쌍을 저장할 수 있는 분산 데이터 관리 시스템
•고 가용성이 필요한 경우
•설계원칙
데이터 방식
분산 배치
-P2P 분산 기법, DHT 알고리즘 이용
Data의 신뢰성
-일관성의 문제
Dynamo :
설계원칙
•Incremental scalability
•Symmetry
•Decentralization
•Heterogeneity
Dynamo:
분산 배치
p2p 분산 기법 이용
•hash(k)와 hash(node id)의 값을 동일한 주소
공간으로 맵핑해 관리하는 DHT기법 사용
•DHT 기법을 이용해 데이터를 partitioning한다
Dynamo:
DHT 알고리즘
키 공간분할(keyspace partition)
오버레이 네트워크(overlay network)
•장점 : 룩업에 성능이 좋다.
명령이 자동으로 이뤄질 수 있게 구성.
•단점 : 복잡한 쿼리의 사용이 힘들다.
Hash(N3) > N1 <= hash(N1)
Hash(N1) > N2 <= hash(N1)
Hash(N3) > N1 <= hash(N1)
<키 공간 분할>
Dynamo:
데이터 신뢰성
데이터 를 여러 노드에 복제
낙관적 정책을 사용
•장점 : 가용성을 보장
•단점 : 일관성에 문제 발생
Dynamo:
해결책
1. 시스템 내부적으로 처리
2. 애플리케이션 처리
카산드라 Cassandra:
Facebook, BigData의 위력
Cassandra: Cassandra?
•p2p 네트워크 환경에서 구조화된 데이터 저장
소를 제공하는 시스템.
• 페이스북에서 개발해 아파치 오픈소스로 공개.
+
+
=
혼합구성한
시스템
카산드라
Cassandra: 카산드라 시스템 구성
Cassandra: 데이터 모델
•클러스터
•키 스페이스
•칼럼 패밀리
•칼럼
•슈퍼 칼럼
Cassandra: 데이터 분산
•Partitioner
-RandomPartitioner
-OrderPreservingParirioner
-CollatingOrderPreservingPartitioner
•InitialToken
Cassandra: 데이터 저장
•데이터 복사
-RackUnware
-RackAware
-DataCenterShard
MongoDB:
BigData시대 최고의 NoSQL DB
MongoDB: MongoDB?
문서기반 데이터 저장소
-키-값 기반 저장소처럼 질의가 어렵다는 점과
관계형 데이터베이스의 확장성 문제를 해결
•싱글머신
•마스터-슬레이브
•복제-셋
•샤드
MongoDB: 데이터 모델과 인덱스
일반적으로 정적으로 스키마를 정의 할
필요가 없는 스키마 프리 특징
•문서
•컬렉션
•데이터베이스
MongoDB: INDEX?
•문서의 모든 필드에 대해 인덱스를 생성 가능
•필드를 검색 조건으로 할 경우 검색속도가 빠르다
<<인덱스 추가>>
db.<collection name>.ensureIndex( { <field name>,
<1(desc), -1(asc) > } )
예 : db.blog.ensureIndex( { author, 1 } )
<<위치 기반 검색>>
db.places.find( { loc : { $near : [50,30] } } ).limit(1)
MongoDB: 데이터 복제와 샤딩
안정성, 확장성을 지원.
•마스터-슬레이브 복제
•복제-셋
MongoDB: 샤딩
여러 노드에 데이터를 저장시키는 분산 전략으로
특정 서버가 특정 데이터의 영역을 담당하는 방
식으로 데이터 분산
•Mongod
•Mongod(configsvr)
•Mongos
Q&A
감사합니다.
이 문서는 나눔글꼴로 작성되었습니다. 설치하기