Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

No SQL Database by Mind Map: No SQL Database
0.0 stars - reviews range from 0 to 5

No SQL Database

왜 비관계형 인가?

관계형은 확장 어려움

복제에 의한 확장, Master-Slave 구조에선 읽기는 빠르지만 쓰기는 제한적임(병목현상), 다중 마스터 구조에선 마스터 추가로 쓰기 성능 향상 가능 하지만 충돌의 위험 생김

분할에 의한 확장, 읽기만큼 쓰기도 확장 가능하나 애플리케이션 레이어에서 파티셔닝을 인지하고 있어야 함. 쉽지않음

INSERT-only 시스템

문제점1. 종속에 대한 트리거를 이용할 수 없음

문제점2. 쿼리가 비활성 데이터를 걸러야함

UPDATE와 DELETE

정보손실의 이유로 잘 사용되지 않음

JOIN, 비용이 많이듬, 반정규화로 비용 줄일 수 있으나 UPDATE DELETE 시스템에선 어려움

ACID 트랜젝션, 원자성, 단일키 원자성이면 충분, 일관성, 엄격한 일관성 필요없고 결과으이 일관성을 가질 수 있음, 격리성, 읽기에 최선을 다하는것 이상의 격리성은 필요치 않으며 단일키 원자성이 더 쉬움, 지속성, 실패시도 데이터가 유지되는 지속성 필요

고정된 스키마, UPDATE DELETE 시스템은 테이블 락이 필요하기 때문에 스키마 수정이 어려움

대부분 디스크 기반이기 때문에 빠른 응답 기대키 어렵다

CAP 이론

이해도

RDBMS는 CA에 집중

웹발전에 따라 다양한 요구사항 때문에 P의 특성 강조됨

시스템에서 보장해야 하는 특징

유효성, 모든 노드는 항상 읽기와 쓰기를 할 수 있어야 합니다.

일관성, 모든 노드들은 동시에 같은 데이터를 보여야 합니다.

파티션 허용치, 시스템은 물리적인 네트워크 파티션을 넘어서도 잘 동작해야 합니다

확장성을 해결기위해 No SQL을 선택함

특장점

높은 확장성

높은 Availability

높은 성능

원자성

일관성

지속성

배포의 유연함

쿼리의 유연함

접근방법기준에 따른 분류

CAP

CA, Postgres, MySQL

CP, MongoDB, BigTable

AP, Cassandra, CouchDB, Dynamo, SimpleDB

분산

분산형, CouchDB, MongoDB, Cassandra

비분산형, Amazon SimpleDB

데이터모델의 풍부함

Key-Value Store, Amazon Dynamo, Amazon S3

