NoSQL 이란
- NoSQL은 기존의 RDBMS(관계형 데이터베이스)와 다르게 비관계형 데이터베이스를 말한다.
- 스키마가 없이 사용가능하거나 스키마에 제약을 덜 받는다.
- 데이터가 대용량화 된 현대 컴퓨터시스템에서 효과를 발휘한다.
NoSQL의 특징
NoSQL 은 기존의 RDBMS보다 데이터의 저장및 검색을 위해 특화되어있다.
- RDBMS와 달리 데이터 간의 Relation을 정의하지 않는다.
- RDBMS에 비해 대용량의 데이터를 저장하는데 적합하다
- 스키마가 없거나 유동적인 스키마 구조를 가진다
NoSQL의 장점
- 유연한 스키마 구조로 인해 사양이 변경되었을 때 데이터베이스를 쉽게 수정할 수 있다.
- 여러 테이블을 join 하는 RDBMS 구조와 달리 쿼리에 최적화된 저장을 사용해 빠른 데이터 조회가 가능하고 빅데이터 처리에 효과적이다.
- 단순한 구조로 개발자에 친화적이다.
NoSQL의 단점
NoSQL의 가장 큰 단점은 ACID 트랜잭션을 지원하지 않는다는 점이다. ACID는 Atomicity, Consistency, Isolation, Durability 를 뜻하며 이런 트랜잭션이 지원되지 않기 때문에 데이터 일관성이 보장되지 않는다. 데이터 업데이트 중 장애가 발생하면 데이터가 손실될 수도 있다는 것이다.
NoSQL 종류
유형으로 구분지으면 다음과 같은 종류들이 있다
Key-Value Datatbase
https://en.wikipedia.org/wiki/Key-value_database
- 키와 값이 하나의 쌍으로 저장되는 구조이다.
- 단순한 구조이기 때문에 분산구조를 만들기가 용이하고 속도가 빠르다
- 종류로는 Redis, Oracle NoSQL Database 등이 있다.
Document Database
https://ravendb.net/articles/nosql-document-oriented-databases-detailed-overview
- 테이블의 스키마가 유동적이다.
- 키-값 데이터베이스처럼 저장시에는 키와 값의 쌍을 이용하지만 데이터에는 Json 등과 같은 도큐먼트 형식의 데이터를 저장한다.
- 종류로는 MongoDB가 있다.
Column-Family Database
https://medium.com/google-cloud/getting-started-with-bigtable-on-gcp-adfb896e0b26
- 열 단위로 데이터를 저장하는 데이터베이스이다
- 정해진 스키마가 없기 때문에 유연하게 확장이 가능하다
- 다른 테이블과 조인은 불가능하다.
- 종류로는 Cassandra Hbase 등이 있다.
Graph Database
- 노드와 관계로 이루어진 데이터베이스이다.
- 데이터를 노드로 표현하고 노드사이의 관계를 표현한다.
- 종류로는 Neo4j, OreintDB 등이 있다.
NoSql과 RDBMS의 관계
NoSQL은 RDBMS를 대체하지는 못한다. 서로의 강점이 다르기 때문이다. 데이터의 일관성을 보장할 필요가 없는 대량의 데이터, 빠른 응답시간이 필요한 데이터 등에는 NoSQL을 사용할 수 있다. 하지만 일관성이 꼭 보장되어야 하는 데이터, 여러번 조인 연산이 필요한 데이터, 쿼리 복잡성이 높아지는 데이터 등에는 RDBMS를 사용해야 할 것이다.