NoSQL
NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. 이러한 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다. NoSQL 데이터베이스는 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다. 또, NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 "Not only SQL"로 불리기도 한다.
Categories
- MongoDB
- FastoNoSQL - it is GUI platform for NoSQL databases
- Apache Cassandra
About
NoSQL 이란? (NoSQL은 "Not Only SQL" 이라고도 불린다.) 우리가 익숙하게 사용하고있는 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없다.
NoSQL 제품군이 RDBMS와의 다른 점으로는
- 스키마가 없다. 즉, 데이터 관계와 정해진 규격 (table - column 의 정의)이 없다.
- 관계정의가 없으니 Join이 불가능 하다. (하지만 reference와 같은 기능으로 비슷하게 구현은 가능하다)
- 트랜잭션을 지원하지 않는다.
- 분산처리 (수평적 확장)의 쉽게 제공한다.
- 대부분의 NoSQL DB는 분산처리기능을 목적으로 나왔기 때문에 분산처리 기능을 자체 프레임워크에 포함하고 있다.
- 트랜젝션과 JOIN 기능은 분산 시스템에서 효율적으로 제공하기 어렵기 때문에 제외 되었으며, 높은 확장성을 제공하는 아키텍처를 위한 결정이다.
- 읽기 쓰기가 빠름 (Case-by-Case)
그리고 위의 내용들은 어느것이 장점이다 단점이다 말하기는 힘들다. 이유는 용도에 따라 장단점이 달라지기 때문이고 NoSQL이 RDBMS의 대안은 아니라는 것이다.
그럼 NoSQL은 왜 등장하게 되었을까?
빅 데이터 시대를 맞이하여 서비스를 제공하는 시스템에서 많은 양의 데이터를 효율적으로 처리가 필요하게 되었다.
- 이로인해 데이터의 분산처리(샤딩),
- 빠른 쓰기 및 데이터의 안정성 (복제)
즉 분산형 구조를 통해 데이터를 여러 대의 서버에 분산해 저장하고, 분산 시에 데이터를 상호 복제해 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 형태의 구조다.
See also
Favorite site
- Wikipedia (en) NoSQL에 대한 설명
- NoSQL은 생각보다 쓸만하지 않다
- [추천] Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison :: Software architect Kristof Kovacs 1
References
-
NoSQL_comparison_-_Software_architect_Kristof_Kovacs.pdf ↩