Document Store, Amazon SimpleDB, CouchDB, Erlang으로 작성, 데이터와 스토리지 모델, 레코드는 JSON 스트링(도큐먼트) 형식으로 직렬화. 각 도큐먼트는 유니크한 DocId를 갖는다., B+트리 사용으로 오직 오퍼레이션 추가, Append Only 모델. 읽기가 다중버전의 동시성 제어를 사용해 수행. 쓰기는 동시에 작성가능한 Blog 이외는 직렬화, 같은 데이터를 위한 다중 뷰를 가질 수 있음, Design Document라고 부르는 도큐먼트의 특별한 타입에서 값에 키를 매핑하는 Javascript 함수를 사용하도록 정의, View 함수는 View를 쿼리했을때 실행. Map, Reduce 함수 존재, 복제-다중마스터를 지원. 마스터 슬레이브를 갖으며 오직 최신의 리비전만 복제, 멀티마스터 충돌 핸들링-충돌을 탐지하고 winner를 선택키 위해 결정론적인 알고리즘 사용. winner는 기대한 마스터가 아닐 경우 애플리케이션에서 스스로 고쳐야함, 파티셔닝과 로드 밸런싱- CouchDB Lounge 에 의해 제공, Apache 2.0 라이센스, MongoDB, C++로 작성, 데이터 모델, 컬렉션, Key-value:바이너리 직렬화된 JSON(BSON), BSON 객체 4M 제한, 큰객체는 GridFS로 지원, B-Tree로 인덱스 지원. 필드를 파라미터로 받는 db.things.ensureIndex() 함수이용하여 인덱스에서 필드를 열거, 스토리지, in-Place 업데이트, 부분업데이트 제공>전체로우 보내지 않고 업데이트 가능, Forward-only 커서 지원, 단일 도큐먼트 원자적 업데이트 지원., 쿼리, JSON 스타일, 상황적인 Operaotr 및 정규식 지원, 다중 쿼리 플랜을 시도하고 가장 잘 동작하는것을 선택, 배치 오퍼레이션:컬렉션에 Map-Reduce를 지원, 복제:마스터-슬레이브 모델(복제쌍), 파티셔닝, 알파스테이지에서 파티셔닝, Shards는 Chunk라고 불리는 유닛에서 데이터를 다루며 Chunk는 최대 50MB의 컬렉션으로 부터 인접하는 범위의 데이터, 하나의 Shard에서 Chunk 안의 다른 Shard로 마이그레이션 됨, AGPL 3.0 라이센스

Column Store, Cassndra, Column-family(BigTable) 데이터 모델 + Dynamo 분산아키텍쳐, Java로 작성, 데이터 모델, 다차원 맵, 소팅은 쓰여진 시간으로 정렬, 컬럼들은 컬럼의 이름으로 Row내에서 정렬, 파티셔닝, Dynamo와 유사, 해시함수사용, Dynamo와 다른 로드밸런싱을 위해 Chord 접근 사용, 퍼시스턴스, 로컬파일 시스템에 의지, 스토리지 구조와 접근방식은 BigTable과 유사, 쓰기, Memtable에 대한 업데이트를 따르는 내구성과 복구를 위한 커밋로그를 쓰는 Bigtable의 접근과 유사하며 커밋로그를 위한 각 머신의 전용디스크는 Write를 순차적으로 만들어 쓰루풋을 최대화 합니다., 읽기, 제공될 노드와 Read-repair를 찾는 Dynamo와 유사한 접근방식을 사용하며 스토리지 레벨에서의 접근은 BigTable과 유사한 Memtable + SSTable 시퀀스로부터 읽습니다. 라이센스는 Apache 2를 따릅니다., Big Table

저장

Memory

Configurable, Big Table, Cassandra

Disk, CouchDB, MongoDB

사례

해외

Google, BigTable, 모든 URL 기반의 문서정보 수집(key/value 기반의 BigTable에 저장), 수집한 정보를 Map/Reduce로 색인(색인 데이터도 BigTable에 저장), 도큐먼트에서 사용하는 정보가 계속 추가될 수 있다.

Digg.com, Cassandra, 내 친구가 추천한 정보를 보여주기 위해

Amazon, Dynamo

Twitter, 모든 사용자의 글을 하나의 DB에 저장할 수 없다면 내가 팔로우 하는 timeline은 어떻게 보여줄 수 있을까?

국내

NHN 인증 플랫폼, 요구사항, backend DB 점검시에도 Read가 가능한 시스템, 로그인 사용자 세션정보를 저장 및 조회, 구현, MySQL 클러스터링으로 세션 정보 저장(MySQL을 메모르 DB로 사용), in-house 메모리 DB로 사용자 정보 저장(Oracle 로그 기반으로 메모리 리플리케이션)

Daum view 추천 플랫폼, 사용자의 추천을 모두 수집, 소셜 네트웤을 저장, 추천정보를 추천히스토리와 소셜 네트워크 기반으로 Map/Reduce 분석, 신뢰도 높은 추천 기반으로 문서 랭킹 부여

Daum Cafe, 최근방문카페기능, Cassandra