TIL(2021.04.13)

한국·2021년 4월 24일
0

TIL

목록 보기
31/33
post-thumbnail

noSQL

  • NoSQL은 매우 넓은 범위에서 사용하는 용어로 관계형 테이블의 레거시한 방법을 사용하지 않는 데이터 저장소를 뜻함
  • NoSQL 데이터베이스에선 데이터를 행과 열이 아닌 체계적인 방식으로 저장
  • NoSQL 데이터베이스의 예시로는 도서카드 목록함에서 MongoDB와 같은 보다 정교한 데이터 저장소에 이르기까지 다양한 개념을 뜻함

noSQL 기반의 비관계형 데이터베이스의 사용

  • 데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장하는 경우

    • NoSQL 데이터베이스는 관계에 대해 중점을 둔 SQL 데이터베이스에 비해 보다 자유로운 형태로 데이터를 저장할 수 있다. 그렇기 때문에 필요에 따라서 데이터의 새 유형을 추가할 수 있고 소프트웨어 개발에 정형화 되지 않은 많은 양의 데이터가 필요한 경우, NoSQL을 적용하는 것이 효율적일 수 있다.
  • 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

    • NoSQL 데이터베이스는 저장 공간의 효율적인 사용을 위한 방법으로 데이터베이스를 클라우드 기반으로 쉽게 분리 할 수 있도록 지원하고 있다. SQL 데이터베이스에서는 보통 시스템이 커져가면서 DB를 증설해야 하는 시점이 오면 수직적 확장의 형태로 DB를 증설하기에 관리가 어려워질 수 있는데 NoSQL의 경우 수평적 확장의 형태로 증설을 하기에 숫자는 무한대로, 서버를 계속 분산시켜 DB를 증설할 수 있다.
  • 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우

    • NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없기 때문에 빠르게 개발하는 과정에 매우 유용. 시장에 빠르게 프로토타입을 출시해야 하는 경우, 소프트웨어 버전별로 많은 다운타임(데이터베이스 서버 오프라인) 없이 데이터 구조를 자주 업데이트 해야하는 경우, 일일이 스키마를 수정해주어야 하는 관계형 데이터베이스 보다는 NoSQL 기반의 비관계형 데이터베이스가 더 효율적이다.

MongoDB

  • NoSQL 도큐먼트 데이터베이스
  • MongoDB에서 데이터는 도큐먼트의 형태로 저장된다
  • 도큐먼트들은 컬렉션이라고 부르는 곳에 저장되며 이것이 MongoDB가 NoSQL 도큐먼트 데이터베이스로 분류되는 이유이다.
  • MongoDB는 JSON형식으로 작성된 것은 무엇이든 데이터베이스에 추가할 수 있고, 쉽게 조회할 수 있지만, 속도, 효율성, 유연성의 장점이 있기 때문에 내부적으로 BSON 형식으로 데이터를 저장, 사용

MongoDB Document

  • 객체와 같이 데이터를 필드-값 쌍(Field - Value pair)으로 저장하고 구성하는 방법
  • 도큐먼트에서 필드는 데이터의 고유한 식별자이고 은 주어진 식별자와 관련된 데이터를 뜻함
  • 컬렉션 : MongoDB의 도큐먼트로 구성된 저장소, 일반적으로 도큐먼트 간의 공통 필드가 있다. 데이터베이스 당 많은 컬렉션이 있고 컬렉션 당 많은 도큐먼트가 있을 수 있다.

MongoDB Importing & Exporting

  • 크게 두가지로 나뉜다.
  • JSON 형식으로 데이터를 가져오고 내보내기 위한 명령어인 mongoimport와 mongoexport
  • BSON 형식으로 데이터를 가져오고 내보내기 위한 명령어 mongorestore와 mongodump

MongoDB Basic

  • 모든 MongoDB 도큐먼트는 모든 도큐먼트가 _id 필드를 기본값으로 반드시 가지고 있어야 한다
  • id 필드의 값은 각 도큐먼트를 구별하는 역할을 한다.
  • 도큐먼트 내 필드와 값이 똑같다 할지라도, _id 값이 다르면 서로 다른 도큐먼트로 간주한다.
  • 도큐먼트 내 필드와 값이 다르다고 하더라도, _id값이 같다고 하면 서로 같은 도큐먼트로 여겨 에러를 발생시킨다.
  • 각 도큐먼트는 고유한 _id 값을 가지고 있어야 하며, 새로운 도큐먼트를 추가할 때, _id 값에 임의적으로 고유한 값을 생성해서 사용할 수도 있지만 보통은 ObjectId 타입(12byte, 24char)의 값으로 사용한다.
  • 도큐먼트를 추가할 때, _id 필드와 값을 특정하지 않았다면, 자동적으로 _id 필드가 생성되고 값에 ObjectId 타입이 할당된다.

MongoDB CRUD

  • 양이 너무 방대하여 공식문서를 링크에 남기겠다. MongoDB CRUD

Document의 작성과 표현

  • 도큐먼트를 shell을 이용하여 조회하거나 업데이트 할 때, 도큐먼트는 JSON(JavaScript Stand Object Notation)형식으로 출력
  • JSON 형식으로 도큐먼트를 작성하기 위해서는 조건이 붙는다. 아래와 같다.
    • {} 중괄호로 도큐먼트가 시작하고 끝나야 한다.
    • 필드와 값이 : 콜론으로 분리되어야 하며, 필드와 값을 포함하는 쌍은 , 쉼표로 나뉘어야 한다.
    • 필드도 문자열이기 때문에 "" 쌍따옴표로 감싸야 한다.
  • 그러나 JSON은 텍스트 형식이기 때문에 읽기 쉽지만, 파싱이 매우 느리고, 메모리 사용에 있어서 비효율적이며, JSON은 기본 데이터 타입만을 지원하기 때문에 사용 할 수 있는 타입에 제한이 있다.
  • 이러한 문제점을 해결하기 위한 방안으로 BSON(Binary JSON) 형식을 도입
  • BSON : 컴퓨터의 언어에 가까운 이진법에 기반을 둔 표현법이기 때문에 JSON 보다 메모리 사용에 효율적이며, 보다 빠르고, 가벼우며 유연하다.그리고 BSON의 사용으로 더 많은 데이터 타입을 사용할 수 있게 되었다.

Atlas Cloud

  • MongoDB에서는 아틀라스(Atlas)를 사용하여 클라우드에서 데이터베이스를 설정
  • GUI 및 Shell로 데이터를 시각화, 분석, 내보내기 및 빌드하는 데 사용할 수 있고. 아틀라스 사용자는 클러스터를 배포 할 수 있으며 이는 그룹화된 서버에 데이터를 저장한다.

* 출처 코드스테이츠

profile
소통하는 개발자를 꿈꾸는

0개의 댓글