NoSQL이란 무엇인가?

  09 Nov 2019


NoSQL이란?

유연한 데이터 모델을 갖춘 고성능 비관계형 데이터베이스

NoSQL(Not Only SQL) 데이터베이스란?

NoSQL 데이터베이스는 특정 데이터 모델에 대해 특정 목적에 맞추어 구축되는 데이터베이스로서 현대적인 어플리케이션 구축을 위한 유연한 스키마를 가지고 있다. 개발의 용이성, 기능성 및 확장성 을 널리 인정받고 있다.
NoSQL 데이터베이스는 기존의 관계형 데이터베이스보다 더 융통성있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 매커니즘을 제공한다. 응답속도나 처리효율에 있어서 매우 뛰어난 성능 을 보인다.

NoSQL(비관계형) 데이터베이스는 어떻게 작동하는가?

NoSQL 데이터베이스는 문서, 그래프, 키 값, 인 메모리 검색 등의 데이터를 액세스 및 관리하기 위해 다양한 데이터 모델을 사용한다. 이러한 디비 유형은 큰 데이터 볼류므 짧은 지연 시간과 유연한 데이터 모델이 필요한 어플리케이션에 최적화되어 있으며, 이는 다른 데이터베이스의 데이터 일관성 제약 일부를 완화함으로 이루어진다.

  • SQL 세상에서는 정해진 스키마를 따르지 않는다면, 데이터를 추가할 수 없지만 NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다.
  • 관련된 데이터를 동일한 컬렉션에 넣는다. (여러 테이블에 나누어 담지 않는다) 여러 테이블/콜렉션에 조인할 필요없이 이미 필요한 모든 것을 갖춘 문서를 저장하게 된다. (컬렉션을 통해, 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 정확하게 산출하도록 한다)
  • 데이터가 중복되기에 불안정한 측면이 있다. 하지만 복잡하고 (어떤 순간에는 느린) 조인연산을 사용할 필요가 없다는 것이 장점이다. 자주 변경되지 않는 데이터일 때 더 큰 장점이 있다


EX) 서적 데이터베이스

관계형 데이터베이스

  • 서적 레코드는 흔히 숨겨져(“정규화되어”) 별도의 테이블로 보관되고, 관계는 기본 및 외래 키 제약조건으로 정의된다. 서적 테이블에 ISBN, 책 제목, 에디션 번호 열이 있고, 저자 테이블에는 저자 ID 및 저자명 열이 있고, 저자-ISBN 테이블에는 저자 ID 및 ISBN 열이 있다.
    관계형 모델은 중복성을 줄이도록 정규화 되고, 일반적으로 저장에 최적화된 데이터베이스에서 데이터베이스가 테이블 사이에서 참조 무결성을 실현할 수 있도록 고안되어 있다.

NoSQL 데이터베이스

  • 서적 레코드는 보통 JSON 문서로 저장된다. 각각의 서적에 대해 항목, ISBN,책 제목, 에디션 번호,저자명, 저자 ID가 단일 문서 내에 속성으로 저장된다. 이러한 모델에서 데이터는 직관적 개발과 수평 확장성 에 최적화된다.

NoSQL(비관계형) 데이터베이스를 사용해야 하는 이유

  • 유연성 : NoSQL 데이터베이스는 일반적으로 유연한 스키마를 제공하여 보다 빠르고, 반복적인 개발을 하게 해준다.
  • 확장성 : 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되어있다.
  • 고성능 : 특정 데이터 모델(문서, 키값, 그래프 등) 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스보다 뛰어난 성능을 얻게 해준다…
  • 고기능성 : 각 데이터 모델에 맞추어 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공한다. (홍보용 느낌이 좀 들어가있는 듯 하다..)

Database의 확장(Scaling)

Image

데이터베이스의 확장은 수직적 확장과 수평적 확장으로 구분 할 수 있다.
  • 수평적 확장이란 더 많은 서버가 추가되고, 데이터베이스가 전체적으로 분산됨을 의미한다. 따라서 하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동한다. (여러 서버를 두고, 하나의 데이터베이스로 데이터를 합병하는 느낌) 👉 NoSQL에서 지원
  • 수직적 확장은 데이터베이스의 성능을 향상 시키는 것을 말한다.(CPU를 업그레이드 하는 방식) 👉 SQL에서 지원

어떤 데이터를 다루는지, 어떤 어플리케이션에서 사용되는 지에 따라 어떠한 종류의 데이터베이스(솔루션)를 사용할 지 결정해야한다.

SQL(관계형)와 NoSQL(비관계형) 데이터베이스의 장단점

  • SQL의 장점 : 명확하게 정의된 스키마, 데이터 무결성 보장. 데이터의 중복 X
  • NoSQL의 장점 스키마가 없기 때문에 유연하다! 👉 언제든지 저장된 데이터를 조작하고 새로운 “필드”를 추가할 수 있음
    어플리케이션이 필요한 형식에 맞춰 저장되는 데이터! 👉 데이터를 읽어오는 속도가 빨라짐
    수직 및 수평 확장이 가능하기 때문에 어플리케이션에서 발생시키는 모든 읽기 / 쓰기 요청을 처리할 수 있음..

  • SQL의 단점 유연성이 떨어진다. 데이터 스키마는 사전에 계획되고 정해져야 한다.(나중에 수정하기 매우 힘들다)
    관계를 맺고 있기 때문에, JOIN문이 많은 매우 복잡한 쿼리가 만들어질 수 있다.
    수평적 확장이 어렵고, 대체적으로 수직적 확장이 가능하여 어떤 시점(처리할 수 있는 처리량)에는 성장 한계에 직면하게 된다.

  • NoSQL의 단점 유연성 때문에, 데이터 구조를 미루게 될 수 있다.
    데이터 중복은 여러 컬렉션과 문서가, 여러개의 레코드가 변경된 경우 모두 업데이트를 해야한다.
    데이터가 여러 컬레션에 중복되어 있기 때문에, 수정(update)을 해야하는 경우 모든 컬렉션에서 수행해야 한다.

언제 무엇을 사용할까

SQL : 관계를 맺고 잇는 데이터가 자주 변경될 어플리케이션의 경우, 스키마가 변경될 여지가 없는 경우, 명확한 스키마가 사용자와 데이터에 이로울 경우
NoSQL : 정확한 데이터 구조를 알 수 없거나 변경/확장이 될 수 있는 경우, 읽기(read) 처리를 자주하지만 데이터 변경을 자주하지 않는 경우, 데이터를 수평적으로 확장해야 하는 경우(막대한 데이터를 다뤄야하는 경우)

참고자료

NoSQL이란? : AWS 약간.. 제품광고 느낌의 글이다…
SQL v.s. NoSQL? : siyoon210

...