본문 바로가기

카테고리 없음

NoSQL

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


https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%84_%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4

  • 노드와 관계로 이루어진 데이터베이스이다.
  • 데이터를 노드로 표현하고 노드사이의 관계를 표현한다.
  • 종류로는 Neo4j, OreintDB 등이 있다.

NoSql과 RDBMS의 관계

NoSQL은 RDBMS를 대체하지는 못한다. 서로의 강점이 다르기 때문이다. 데이터의 일관성을 보장할 필요가 없는 대량의 데이터, 빠른 응답시간이 필요한 데이터 등에는 NoSQL을 사용할 수 있다. 하지만 일관성이 꼭 보장되어야 하는 데이터, 여러번 조인 연산이 필요한 데이터, 쿼리 복잡성이 높아지는 데이터 등에는 RDBMS를 사용해야 할 것이다.