1. NoSQL 정의 및 hbase,cassandra 등의 비교 http://xissy.thoth.kr/blog/4972364 2. NoSQL의 CAP에 대한 설명 http://www.google.co.kr/search?sourceid=chrome&ie=UTF-8&q=cap+%EC%9D%B4%EB%A1%A0 3. CAP 이론 정리 출처 : http://sjlee.egloos.com/5447532 1. 고확장성(High Scalable) 분산데이터베이스 시스템, CAP Theorem 가. CAP 정의 – 분산 시스템이 갖추면 좋을 세 가지 특성 즉 Consistency, Availability, Partition Tolerance 1) C (Consistency) : 모든 노드가 같은 시간에 같은 데이터를 보여줘야 한다. 2) A (Availability) : 몇몇 노드가 다운되어도 다른 노드들에게 영향을 주지 않아야 한다. 3) P (Partition Tolerance) : 일부 메시지를 손실하더라도 시스템은 정상 동작을 해야 한다. – CAP 이론에 따르면 위 3가지 중에 동시에 2가지만 보장할 수 있고 3개를 모두 보장하는 것이 불가능하다고 나와 있다. 그래서 데이터를 관리할 때 이 3가지 중에 어느 2가지에 중점을 두느냐가 아주 중요한 부분이다. 2. CAP 분류 및 특성 가. CAP 분류 – C= 동일성, A= 독립성, P=생존성 이라고 비유해보자 1) CA 분류 (동일성 + 독립성 = 시스템이 죽을지언정 메시지 손실은 방지하는 강한 신뢰형) – 전통적인 RDBMS가 여기에 해당한다. 트랜잭션이 필요한 경우 필수적. 2) CP 분류 (동일성 + 생존성 = 모든 노드가 함께 퍼포먼스를 내야하는 성능형) – 구글의 BigTable과 그 아류작들(HyperTable, HBase 등) 3) AP 분류 (독립성 + 생존성 = 비동기화된 서비스 스토어에 적합) – Dynamo, Tokyo Cabinet, Apache Cassandra, CouchDB, Oracle Coherence 등 나. CAP 구성 방안 – 위의 3가지가 각각의 목적이 다르기 때문에 적절한 사용 목적에 배치되어야만 한다. – 특히 C를 선택 하냐(동기식), 선택 안하냐(비동기식)를 아키텍처에 감안하여 선택해야 한다. – 보통 대용량으로 분산하는 케이스가 거의 P에 포함된다. 기존에 사용하던 RDB가 아닌 대안을 찾는다면 CP나 AP 분류를 선택해야 한다. – 보통 대용량으로 분산하는 케이스가 거의 P에 포함된다. 그러므로 기존에 사용하던 RDB가 아닌 대안을 찾는다면 CP나 AP 부류를 선택해야 한다. – CP는 대용량의 백데이터 저장이나 분산 파일 시스템용으로 사용한다. 주로 데이터의 덩치가 큰 편에 적합하며, 클러스터의 다중화도 고려되어야 한다.(C의 특성상 노드의 사망이 미치는 영향 때문에 Fail-Over 할 수 있는 다중화가 기본이다.) – AP는 요즘 인기를 얻고 있는 SNS들이 많이 채용하는 분류다. 메시지 처리가 안되면 그저 당장 처리못한다고 배를 째고 (에러 발생으로 리턴) 받을 수 있을 때 족족 받아 넣는 구조에 적합하다. 제대로 비동기식 플랫폼에 어울리는 놈이다. 이 분류는 동기식 실시간성과 동일성을 보장하지는 못하지만 Fail-Over에 강하다. – Oracle Coherence 같은 경우에는 하나의 서비스 노드가 다른 노드의 데이터를 백업본으로 들고 있을 수 있어서 다른 노드가 죽으면 해당 노드가 가지고 있던 데이터를 일정시간(몇 초) 이후에 자신의 서비스 데이터로 올려 놓는다. 그래서 시간적인 딜레이를 감안해 준다면 P의 약점인 데이터 유실을 일부 커버할 수 있고, 데이터의 유효성은 유지될 수 있다.(물론 백업본이 서비스로 올라오는 시간동안 다른 노드가 죽으면 유실될 수 있다.)3. 활용 방안 – 기존에 많이 사용하던 RDBMS는 3가지 중 CA에 집중하고 있다. 웹이 발전하면서 다양한 요구사항이 생겨나고 엄청난 양의 데이터를 처리해야 하게 되면서, RDBMS가 갖지 못한 P의 특성이 필요해졌고 그러면서 등장한 것이 NoSQL이다. 좀 더 풀어쓰면 데이터베이스에 대한 수평적 확장(Horizontal Scalability: 즉, 옆에 서버 한대 더 배치해서 데이터베이스를 늘리고 싶다는 의미이다.)에 대한 이슈가 발생했고 확장성 이슈를 해결하기 위해서 P를 선택하다보니 기존에 가지고 있던 C나 A의 특성 중 하나를 포기해야 했다. 그래서 NoSQL에는 다양한 시도들이 있지만 가장 중요한 이슈는 확장성을 해결하려는 것이다.- 관계형 데이터베이스는 기본적으로 분산형을 고려해서 디자인 되지 않았다. 그래서 ACID(원자성, 일관성, 독립성, 지속성) 트랜잭션 같은 추상화와 고레벨 쿼리모델을 풍부하게 제공할 수 있지만 확장성이 좋지 못하기 때문에 모든 NoSQL 데이터베이스는 다양한 방법으로 확장성 이슈를 해결하기 위해 초점을 맞추고 있다. 각 NoSQL에는 여러가지 차이점이 있지만 CAP의 범주에서만 보면 CP를 선택하거나 AP를 선택하게 된다. [출처] NOSQL 관련 읽을만한 글들.|작성자

NOSQL 관련 읽을만한 글들

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중