1 분 소요

Nosql Database

Nosql은 관계형 테이블의 레거시한 방법을 사용하지 않는 데이터 저장소를 말한다. 데이터를 행과 열이 아닌 체계적인 방식으로 저장을 한다. 데이터를 저장하는데 있어 각 데이터베이스 마다 다른 방법을 사용하게 되는데, MongoDB는 Nosql 도큐먼트 데이터베이스 이다. 그래서 데이터를 도큐먼트 형태로 저장한다.

Nosql은 언제 쓸까?

SQL과 NoSQL은 각자의 장단점이 있다. NoSQL은 다음과 같은 경우에 많이 쓰게 된다.

  1. 비구조적인 대용량의 데이터를 저장하는 경우

데이터간의 관계를 생각하지 않아 보다 자유로운 형태로 데이터를 저장할 수 있다. 또한 새로운 데이터 유형을 추가할 수 있다. 정형화되지 않은 많은 양의 데이터가 필요한 경우 NoSQL이 효율적일 수 있다.

  1. 클라우드 컴퓨팅 및 저장 공간을 최대한 활용하는 경우

SQL 데이터베이스 경우 DB를 확장을 할 때 수직적 확장을 해야 하지만, NoSQL의 경우 클라우드 서버에 데이터를 저정하는 형태 이므로 수평적 확장을 통해 이론상 무한대로 확장할 수 있다.

  1. 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우

SQL의 경우 스키마 디자인 하는데 있어 많은 시간이 필요하지만, NoSQL의 경우 스키마를 디자인 할 필요 없다. 또한 데이터 구조가 바뀔 경우 스키마 디자인을 할 필요가 없어 효율적으로 사용이 가능하다.

Atlas Cloud

MongoDB는 아틀라스로 클라우드에 데이터베이스를 설정한다. 아틀라스는 GUI와 CLI로 데이터를 시각화, 분석, 내보내기, 빌드하는 데에 사용할 수 있다. 먼저 용어들에 대해 알아보겠다.

  • 레플리카 세트

    동일한 데이터를 저장하는 소수의 연결된 머신을 뜻한다. 레플리카 세트 중 하나에 문제가 발생하더라도, 데이터를 그대로 유지할 수 있다. 단일 클러스터의 각각의 인스턴스의 동일한 복제본 이다. 클러스터를 이용하여 베포할 경우 자동으로 이 복제본을 생성한다.

  • 인스턴스

    로컬 또는 클라우드에서 특정 소프트웨어를 실행하는 단일 머신, MongoDB에서는 데이터베이스 이다.

  • 클러스터

    데이터를 저장하는 서버 그룹으로 여러 대의 컴퓨터를 네트워크를 통해 연결하여 하나의 단일 컴퓨터처럼 동작하도록 제작한 컴퓨터를 뜻한다.

아틀라스 사용자는 클러스터를 베포할 수 있으며, 클러스터는 그룹화된 서버에 데이터를 저장한다.

MongoDB Document

MongoDB는 도큐먼트 데이터베이스라고 했다. 그렇다면 도큐먼트는 무엇일까? 도큐먼트는 객체와 같이 데이터를 필드-값으로 저장하고 구성한다. 필드는 데이터의 고유한 식별자이고, 값은 식별자와 관련된 데이터를 뜻한다. 이러한 도큐먼트의 모음을 컬렉션이라 부른다. 즉, MongoDB는 여러 개의 컬렉션으로 구성되어 있다.

JSON과 BSON

MongoDB에서 도큐먼트를 작성을 할 때 JSON의 형태로 만들어서 데이터베이스에 추가하고 조회를 한다. JSON은 읽기 쉽고, 사용하기에 편리한 형태로 되어 있지만, 파싱하는데 느리고 메모리 사용이 비효율 적이다. 그리고 기본 데이터 타입만을 지원하기 때문에, 사용할 수 있는 데이터 타입에 제약이 있다.

MongoDB에서는 이러한 JSON의 단점을 보완하기 위해 BSON(Binary JSON)형태를 도입하게 되었다. BSON은 이진법에 기반을 둔 표현법으로, 메모리 사용이 효율적이고, 빠르다.

즉, 사용자가 JSON의 형태로 데이터를 데이터베이스에 저장을 하고 조회를 할 수 있다. 하지만 데이터가 데이터베이스에 들어간 순간 BSON의 형태로 바꾸어 저장하고 사용하고 있다.

댓글남기기