ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BEB Section 2 - NoSQL
    2nd of BEB/Codestates 2021. 12. 21. 01:31

    MongoDB? NoSQL?

     DB에는 여러 종류가 있다. 흔히 우리가 많이 들은 MySQL, MariaDB, MongoDB, DBeaver 등 있는데 여기서 다루는 건 MongoDB이다. MongoDB는 NoSQL 데이터베이스이다. NoSQL는 매우 넓은 범위에서 사용되고 있고, 레거시한 방법을 사용하지 않는 데이터 저장소를 말한다.

     비관계형 데이터베이스인 NoSQL은 다음과 같이 사용된다.

    • 비구조적인 대용량의 데이터를 저장하는 경우
      • NoSQL에서는 자유로운 형태로 데이터 저장이 가능하기 때문에 필요에 따라 새로운 데이터 유형을 추가할 수 있다.
      • 정형화되지 않은 많은 양의 데이터가 필요할 경우 효율적일 수 있다.
    • 저장공간을 최대한 활용하는 경우
      • 클라우드 기반으로 쉽게 분리할 수 있도록 지원  →  저장공간 효율적 사용
      • 수평적 확장 형태로 증설되고, 무한대로 서버 분산
    • 서비스를 빠르게 구축하고 데이터 구조를 자주 업데이트 하는 경우
      • 스키마를 미리 준비할 필요가 없다  →  데이터 구조를 자주 업데이트해야하는 경우에는 일일이 스키마를 수정해줘야하는 관계형 데이터베이스보단 NoSQL이 더 효율적이다.

     

    Atlas Cloud

     MongoDB에서는 Atlas로 클라우드에 데이터베이스를 설정한다. Atlas는 GUI와 CLI로 데이터를 시각화하고 분석하며 빌드하는 데 사용 가능하다. Atlas 사용자클러스터를 배포할 수 있고, 클러스터는 그룹화된 서버에 데이터를 저장한다.

    • 클러스터 : 인스턴스들의 모임, 하나의 시스템처럼 작동
      • 인스턴스 : 특정 소프트웨어를 실행하는 로컬 또는 클라우드 단일 머신. 여기선 MongoDB를 의미.
    • 레플리카 세트 : 단일 클러스터에서 각각에 대한 동일한 복제본의 모임
      • 인스턴스 중 하나라도 문제가 발생해도 데이터는 그대로 유지 
      • 클러스터를 이용하여 배포하는 경우, 자동으로 레플리카 세트 생성

     

    How to do MongoDB

    https://www.mongodb.com

     

    MongoDB: the application data platform

    Get your ideas to market faster with an application data platform built on the leading modern database. MongoDB makes working with data easy.

    www.mongodb.com

     

     MongoDB의 공식 사이트이다. 내가 예전에 썼을 때만 해도 community 버전으로 프로그램이 설치됐었는데 어느새 바뀌어버린..

     

    Dataabase Deployment from MongoDB

     

     데이터베이스 클러스터를 생성하면 보이는 사진과 같이 나온다. 만약 새로운 클러스터를 생성하고 싶다면 Create를 누르면 생성할 수 있다. 서버는 AWS로 선택하고 지역을 미국으로 선택하면 일반적으로 사용하는 데 있어서 무리 없다. 저기서 Connect - Connect with the MongoDB Shell 를 누르게 되면

    Connect to Cluster through terminal

     

     터미널 창에서 입력했을 때 MongoDB를 연결할 수 있는 방법이 나온다.

     그럼 이렇게 데이터베이스 연결이 잘 된 것을 볼 수 있다.

     

     

    MongoDB Document

     MongoDB 에서 말하는 도큐먼트는 필드와 값이 쌍으로 저장된 데이터를 의미한다. 필드는 데이터 포인트를 위한 고유 식별자를 말하고, 값은 주어진 식별자와 연결된 데이터를 말한다. 컬렉션은 도큐먼트로 구성된 저장소를 의미한다.

    이게 바로 도큐먼트! 출처 : 코드스테이츠

     

     

    JSON? BSON?

     JSON은 Javascript 형식으로 출력되는 것을 의미한다. 일반적인 도큐먼트는 JSON 형식으로 많이 출력된다. 위 그림에서 설명했 듯, {중괄호} 로 도큐먼트가 시작과 끝을 맺고, 그에 해당되는 필드는 콜론(:)으로 분리되고 쌍을 구분할거면 쉼표(,)를 이용한다. 문자열인 필드는 쌍따옴표("")로 감싸 적어준다. 위 그림이 제일 정확한 JSON 도큐먼트 방식이다. JSON텍스트 형식이라 읽기 쉽지만, 파싱하는 것이 느리고, 메모리 사용이 비효율적이다. 기본적인 데이터 타입만 지원하기 때문에 사용할 수 있는 데이터 타입에 제약이 있다. 이런한 문제점을 해결하기 위해 BSON(Binary JSON) 형식이 나왔다.

     

    이게.. BSON인데요

     이진법 기반으로 둔 표현법이고, 컴퓨터 언어로 표현한 것이기 때문에 메모리 사용이 효율적이고 가볍고 유연하다. JSON 보다 더 많은 데이터 타입을 사용할 수 있다. 하지만 JSON 보다 가독성이 떨어진다는 단점이 존재한다.

     

     형태에 따라 데이터를 가져오고 내보내는 명령어가 서로 다르다. 먼저 JSON은

    • mongoimport
    • mongoexport 

     으로 나뉘고 BSON은

    • mongorestore
    • mongodump

     로 나뉜다.

Designed by Tistory.