본문 바로가기
  • " 집요함 "
  • " 집요함 "
  • " 집요함 "
웹/백엔드 서버

MongoDB (NoSQL 데이터베이스) & 우분투 mongodb설치

by joen00 2022. 4. 26.

NoSQL 데이터베이스

noSQL 은 RDB와 다르게, 테이블(스키마)의 존재가 없어 사용 자체가 간편한 데이터 베이스이다.

 

  • noSQL 장점
  1. 대부분 json으로 동작 ⇒ 중간에 뚝 끊을 수 있다. 그렇기 때문에 서버를 늘리면 반으로 잘라서 다른 서버에 옮기기 쉽다.
  2. SQL 문법이 존재하지 않는다 (대충 데이터 덩어리 만들어서 주면 넣어줌)
  3. 값 입력 작업이 RDB보다 빠르다.
  4. 수평 확장에 용이하다. ⇒ 서버를 구매한다. (참고로 수직확장이란 cpu를 늘리는 식이다.)

 

  • noSQL 단점
  1. pk, fk 같은 기능이 없다 (중복 관리, 데이터 무결성 등 보장하지 않는다)
  2. 값 수정, 삭제 과정이 매우 느림

 

  • noSQL 쓰임
  1. 데이터 구조가 수시로 바뀌는 작업에 쓰인다. ex) 게임 가방 인벤토리 - RDB로 하면 30개로 만들어야한다.
  2. 수정과 삭제는 거의 없고, 삽입과 읽기가 많은 작업 ex) Logging - 기록을 남기는 것
  3. 서버 수평 확장이 다분하게 일어나는 작업 ex) 빅데이터 - 서버가 천 만개가 넘어가면 서버사서 json을 끊고 넣어주고

 

mongo DB

  • NoSQL 데이터베이스의 한 종류이다.

 

  • 사용 형태

MongoDB Atlas ( 클라우드 서비스 )

MongoDB Client Server ( 자체 설치 서비스 )

 

  • 데이터 구조
  1. Database - ex) RDB의 데이터베이스
  2. Collection - ex) RDB의 테이블
  3. Document - ex) RDB의 row ( json 데이터가 들어간다 )
  4. Index - ex) Document에 있는 한 데이터의 key
  5. Field - ex) Document에 있는 한 데이터의 Value

 

 

우분투에 mongodb설치

wget -qO - [https://www.mongodb.org/static/pgp/server-5.0.asc](https://www.mongodb.org/static/pgp/server-5.0.asc) | sudo apt-key add -

echo "deb [ arch=amd64,arm64 ] [https://repo.mongodb.org/apt/ubuntu](https://repo.mongodb.org/apt/ubuntu) focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

sudo apt update

sudo apt install mongodb-org

// 데이터 서버 start
sudo systemctl start mongod
// 데이터 서버 켜져있는지 확인
sudo systemctl status mongod

// 서버 자동으로 껐다가 키도록 도와줌 자동으로 앞으로 설정됨
sudo systemctl enable mongod

mongosh

 

 

mongodb 명령어

- 기본 명령어

// 현재 접속중인 데이터베이스
db

// 데이터가 있으면 데이터베이스들 다 보여줌
show dbs 

// 없으면 만들어주고 있으면 변경 됨
use 데이터베이스 

// 데이터베이스 삭제
db.dropDatabase()

 

- insert

insert 하나만 할때

insert 종류가 많을 때

 

- find

조건 검색

ex) 비밀번호 1234 출력

ex) 비밀번호 1234중 id만 출력

 

- update

updateMany - 전체다 수정

updateOne - 위에서 부터 찾아서 첫 번째만 수정

앞 조건과 뒤 바꿀 값 → 해당 index=key가 없으면 추가 해줌

$unset은 해당 index 삭제

$로 할 수 있는 것 ⇒ 옵션으로 다양한 것을 할 수 있다.

 

- delete

deleteOne -  하나만 할때

deleteMany - 종류가 많을 때

728x90

댓글