본문 바로가기
개발(Develop)/데이터베이스(DB)

데이터베이스(DB)/ SQL과 NoSQL의 차이 및 장단점/ mongoDB(몽고DB)와 Robo 3T/ 관계형 DB, 비관계형 DB/ SQL, NoSQL 자세한 설명

by 왁왁s 2021. 5. 31.

이전 글에서 다운로드 받았던

데이터베이스 중 하나인 mongoDB(mongoDB)를 활용해보고자 한다.

몽고 DB를 다운로드 받지 않으신 분들은 이전 글을 참고하길 바란다.

 

mongoDB(몽고DB) 쉬운 설치/ mongoDB 환경변수 설정까지/ mongoDB란/ mongoDB 다운로드

 

mongoDB(몽고DB) 쉬운 설치/ mongoDB 환경변수 설정까지/ mongoDB란/ mongoDB 다운로드

mongoDB 란? 문서지향(Document-Oriented) 저장소를 제공하는 NoSQL 데이터베이스 시스템이다. 몽고 DB는 가장 인기있는 데이터베이스 관리 시스템이다. mongoDB의 특징은? 1. 모든 데이터가 JSON 형태로 저장

parkjh7764.tistory.com


mongoDB 설치 후 설치가 잘 되었는지 확인하는 방법

http://localhost:27017

해당 주소를 빈 크롬을 열고, 주소창에 입력했을 때 아래와 같은 결과 값이 나온다면

몽고 DB가 잘 설치되었다는 것을 확인할 수 있다.

 

출력한 말은 MongoDB 잘 작동되고 있는데, 네이티브 드라이버로 접근을 해야 하는데,

HTTP로 접근했다는 뜻이다. 

 

그냥 잘 작동되는 것만 확인하면 된다.


mongoDB와 함께 이전에 다운로드 받았던 Robo 3T도 실행시켜주자.

Robo3T가 다운로드 되어 있지 않다면 아래를 참고해서 다운로드를 받자.

 

Robo 3T 쉬운 설치/ MongoDB 편리하게 작업하는 Robo 3T/ Robo 3T 다운로드/ Robo 3T란

 

Robo 3T 쉬운 설치/ MongoDB 편리하게 작업하는 Robo 3T/ Robo 3T 다운로드/ Robo 3T란

Robo 3T란? 'Robo 3T'라는 프로그램은 이전 글에서 다룬 MongoDB의 유용성을 더해주는 프로그램이다. MongoDB만을 다루기 위해서는 '명령 프롬프트(cmd)'와 같은 터미널 환경에서 사용을 해야 하는데, Robo 3

parkjh7764.tistory.com


Robo3T가 다운로드가 되었다면, 실행을 시켜주자.

그러면 아래와 같은 창이 뜰 것이다.

 

MongoDB Connections라는 창이 뜨는데, 왼쪽 위에 'Create'를 누른다.


그러면 'Connection Settings'가 뜨는데,

Connection에서 이름만 설정해준다. Name에 알아보기 쉬운 아무 이름을 쓴다.

나는 그냥 myLocalDB를 이름으로 했다. 그러고는 Save를 누른다.


그러면 위에서 설정한 myLocalDB라는 이름의 무언가가 생성이 되었다.

마우스 왼쪽으로 더블 클릭을 해서 Connect를 시켜주자. 


그러면 Robo 3T 왼쪽 상단에 myLocalDB라는 이름으로

그 아래에 System과 config가 생겼을 것이다.


그전에 mongoDB와 Robo 3T가 무엇인지 집고 넘어가자.

설치하는 내용의 이전 글을 클릭하여 들어가 설명을 읽어보았다면, 조금이나마 알고 있을 것이다.

 

mongoDB와 Robo 3T 가 무엇인가?

아래는 이전에 작성했던 글을 캡처해서 온 것이다.

글씨가 작아서 보이지 않을 수도 있는데, 그렇다면 이전 글을 참고하자....


다시 한번 더 풀어서 설명하자면

mongoDB는 작동은 되고 있지만 눈으로 보이지 않는다.

그 말은 mongoDB라는 데이터베이스에 데이터를 저장을 했는데, 이것이 저장이 된 것인지

눈으로 바로 확인이 되지 않는다.

 

조금 유식한 말로는 그래픽인터페이스(GUI)를 제공하지 않는다는 것이다.

 

그래서 필요한 게 'Robo 3T'이다.

이는 mongoDB 데이터베이스 내부를 그래픽인터페이스를 입혀주는 것이다.

데이터를 저장하면, 우리 눈에 데이터가 저장되었는지 확인할 수 있게 시각적으로 나타내준다.

이 때문에 mongoDB와 Robo 3T를 함께 사용하는 이유이다.


그러면 데이터베이스 중에 하나인 mongoDB를 사용하는 이유는 무엇일까?

 

mongoDB를 사용하는 이유는?

mongoDB는 데이터베이스 중에 하나이므로 데이터베이스르 사용하는 이유를 생각해보면 된다.

데이터베이스를 사용하는 이유는 '데이터를 잘 찾아서 쓰려고'가 주된 이유이다.

데이터베이스에 대한 이해는 '책장'을 떠올려보면 된다.

책을 책장에 가지런히 정리해놓는 이유가 무엇일까. 책을 방 어딘가에 던져놓으면

읽고 싶은 책이 떠올랐을 때 찾지를 못 한다. 책장에 책을 넣으면, 그 책을 책장에서 찾으면 된다.

