우리가 인터넷을 사용하고 여러 통신을 하는 궁극적인 목표는 Data를 주고 받는 것이라고 생각합니다.
이 데이터를 효과적으로 주고 받기 위해 Computer, OS, 입력 및 출력 장치, 네트워크, 서버, Software, Database등 이 발달하였죠.
이 중요한 data를 저장하는 저장 서버가 바로 Database입니다.
Database도 여러 종류가 있는데요, 대표적으로 관계형 데이터 베이스인 SQL과 관계 형이 아닌 NoSQL이 있습니다.
관계형은 말 그대로 각 데이터를 담을 수 있는 테이블마다 서로 관계가 되어 있는 것이고, NoSQL은 각 테이블(NoSQL은 Collection) 마다 서로 관계성이 없다는 것을 의미합니다.
먼저 NoSQL인 MongoDB를 먼저 다뤄보려고 합니다.
MongoDB는 객체 형태로 담을 수 있는 Document 형식의 DB로서 각 Document를 Collection이라고 표현합니다.
Collection 구조는 객체 형태, 즉 key와 value 값으로 이루어져 있어 저장하기 매우 간편한 구조로 되어있습니다.
하지만 MongoDB도 여러 기능들이 점차 업데이트 되고 있는 상황이어서 SQL만큼 아니지만 Populate 기능을 활요하여 각 Collection 마다 관계를 맺도록 할 수 있습니다.
# MongoDB 설치 (Ubuntu)
apt install curl
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
apt-get update
apt-get install libssl1.1
apt-get install -y mongodb-org
systemctl enable mongod.service
systemctl start mongod.service
# node 및 mongodb 연동
<docker-compose.yml>
version: "3.8"
services:
nodejs:
container_name: node
build: .
ports:
- "3000:3000"
networks:
network:
ipv4_address: 192.17.0.3
mongo:
image: mongo
container_name: mongo
networks:
network:
ipv4_address: 192.17.0.4
networks:
network:
ipam:
driver: default
config:
- subnet: 192.17.0.1/16