NoSQL과 NewSQL
NoSQL: 분산 아키텍처의 확장성, 스키마 없는 데이터 관리가 특징이며, 기존 SQL과 다르다.
NewSQL: 분산 아키텍처의 확장성하거나, ....
종래의 관계형DB에서 관계 속성이 지니는 구속적인 개념에서 벗어남.
예를 들어, 스키마 제약으로 인한 필드 값의 제한적이 사용이 예로 들 수 있다.
일관성보다는 가용성과 확장성에 중점을 둔 정장 방식을 취함.
오픈 소스 중에서 얼랭(Erlang)으로 제작된 CouchDB와 MongoDB가 있다.
얼랭은, 상업적 함수 기반 언어로, 속도가 빠르고, 언어 자체적으로 분산을 지원한다.
따라서 별도의 쓰래드 모델을 사용하지 않는다.
NoSQL: 분산 아키텍처의 확장성, 스키마 없는 데이터 관리가 특징이며, 기존 SQL과 다르다.
NewSQL: 분산 아키텍처의 확장성하거나, ....
종래의 관계형DB에서 관계 속성이 지니는 구속적인 개념에서 벗어남.
예를 들어, 스키마 제약으로 인한 필드 값의 제한적이 사용이 예로 들 수 있다.
일관성보다는 가용성과 확장성에 중점을 둔 정장 방식을 취함.
오픈 소스 중에서 얼랭(Erlang)으로 제작된 CouchDB와 MongoDB가 있다.
얼랭은, 상업적 함수 기반 언어로, 속도가 빠르고, 언어 자체적으로 분산을 지원한다.
따라서 별도의 쓰래드 모델을 사용하지 않는다.
MongoDB의 특징은 다음과 같습니다.
0. 문서기반이다.
1. 빠르고 사용하기 쉽다.
2. RDBMS의 범위쿼리, 보조색인, 정렬 같은 관계형 연산 기능과 MapReduce같은 집계연산 기능을 동시에 지원한다.
3. 다양한 언어를 지원한다.(C, java, 파이썬... 등 약 10여개의 언어에 맞는 드라이버 제공)
4. C++로 작성되었다.
5. 수평적 무한확장 가능하다.
6. 데이터는 bson형태로 저장된다.(binary json)
7. 구조적이지 않다.(RDBMS처럼 데어터를 분석해서 모델링을 상세하게 할 필요가 없음, 스키마가 없음)
구조적/개발자적 관점으로 보면 다음과 같습니다.
1. 객체 형태의 컬렉션 기반 저장소
2. 동적 쿼리 지원
3. 내부 객체를 지원하는 Full index 지원
4. 쿼리 프로파일링
5. 복제, fail-over 지원
6. 비디오파일 과 같은 바이너리 데이터의 효과적인 저장소
7. 클라우드 기반의 자동화된 공유
2. 동적 쿼리 지원
3. 내부 객체를 지원하는 Full index 지원
4. 쿼리 프로파일링
5. 복제, fail-over 지원
6. 비디오파일 과 같은 바이너리 데이터의 효과적인 저장소
7. 클라우드 기반의 자동화된 공유
MongoDB도 여타의 NoSQL처럼 테이블, 로우, 컬럼등이 존재하지 않습니다.
저장의 최소단위는 Document 이며 이는 RDBMS의 로우와 비슷하다고 보면됩니다.
각 Document는 RDBMS의 테이블과 비슷한 컬렉션이라는 곳에 모여 있습니다.
그리고 각 컬렉션은 데이터베이스에서 관리하게 됩니다.
Document의 구조를 미리 정의하지 않아도 되기때문에 어떤 Document에는 id가 존재하지만 어떤 Documemt에는 name만 존재할 수 도 있습니다.
하지만 추후 분석 및 데이터 처리를 위해서 비슷한 성격의 Document를 같은 컬렉션에서 관리하는게 좋습니다.
예를 들어 회원 정보 조회에 필요한 name, id, pwd...등의 document와 게시판 형태의 subject, content, attachmemt 들을 같은 컬렉션에 저장하면 조회나 수정시 불편하고 비효율적이니까요.
json 형태의 데이터 예)
{ name : “Joe”, x : 3.3, y : [1,2,3] }
{ name : “Kate”, x : “abc” }
{ name : “Kate”, x : “abc” }
{ name : “Joe”, age : 30, interests : ‘football’ }
{ name : “Kate”, age : 25 }
{ name : “Kate”, age : 25 }
MongoDB는 json에 바이너리 기능을 추가해서 bson이라는 형태로 데이터를 저장합니다.
동적으로 데이터의 스키마를 바꿀 수 있고 빠르고 확장이 편하기 때문에 고객의 요구가 시시때때로 변하는 web 기반의 서비스나 모바일 서비스와 아주 궁합이 잘 맞습니다.
Comments