책 하나를 찾기 위해 방 전체를 안 찾아봐도 된다. 

 

데이터베이스도 마찬가지로 책과 같이 잘 찾기 위해서 데이터를 쌓아두는 것이다.


 

 

그러면 조금 더 나아가보자. 다른 데이터베이스 프로그램들도 많을텐데,

왜 mongoDB 데이터베이스를 사용하는 것인가?

 

데이터베이스에는 크게 2가지 종류가 있다.

프로그래밍을 하는 사람이라면 한 번은 들어봤을

'SQL'과 'NoSQL', 이렇게 2가지 종류로 구분한다.

 

위에 캡처해서 가져온 mongoDB 정의를 보면 NoSQL 데이터베이스 시스템이라고 나와있다.

그러면 우선 mongoDB는 NoSQL 데이터베이스이다.

 

※NoSQL이라 해서 SQL이 아니다라는 뜻이 아니라, not only SQL의 약자이다.※

 

그러면 SQL(RDBMS)과 No-SQL이 무엇인지 간단하게 살펴보자.


출처:  https://openclassrooms.com/

SQL(RDBMS) 이란?

SQL관계형 DB라고도 불린다. 관계형 DB라고 불리는 것에서 알 수 있듯이

데이터의 관계를 통해서 여러 테이블로 분산이 된다. 데이터는 테이블에 레코드로 저장이 되는데,

각 테이블은 명확하게 정의된 구조가 있다. 해당 구조는 데이터 유형이나 필드의 이름으로 정의된다.

데이터를 테이블에 레코드로 저장하기 위해서는 명확히 정의된 구조인 스키마를 따라야 한다.

그렇기 때문에 명확히 정의된 구조인 스키마를 준수하지 않는 데이터는 테이블에 추가할 수 없다..

 

쉽게  말하면

행과 열로 구분되어 있는 엑셀에 데이터를 저장하는 것과 유사하다.

 

더 쉽게 비유를 들어보면

학교나 회사에서 신상정보를 수집한다고 해보자.

이름, 이메일, 전화번호, 가족관계 등 미리 칸을 만들어두고 채워 나가는 것이다.

회사원 3만명에 대해서 신상정보를 수집하여 3만개의 DB가 있다.

그런데 갑자기 사장님이 사원들의 집 주소를 받아보면 어떨까라고 했을 때,

이미 3만개의 칼럼으로 DB가 정형화 되어 있는데, 거기에 추가하기가 어려워지는 것이다. 

 

그러나 정형화 되어 있는 만큼 데이터에 대한 일관성이 있고, 분석에 있어서 용이하다.

 

SQL 데이터베이스  : MS-SQL, My-SQL


NoSQL 이란?

NoSQL비관계형 DB라고도 불린다. 말그대로 관계형 DB와 반대이다. 스키마X, 관계X

NoSQL에서는 레코드를 문서(documents)라고 부른다. SQL에서는 정해진 구조인

스키마를 따르지 않으면 데이터 추가가 불가능했지만, NoSQL에서는 다른 구조의 데이터도

같은 컬렉션에 추가가 가능하다.

 

NoSQL에서는 레코드를 문서라고 불리는데, 이 문서는 우리가 많이 다뤘던

Json과 유사한 형태를 가지고 있다.

SQL처럼 행과 열이 있는 테이블에 나누어 담는 것이 아니라

관련 데이터를 '컬렉션'에 넣는다.

 

그렇기 때문에 SQL에서 여러 테이블로 나누어 관리하는 것을 

NoSQL에서는 한꺼번에 포함하여 저장할 수 있다.

 

따라서 NoSQL은 SQL과 다르게 여러 테이블마다 '조인'할 필요 없이 (아예 조인 개념이 없다.)

데이터를 사용할 수 있다.

 

NoSQL 데이터베이스 : MongoDB


SQL과 NoSQL의 장점은?

SQL은 데이터 중복을 피하기 위해 '관계'를 이용한다.

SQL에서는 하나의 테이블에서 중복 없이  하나의 데이터를 관리하기 때문에

다른 테이블에서 부정확한 데이터를 다룰 위험이 없다.

명확하게 스키마가 정의되어 있기 때문에 데이터의 무결성이 보장된다.

 

NoSQL은 스키마가 없어 유연하며, 언제든지 데이터를 조정하고 새로운 것을 추가할 수가 있다. 

조인을 사용하지 않고 자주 변경되지 않는 데이터를 이용할 때 상당히 효율적이다.


그러면 언제 SQL, 언제 NoSQL 데이터베이스가 더 좋을까?

SQL 데이터베이스는

관계를 맺고 있는 데이터가 자주 변경되는 경우에 유용하다.

이때 NoSQL에서는 여러 컬렉션을 모두 수정해야 해서 비효율적이다.

그리고 변경될 여지가 없고, 명확한 스키마가 데이터나 사용자에게 중요한 경우이다.

 

NoSQL 데이터베이스는

정확한 데이터 구조를 알 수 없거나, 데이터 구조가 변경 또는 확장될 수 있는 경우,

그리고 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우,

데이터가 막대한 양이라, 데이터베이스를 수평으로 확장해야 하는 경우에 유용하다.


mongoDB와 Robo 3T를 다뤄보려고 했지만....

SQL과 NoSQL 데이터베이스를 다루는 데에 힘을 다 써버렸다.

다음에 다뤄보도록 하겠다.

 

댓글