NoSQL

데이터 엔지니어가 알아야하는 NoSQL

데이터 엔지니어로서 비정형 데이터를 다뤄야할때가 많다. 내가 현재 일하는 회사에서는 주로 MongoDB를 사용한다. 그래서 MongoDB위주로 NoSQL에 대해 정리하고자 한다.

NoSQL이란?

  • NoSQL 데이터베이스는 일명 SQL만을 사용하지 않는 데이터베이스로 표 형식이 아니며, 관계형 테이블과는 다른 방식으로 데이터를 저장한다. NoSQL 데이터베이스는 데이터 모델에 따라 유형이 다양하다. 주요 유형으로는 Document, Key-value, wide column, graph 가 있다. 이들은 유연한 스키마를 제공하며, 대량의 데이터와 높은 사용자 부하에서도 손쉽게 확장이 가능하다.
  • 흔히들 NoSQL 데이터베이스 또는 비관계형 데이터베이스는 관계 데이터를 저장하지 않는다고 오해한다. 하지만 이는 사실이 아니며 관계형 데이터베이스와 방식은 다르지만 관계 데이터를 저장할 수 있다.
    • 실제로 SQL데이터베이스와 비교해보면, 대체로 NoSQL 데이터 베이스에 있는 관계 데이터를 모델링 하는 것이 SQL 데이터베이스보다 쉽다는 것을 알 수 있는데 이는 관련 데이터를 테이블 간에 분할할 필요가 없기 때문이다.

      ##### NoSQL vs SQL Database

  • NoSQL 데이터 모델을 사용하면 관련 데이터를 단일 데이터 구조 내에 중첩시킬 수 있다.
  • 클라우드 컴퓨팅 역시 인기가 높아졌고, 개발자들은 퍼블릭 클라우드를 사용해 애플리케이션과 데이터를 호스팅하기 시작했다. 그래서 이들은 여러 서버와 region에 데이터를 분산시켜 애플리케이션 복원력을 높이고, 스케일업이 아닌 스케일 아웃을 수행하며, 데이터를 지능적으로 배치할 수 있기를 원했고 MongoDB같은 일부 NoSQL 데이터 베이스들은 이러한 기능을 제공하고 있다.

NoSQL 데이터베이스의 유형

1

  1. Document Database
    • JSON(JavaScript Object Notation) 객체와 비슷한 문서에 데이터를 저장합니다. 각 문서에는 필드와 값의 쌍이 포함되어 있습니다. 일반적으로 값은 문자열, 숫자, 불리언(boolean), Array, Object 등 유형이 다양할 수 있으며, 구조는 개발자가 코드에서 사용하고 있는 객체에 맞춰 조정된다. 다양한 필드 값 유형과 강력한 쿼리 언어 덕분에 문서 데이터베이스는 다양한 사용 사례에 적합하며, 범용 데이터베이스로도 사용할 수 있다. 또한 대량의 데이터를 수용하도록 수평 스케일아웃이 가능하다.

2

  1. Key-Value Database
    • 각 항목에 키와 값이 포함되어 있는 간단한 유형의 데이터베이스이다. 값은 보통 키를 참조하는 방식으로만 검색이 가능하기 때문에 일반적으로 특정 키-값 쌍에 대해 쿼리를 수행하는 방법을 간단히 익힐 수 있다. Key-Value 데이터베이스는 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 사용 사례에 적합. 일반적인 사용자 선호도 저장 또는 캐싱(Caching)에서 사용됩니다. Redis와 DynanoDB는 인기 있는 Key-Value 데이터베이스다.

3

  1. Wide Column Store
    • 테이블, 행 및 동적 열에 데이터를 저장한다. 와이드 컬럼 스토어는 각 행이 동일한 열을 가질 필요가 없다는 점에서 관계형 데이터베이스에 대해 뛰어난 유연성을 제공. 와이드 컬럼 스토어를 2차원적 키-값 데이터베이스로 생각하는 사람들이 많은데 와이드 컬럼 스토어는 대량의 데이터를 저장해야 할 때 적합하며, 쿼리 패턴을 예측할 수 있다. 와이드 컬럼 스토어는 보통 사물인터넷 데이터와 사용자 프로필 데이터를 저장하는 데 사용됩니다. Cassandra와 HBase는 가장 인기 있는 와이드 컬럼 스토어이다.

4

  1. Graph Database
    • Node와 Edge에 데이터를 저장하며 Node에는 일반적으로 사람, 장소 및 사물에 대한 정보가 저장되고, Edge에는 노드 간의 관계에 대한 정보가 저장된다. 그래프 데이터베이스는 소셜 네트워크, 사기 탐지, 권장 엔진 같은 패턴을 찾아보기 위해 관계를 상세히 검토해야 하는 사용 사례에 적합하며 그래프 데이터베이스로는 Neo4j와 JanusGraph가 있다.

NoSQL의 장점

  • RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리 가능
  • 비정형 데이터 구조 설계로 설계 비용 감소
  • BigData 처리에 효과적
  • 가변적 구조로 데이터 저장이 가능
  • 데이터 모델의 유연한 변화가 가능

NoSQL의 단점

  • 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
  • 많은 인덱스를 사용하려면 충분한 메모리가 필요. 인덱스 구조가 메모리에 저장
  • 데이터 일관성이 보장되지 않음

개발에 도움이 되었던 글 MongoDB Cursor


참고글

1 2