-
[MongoDB] 기초 개념 정리IT/개발 관련(DB, Git, Docker, Blockchain 등) 2019. 11. 11. 15:32
본격적으로 몽고디비에 대해 공부하기 전에, 데이터베이스 기본 개념을 공부해보겠다!
데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.
(관계형)데이터베이스는 데이터를 행과 열의 2차원 배열에 저장한다.
A B C 1 0 0 0 2 0 0 0 -> 파란색이 칠해진 부분: 행 = 로우(row) = 레코드(record) = 개체
-> 빨간색이 칠해진 부분: 열 = 컬럼(column) = 필드(filed) = 속성
컴퓨터의 논리회로에선 전기신호가 있을 때 1, 전기 신호가 없을 때 0으로 동작한다. 이 단위를 비트라고 한다.(정보의 최소 단위)
8개의 비트가 모여서 바이트가 된다.
바이트 하나 이상이 모여서 문자나 숫자 등을 저장할 수 있는 영역이 되는데, 이를 필드라고 한다.
필드가 모여서 레코드가 된다.
레코드가 모여서 파일이 된다.
여러 개의 관련있는 파일이 논리적으로 연결되어 필요한 부분을 적절히 찾고 활용할 수 있도록 한 것을 데이터베이스라고 한다.
데이터베이스관리시스템(DBMS; DataBase Management System)은 데이터베이스를 관리해주는 프로그램이다.
데이터베이스의 생성, 접근방법, 물리적 구조등을 책임지고, 데이터를 체계적으로 관리, 검색, 활용한다.
예로, 아래에서 공부할 MongoDB, MySQL, MariaDB 등이 있다.
MongoDB의 기본 개념
1. MongoDB 데이터의 기본 단위는 문서이다. (관계형 디비의 행과 유사하지만, 더욱 다양한 자료구조를 표현한다.)
2. 컬렉션은 *스키마가 없는 테이블이다.
* 스키마란? 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것.
3. MongoDB의 단일 인스턴스는 여러 독립적인 데이터베이스를 호스팅할 수 있고, 각 데이터베이스는 자체적인 컬렉션들과 권한을 가진다.
4. MongoDB는 인스턴스 관리와 데이터 조작에 유용한 자바스크립트 쉘을 제공한다. 몽고DB는 자바스크립트 문법을 사용하는 DB이다.
5. 모든 문서는 문서 컬렉션 내에서 고유한 키"_id"를 가진다.
문서란?
MongoDB의 핵심은 키와 연결된 값의 집합으로 이루어지는 문서라는 개념이다.(JSON과 같다.)
문서의 키는 문자열형이다.
MongoDB는 데이터형과 대소문자를 구별한다.
{"foo" : 3}와 {"foo" : "3"}는 다르다.
{"foo" : 3}와 {"FOO" : 3}도 다르다.
컬렉션이란?
컬렉션은 문서의 모음이다.
문서가 관계형 데이터베이스의 행이라고 볼 수 있다면, 컬렉션은 테이블로 볼 수 있다.
하지만 스키마가 없다는 것이 차이가 있다.
이는 하나의 컬렉션 내에 있는 문서들이 모두 다른 구조를 가질 수 있다는 뜻이다.
다음 문서들을 하나의 컬렉션에 같이 저장할 수 있다.
{"greeting":"Hello"}
{"foo":5}
위 문서들은 값의 데이터형도 다르고, 키마저도 다르지만 하나의 컬렉션 내에 저장하는데 문제가 없다.
개발자에게 더 높은 유연성을 제공해준다.
MongoDB 쉘?
MongoDB는 커맨드라인에서 MongoDB 인스턴스와 상호작용하는 자바스크립트 쉘을 함께 제공한다.
쉘은 실행중인 인스턴스를 살펴보거나, 간단한 기능을 실험하기에 좋다.
쉘은 온전한 자바스크립트 해석기로 임의의 자바스크립트 프로그램을 실행할 수 있다. 표준 자바스크립트 라이브러리의 모든 기능을 활용할 수 있다. 자바스크립트 함수 정의와 호출도 사용할 수 있다.
'IT > 개발 관련(DB, Git, Docker, Blockchain 등)' 카테고리의 다른 글
[MySQL] INNER JOIN / LEFT JOIN / RIGHT JOIN (초간단 예제) (0) 2020.04.07 [MySQL] ERROR 1006 (HY000): Can't create database (errno: 2 "No such file or directory") (0) 2019.12.13 [Blockchain] 화폐의 종류와 개념 그리고 암호화폐의 등장 (0) 2019.11.17 [Docker] Docker 개념과 실행해보기 (4) 2019.09.02 [Git] error: failed to push some refs to ... / fatal: refusing to merge unrelated histories 에러가 났을 때 해결방법 (0) 2019.09.01