NoSQL 은 관계형 데이터베이스 관리 시스템 (RDBMS) 이외의 데이터베이스 관리 시스템 을 의미하며, 관계형 데이터베이스 의 오랜 역사를 타파하는 것으로서 넓은 의미에서의 관계 모델 이외에 속한 데이터베이스의 발전을 촉진 시키고자하는 운동으로 있다. 관계 모델이 아닌 데이터 저장소의 특징은 고정된스키마 에 의존 적이지 않다는 관계 모델의 결합 작업을 사용하지 않는다 (경우에 따라서는 간단하게 이러한 기능이 없을뿐), 수평 확장성 을 보장 하기 쉬운 것이 많다 트랜잭션을 사용할 수없는 것이 많아 등을들 수있다. 학술 논문이나 공식적인 문서에서는 이러한 데이터베이스를 구조화된 스토리지 ( 영어 :structured storage )라고 부르는 경우가 많다 [1] [2] [3] [4] .
업계에서 유명한 구현으로 구글 의 BigTable , 아마존 의 Amazon DynamoDB 등이있다. 오픈 소스 구현도 많이 존재하고 Apache HBase , Apache Cassandra 등이있다.
목차[ 숨기기 ] |
역사 [ 편집 ]
NoSQL라는 용어는 1998 년, SQL 인터페이스를 가지지 않는 경량 관계 데이터베이스의 오픈 소스 소프트웨어의 이름으로 처음 사용되었다. 그 저자 Carlo Strozzi은 NoSQL 운동에 대해 "관계 모델 전체와 구별을 분명히하는 것이기 때문에"NoREL "라고 불리는 것이었다"고 주장하고있다 [5] . 이 용어는 Last.fm의 Johan Oskarsson의 요청에 의해 2009 년 초에 개최된 오픈 소스 분산 데이터베이스에 대한 회의에서 Rackspace 직원 Eric Evans에 의해 다시 도입된 [6] . 이 이름은 MySQL , MS SQL , PostgreSQL 등 관계 데이터베이스 시스템에서 널리 사용되었던 명명법을 참조 붙인 것이며, ACID 보증을 제공하지 비 관계형 분산 데이터 저장소의 발흥을 표현 의도가 담겨 있었다.
NoSQL 운동이 보급됨에 따라 그 이름이 가지는 부정적인 인상 (SQL는 불필요하다 등)이 문제가 논의가 일어나고있다. Eric Evans는 NoSQL를 Not only SQL 의 바쿠로니무 으로 이해하는 것이 바람직하다고하고있다 [7] .
아키텍처 [ 편집 ]
현대적인 관계 데이터베이스는 작은 최상의 트랜잭션 또는 거대하지만 쓰기를 거의 수반하지 않는 거래에 최적화된 설계되고 있기 때문에, 최근 필요로오고있는 대규모 데이터를 기반으로 ( 영어 : data-intensive ) 응용 사례에서는 성능이 열화 [8] . 이러한 응용의 예로는 검색을위한 문서의 인덱싱 트래픽이 높은 웹사이트 서버 , 스트리밍 데이터 배포 등이 있으며, Digg의 green badge [9] , Facebook의받은 편지함 검색, eBay 시스템 전체 등이 그 실례이다.
NoSQL 아키텍처에서는 결과 일관성 만을 보장하는 등 일관성 보장을 약하게 설계하고 트랜잭션을 하나의 데이터 항목에 한한다는 제한을하는 경우가 많다. 보조적인 미들웨어 레이어를 추가하여 완전한 ACID 보증을 제공하고있는 경우도있다 [10] .
일부 NoSQL 시스템은 분산 아키텍처 를 채용하고있다. 이러한 시스템은 많은 경우 분산 해시 테이블 을 사용하여 데이터를 여러 서버에 중복성을 갖게하면서 배치한다. 이렇게하면 서버를 추가하는 것만으로 시스템을 쉽게 확장할시킬 수 있으며, 장애에 대한 내성도 강해진다 [11] .
분류 [ 편집 ]
NoSQL에는 중요한 것들은 다음과 같다.
- 키 value 타입 (Key Value Store) - 키에 대한 값이라는 단순한 구조.
- 컬럼 지향 - 키에 대한 컬럼 (이름과 값 쌍을)의 집합. Apache Cassandra , Apache HBase , Amazon DynamoDB , Basho Riak 등.
- 문서 중심 - XML이나 JSON 같은 스키마없는 데이터 구조가 유연한 것. MongoDB , Apache CouchDB 등. XML 데이터베이스 와 같은 시스템에서는XQuery 를 이용할 수있는 것도있다.
오픈 소스 프로젝트 목록 [ 편집 ]
- Apache Cassandra - Key Value Store
- Apache CouchDB - 스키마 레스
- Apache HBase - Key Value Store
- ArangoDB - multi-model database
- Basho Riak - Distributed Database / Key Value Store
- Chordless
- Db4o
- GT.M
- Hypertable
- Memcachedb
- Mnesia
- MongoDB - 스키마 레스
- Project Voldemort
- Redis
- SimpleDB
- Neo4j
- DEX
- BaseX
- eXist
- AllegroGraph
- OrientDB
- InfiniteGraph
- Sones GraphDB
- InfoGrid
- HyperGraphDB
참고 문헌 [ 편집 ]
- ^ Hamilton, James ( 2009 년 11 월 3 일 ) " Perspectives : One Size Does Not Fit All " 2009 년 11 월 13 일 보기.
- ^ Lakshman, Avinash; Malik, Prashant. Cassandra - A Decentralized Structured Storage System . Cornell University 2009 년 11 월 13 일 보기. .
- ^ Chang, Fay; Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber. Bigtable : A Distributed Storage System for Structured Data . Google 2009 년 11 월 13 일 보기. .
- ^ Kellerman, Jim " HBase : structured storage of sparse data for Hadoop " 2009 년 11 월 13 일 보기.
- ^ " NoSQL Relational Database Management System : Home Page "Strozzi.it ( 2007 년 10 월 2 일 ) 2010 년 3 월 29 일 보기.
- ^ " NOSQL 2009 "Blog.sym-link.com ( 2009 년 5 월 12 일 ) 2010 년 3 월 29 일 보기.
- ^ " NoSQL : What 's in a name? "Eric Evans 's Weblog ( 2009 년 10 월 30 일 ) 2010 년 5 월 31 일 보기.
- ^ Agrawal, Rakesh et al (2008) "The Claremont report on database research" SIGMOD Record ( ACM ) 37 (3) : 9 - 19. doi :http://doi.acm.org/10.1145/1462571.1462573 . ISSN 0163-5808 .
- ^ " Looking to the future with Cassandra | Digg About "About.digg.com ( 2009 년 9 월 9 일 ) 2010 년 3 월 29 일 보기.
- ^ 예 : " CloudTPS : Scalable Transactions for Web Applications in the Cloud "Globule.org. 2010 년 3 월 29 일 보기.
- ^ " Cassandra : Structured Storage System over a P2P Network ( PDF ) " 2010 년 3 월 29 일 보기.
관련 항목 [ 편집 ]
'DB > Common' 카테고리의 다른 글
dbms - join (0) | 2012.07.06 |
---|---|
sql - 서브(하위) 쿼리 (0) | 2012.06.20 |
SQL 구문 기본 작성 가이드 (0) | 2012.05.08 |
DBCP 소개/설정 및 validationQuery 이슈 (0) | 2012.04.30 |
CREATE SCHEMA (0) | 2012.04.12 |