일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 객체프로그래밍이란
- 프로그래머스
- 객체프로그래밍
- 알고리즘
- 코딩테스트기출
- 백준 1000번 java
- 자바
- 프렌즈4블록java
- java method
- 백준 1924번 java
- 백준
- 자료구조힙
- 힙정렬자바
- 프렌즈4블록
- 자바문자열
- 카카오코테
- heap정렬
- java
- heap
- 카카오기출
- 카카오코딩테스트
- Java heap
- 공부정리
- 자료구조 트리
- 개발상식
- 백준 1924번
- 문자열포맷
- 백준 1000번
- 코테준비
- 카카오1차
- Today
- Total
일단 시작해보는 블로그
[MongoDB] About MongoDB, 몽고DB 본문
C++로 작성된 오픈소스 문서지향(Document-Oriented)적 Cross-platform 데이터베이스이며, 뛰어난 확장성과 성능을 자랑한다.
현존하는 NoSQL 데이터 베이스 중 인지도 1위를 유지하고 있음.
NoSQL?
-> SQL이 no가 아니라, Not Only SQL이다. 기존의 RDMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터저장소이다.
관계형 DB가 아니므로, RDMS처럼 고정된 스키마 및 JOIN이 존재하지 않는다.
Document?
-> RDMS에서의 record와 비슷한 개념.
이의 데이터 구조는 한개이상의 key-value pair으로 이뤄져 있다.
예를 들면 다음과 같다.
{
"_id" : ObjectId("5099803df3f4948bd2f98391"),
"username" : "jinsun",
"name" : { first : "J.S", last : "PARK"}
}
여기서 _id는 12bytes의 hexadecimal(16진수) 값으로서, 각 document의 유일함(uniqueness)을 제공한다.
이 값의 첫 4bytes는 현재 timestamp, 다음 3bytes는 machine id, 다음 2bytes는 MongoDB 서버의 프로세스id, 마지막 3bytes는 순차번호이다. 즉, 추가될 때 마다 값이 높아진다.
Document는 동적(dynamic)의 schema를 갖고 있다. 같은 Collection 안에 있는 Document 끼리 다른 schema를 갖고 있을 수 있는데, 쉽게 말해서 서로 다른 데이터(다른 key)들을 가지고 있을 수 있다.
Collection?
MongoDB Document의 그룹이다. Document들이 Collection 내부에 위치하고 있는데, RDMS의 table과 비슷한 개념이다.
그렇지만 schema를 따로 가지고 있지 않는다. (각 Document들이 동적이 schema를 가지고 있기때문에!)
Database?
Collection들의 물리적인 컨테이너이다. 각 Database는 파일시스템에 여러파일들로 저장된다.
RDMS와의 비교
RDMS(Relational Database Management System, 관계형 데이터베이스 관리 시스템)은 행과 열로된 2차원의 table로 데이터를 고나리하는 데이터 베이스 시스템이다. Mysql, Oracle Database, DB2 등 시스템들이 RDMS에 속함.
장점
- Schema-less(Schema가 없다. 같은 Collection 안에 있을지라도 다른 Schema를 가지고 있을 수 있다.)
- 각 객체의 구조가 뚜렷하다.
- 복잡한 JOIN이 없다.
- Deep Query ability(문서지향적 Query Language를 사용하여 SQL만큼 강력한 Query성능을 제공한다.)
- 어플리케이션에서 사용되는 객체를 데이터베이스에 추가할 때 Conversion/Mapping이 불필요하다.
macOS 설치
터미널창 열기
brew update
brew install mongodb
sudo mkdir -p /data/db -> -p는 상위폴더, 즉 db의 상위폴더가 없을 수 있기 때문에 다 세트로 만들어달라는 것
whoami -> username을 얻기위해서
sudo chown 유저네임 /data/db -> 권한 얻기위해서 chown
mongod -> mongodb서버 실행하는 명령어. 이 후, 다른 터미널 창을 켜고 다음 명령을 실행한다.
mongo
[REFERENCE]
'개발 > Mysql' 카테고리의 다른 글
[Mysql] ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 에러 (2) | 2019.10.16 |
---|---|
[MongoDB] Data Modelling (0) | 2019.08.26 |