NoSQL

테이블이 아닌, 문서처럼 저장하는 데이터베이스를 의미합니다. 일반적으로 JSON 유사 형식으로 데이터를 문서화합니다.

각각의 도큐먼트는 데이터를 필드-값의 형태로 가지고 있고, 컬렉션이라고하는 그룹으로 묶어서 관리합니다.

NoSQL 저장방식

데이터를 행과 열이 아닌, 체계적인 방식으로 저장합니다.

NoSQL 사용하는 경우

  • 비구조적인 대용량의 데이터를 저장하는 경우
    자유로운 형태로 데이터를 저장할 수 있으므로 필요에 따라서 새로운 데이터 유형을 추가할 수 있습니다. 정형화되지 않은 많은 양의 데이터가 필요한 경우, NoSQL이 효율적일 수 있습니다.

  • 클라우트 컴퓨팅 및 저장 공간을 최대한 활용하는 경우
    NoSQL은 데이터베이스를 클라우드 기반으로 쉽게 분리할 수 있도록 지원하여, 저장 공간을 효율적으로 사용합니다. SQL 데이터베이스는 수직적 확장 형태로 DB를 증설합니다. 수직적으로 확장된 데이터베이스는 관리가 어려워질 수 있는 반면, NoSQL은 수평적 확장 형태로 증설하여 이론상으로는 무한대로 서버를 증설할 수 있습니다.

  • 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우
    NoSQL은 스키마를 미리 준비할 필요가 없기 때문에, 빠르게 개발 해야하는 경우에 적합합니다.


  • 레플리카 세트
    동일한 데이터를 저장하는 소수의 연결된 머신을 뜻합니다. 레플리카 세트 중 하나에 문제가 발생해도 데이터를 그대로 유지할 수 있습니다.

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

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


MongoDB Document

객체와 같이 데이터를 필드-값(Field - Value) 쌍으로 저장하고 구성합니다.

필드는 데이터의 고유한 식별자이고, 값을 주어진 식별자와 관련된 데이터를 뜻합니다.

ex) MongoDB Document

{
    "name": "KJ",
    "title": "Hello World",
    "age": 30,
}

name이라는 필드의 값은 KJ입니다. 데이터베이스는 여러 개의 컬렉션으로 구성됩니다.

  • Document
    필드 값으로 저장된 데이터

  • Field(필드)
    데이터 포인트를 위한 고유 식별자

  • Value(값)
    주어진 식별자와 연결된 데이터

  • Collection(컬렉션)
    MongoDB Document가 구성된 저장소입니다.
    일반적으로 도큐먼트 간 공통 필드가 있습니다.
    데이터베이스 당 많은 컬렉션이 있고, 컬렉션 당 많은 Document가 있을 수 있습니다.


JSON과 BSON

JSON 형식으로 Document를 작성하기 위해서는, 다음과 같은 조건을 만족해야 합니다.

  • {} 중괄호로 Document가 시작하고, 끝나야 합니다.
  • 필드와 값이 콜론(:)으로 분리되어야 하며, 필드와 값을 포함하는 쌍은 쉼표(,)로 구분됩니다.
  • 문자열인 필드도 쌍따옴표("")로 감싸야 합니다.

ex) JSON 예시

{
	"id": "KJ",
    "date": "2022-01-25",
    "comments": "Hello World",
}

JSON 텍스트 형식이기 때문에 읽기 쉽지만, 파싱이 느리고 메모리 사용이 비효율적입니다.

BSON은 컴퓨터 언어에 가깝운 이진법 기반을 둔 표현법입니다. 메모리 사용이 효율적이고 빠르고, 가벼우며, 유연합니다.

MongoDB는 JSON 형식으로 작성된 것은 무엇이든 데이터베이스에 추가할 수 있고, 쉽게 조회할 수 있습니다.
그러나 내부에서는 속도, 효율성, 유연성의 장점이 있는 BSON으로 데이터를 저장하고 사용하고 있습니다.


Importing & Exporting

데이터 형식에 따라 달라지는 import, export 명령어에 대해..

  • Import: 데이터를 가져오는 것
  • Export: 데이터를 내보내는 것

MongoDB의 데이터는 BSON 형태로 저장이 됩니다. 하지만 읽기 쉬운 JSON 형태로 출력됩니다.

따라서 데이터를 가져오거나, 내보낼 때 사용 가능한 명령어가 각각 존재합니다.

JSON 형식으로 데이터를 가져오고 내보내기 위한 명령어

  • mongoimport, mongoexport

BSON 형식으로 데이터를 가져오고 내보내기 위한 명령어

  • mongostore, mongodump

mongodump를 하는 경우에는 별다른 쿼리가 없지만 mongoexport를 하는 경우에는 데이터베이스의 컬렉션 이름, 파일, 이름까지 정확하게 작성해야 합니다.


mongo shell

  • GUI(Graphical User Interface) 사용 없이 MongoDB 아틀라스 클러스터와 상호작용할 수 있다.
  • JavaScript 인터프리터로 작동한다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글