지난 시간에는 클라우드에서 MongoDB를 손쉽게 운영할 수 있는 MongoDB Atlas에 대해 배웠습니다.
Atlas 자체도 훌륭한 관리 기능을 제공하지만, MongoDB 생태계에는 개발과 운영 작업을 더욱 효율적으로 만들어주는 다양한 도구와 유틸리티들이 존재합니다.
데이터를 시각적으로 보고 싶을 때, 데이터를 안전하게 백업하고 싶을 때, 또는 다른 형식의 데이터를 MongoDB로 가져오거나 내보내고 싶을 때 이 도구들이 큰 도움이 될 것입니다.
GUI 도구
MongoDB Compass는 MongoDB에서 공식적으로 제공하는
그래픽 사용자 인터페이스(GUI)
도구입니다.
우리가 지금까지
mongosh
라는 명령줄 인터페이스(CLI)를 통해 텍스트 기반으로 MongoDB와 상호작용했다면, Compass는 마우스 클릭과 시각적인 화면을 통해 데이터베이스를 탐색하고 관리할 수 있게 해줍니다.
서버 연결 및 데이터베이스/컬렉션 탐색
:
로컬 MongoDB 서버는 물론, MongoDB Atlas 클러스터에도 쉽게 연결할 수 있습니다. (Atlas에서 연결 문자열 제공)
데이터베이스와 컬렉션 목록을 트리 형태로 보여주어 쉽게 탐색할 수 있습니다.
문서 보기 및 편집
:
컬렉션의 문서들을 테이블 뷰, JSON 뷰, 트리 뷰 등 다양한 형태로 시각화하여 보여줍니다.
문서를 직접 추가, 수정, 삭제하는 작업을 GUI 환경에서 편리하게 수행할 수 있습니다.
쿼리 실행 및 필터링
:
직관적인 쿼리 바(Query Bar)를 통해 find
명령어의 조건(JSON 형식)을 입력하고 실행 결과를 바로 확인할 수 있습니다.
필터링 옵션을 사용하여 특정 조건에 맞는 문서만 쉽게 찾아볼 수 있습니다.
인덱스 관리
:
컬렉션의 인덱스 정보를 시각적으로 확인하고, 새로운 인덱스를 생성하거나 기존 인덱스를 삭제하는 작업을 GUI에서 수행할 수 있습니다.
집계 파이프라인(Aggregation Pipeline) 빌더
:
여러 스테이지로 구성된 복잡한 집계 파이프라인을 GUI 환경에서 단계별로 만들고 테스트하며 결과를 미리 볼 수 있습니다. 코드를 직접 작성하는 것보다 훨씬 직관적입니다.
스키마 분석(Schema Analysis)
:
컬렉션의 문서들을 샘플링하여 각 필드의 데이터 타입, 분포, 값의 범위 등을 분석하고 시각화해 줍니다. 이를 통해 데이터의 구조를 파악하고 데이터 모델링을 개선하는 데 도움을 받을 수 있습니다.
성능 모니터링(Performance Monitoring)
:
실시간으로 서버의 성능 지표(느린 쿼리, 네트워크 트래픽, 작업 수 등)를 보여주는 기능을 제공하여 성능 문제를 진단하는 데 유용합니다. (Atlas 클러스터의 경우 더 상세한 모니터링은 Atlas UI에서 제공)
지리 공간 데이터 시각화(Geospatial Data Visualization)
:
GeoJSON 데이터를 지도 위에 시각적으로 표시해 주는 기능도 있습니다.
MongoDB Compass는 여러분의 MongoDB 개발 및 관리 작업을 훨씬 편리하게 만들어 줄 수 있는 강력한 도구입니다. 설치 과정도 매우 간단합니다.
Version
: 보통 최신 안정 버전(Stable)을 선택하는 것이 좋습니다.
Platform
: 사용 중인 운영체제를 선택합니다. (예: Windows 64-bit (msi), macOS 64-bit (dmg), Linux - 여러 배포판용 deb/rpm 등)
Package
: 대부분의 경우 기본 패키지 형식을 선택하면 됩니다. (예: Windows는 .msi, macOS는 .dmg)
'Download' 버튼을 클릭하여 설치 파일을 다운로드합니다.
다운로드 페이지
다운로드한 .msi
설치 파일을 더블 클릭하여 실행합니다.
설치 마법사의 안내에 따라 진행합니다. 보통 'Next'를 몇 번 클릭하고 라이선스에 동의하면 설치가 완료됩니다. 특별히 변경할 옵션은 거의 없습니다.
설치가 완료되면 시작 메뉴나 바탕화면에서 MongoDB Compass를 실행할 수 있습니다.
다운로드한 .dmg
파일을 더블 클릭하여 엽니다.
보통 MongoDB Compass 아이콘을 응용 프로그램(Applications) 폴더 아이콘으로 드래그 앤 드롭하는 방식으로 설치합니다.
드래그 앤 드롭
설치가 완료되면 Launchpad나 응용 프로그램 폴더에서 MongoDB Compass를 실행할 수 있습니다. 처음 실행 시 보안 경고가 나타날 수 있으며, '열기'를 선택하면 됩니다.
.deb
파일 (Debian/Ubuntu 계열): 터미널에서 sudo dpkg -i <다운로드된_compass.deb_파일경로>
명령어를 사용하여 설치하고, 필요한 경우 sudo apt-get install -f
로 의존성을 해결합니다.
.rpm
파일 (RedHat/Fedora/CentOS 계열): 터미널에서 sudo rpm -ivh <다운로드된_compass.rpm_파일경로>
명령어를 사용하여 설치합니다.
설치 후에는 애플리케이션 메뉴에서 MongoDB Compass를 찾아 실행하거나, 터미널에서 mongodb-compass
(또는 유사한 이름) 명령으로 실행할 수 있습니다.
Compass를 처음 실행하면, 새로운 연결(New Connection)을 설정하는 화면이 나타납니다.
여기에 MongoDB 서버에 접속하기 위한
연결 문자열(Connection String URI)
을 직접 입력하거나, 개별 필드(Hostname, Port, Authentication 등)를 채워 넣을 수 있습니다.
로컬 서버 접속 시
: 기본 설정(
mongodb://localhost:27017
)으로 접속을 시도해 볼 수 있습니다.
MongoDB Atlas 클러스터 접속 시
: Atlas 대시보드에서 제공하는 연결 문자열을 복사하여 붙여넣는 것이 가장 편리합니다.
(11일차 Atlas 시작 가이드 참고)
'New Connection' 화면
필요한 인증 정보(사용자 이름, 비밀번호)를 입력하고 'Connect' 버튼을 클릭합니다.
성공적으로 연결되면 Compass의 메인 화면으로 이동하여 데이터베이스와 컬렉션을 탐색할 수 있습니다.
Atlas 데이터베이스와 컬렉션 연결 화면
MongoDB를 처음 배우는 학생분들이나 명령줄 환경이 익숙하지 않은 분들에게 Compass는 데이터베이스의 구조를 이해하고 기본적인 작업을 수행하는 데 매우 유용한 도구입니다.
다양한 기능을 직접 사용해보면서 MongoDB와 더 친숙해지시길 바랍니다.
🚀
2. mongodump와 mongorestore: 데이터 백업과 복원 🔗
데이터는 매우 소중하므로, 예기치 않은 문제(하드웨어 장애, 사용자 실수 등)로부터 데이터를 보호하기 위해 정기적인
백업(Backup)
이 필수적입니다.
mongodump
와
mongorestore
는 MongoDB 데이터를 백업하고 복원하는 데 사용되는 명령줄 유틸리티입니다.
데이터베이스 백업하기
mongodump
는 MongoDB 서버에서 데이터를 BSON(Binary JSON) 형식의 파일로 내보내어 백업을 생성합니다.
mongodump --uri= "mongodb://<username>:<password>@host:<port>/<databaseName>" --out= "/path/to/backup_directory"
--uri
접속할 MongoDB 서버의 연결 문자열입니다.
인증 정보, 호스트, 포트, 백업할 특정 데이터베이스 이름 등을 포함할 수 있습니다.
특정 데이터베이스를 지정하지 않으면 서버의 모든 데이터베이스를 백업합니다.
--out
또는 -o
백업 파일이 저장될 디렉토리 경로를 지정합니다.
이 디렉토리가 존재하지 않으면 자동으로 생성됩니다.
지정하지 않으면 현재 디렉토리 아래에 dump
라는 이름의 디렉토리가 생성됩니다.
--db <databaseName>
특정 데이터베이스만 백업합니다.
--collection <collectionName>
특정 컬렉션만 백업합니다. (--db
옵션과 함께 사용)
--gzip
백업 파일을 gzip 형식으로 압축하여 저장 공간을 절약합니다.
--archive
모든 백업 데이터를 단일 아카이브 파일로 만듭니다.
--username <user>
, --password <pass>
, --authenticationDatabase <authDB>
인증 정보 지정.
test
데이터베이스 전체를 ~/mongodb
디렉토리에 압축하여 백업하기
mongodump --uri= "mongodb://localhost:27017/test" --out= "~/mongodb"
mongodump 실행 결과
백업 데이터 복원하기
mongorestore
는
mongodump
로 생성된 백업 파일(BSON)을 MongoDB 서버로 다시 가져와 데이터를 복원합니다.
mongorestore --uri= "mongodb://<username>:<password>@<host>:<port>/<targetDatabaseName>" /path/to/backup_directory
--uri
: 데이터를 복원할 MongoDB 서버의 연결 문자열입니다.
마지막 인자: mongodump
로 생성된 백업 파일들이 있는 디렉토리 경로.
--db <targetDatabaseName>
: 특정 데이터베이스로 복원합니다.
--collection <targetCollectionName>
: 특정 컬렉션으로 복원합니다.
--gzip
: 압축된 백업 파일을 복원할 때 사용합니다.
--archive
: 단일 아카이브 파일로부터 복원합니다.
--drop
: 복원하기 전에 대상 컬렉션의 기존 데이터를 모두 삭제합니다. (주의!)
--nsInclude <namespacePattern>
, --nsExclude <namespacePattern>
: 특정 네임스페이스만 포함/제외.
위에서 백업한 내용을 restoredDB
데이터베이스로 복원하기
mongorestore --uri= "mongodb://localhost:27017/restoredDB" ~/mongodb/test
복원 완료
👨💻
mongodump와 mongorestore는 데이터 마이그레이션, 개발 환경 구축 등 다양한 상황에서 유용하게 사용됩니다.
🚀
3. mongoimport와 mongoexport 🔗
데이터 형식 변환
때로는 MongoDB 데이터를 다른 형식(JSON, CSV 등)으로 내보내거나, 다른 형식의 데이터를 MongoDB로 가져와야 할 때가 있습니다.
mongoimport
와
mongoexport
는 이러한 작업을 위한 명령줄 유틸리티입니다.
MongoDB 데이터를 외부 파일로 내보내기
mongoexport
는 컬렉션의 데이터를 JSON, CSV, TSV 형식으로 내보냅니다.
mongoexport --uri= "mongodb://username:password@host:port/databaseName" --collection= "collectionName" --out= "output_file.json"
--type <json|csv|tsv>
: 파일 형식 (기본값: json).
JSON: --jsonArray
옵션으로 전체를 배열로 묶음.
CSV/TSV: --fields
또는 --fieldFile
로 필드 목록 필수 지정.
--query <JSON_query_string>
: 특정 조건 문서만 내보내기.
--pretty
: JSON 예쁘게 포맷.
users
컬렉션에서 "active" 상태 사용자들의 name
, email
을 CSV로 내보내기
아래 명령어로 test 컬렉션에 데이터를 생성해줍니다.
db.users. insertMany ([
{ name: "Alice" , email: "alice@example.com" , status: "active" },
{ name: "Bob" , email: "bob@example.com" , status: "disabled" },
{ name: "Charlie" , email: "charlie@example.com" , status: "active" },
{ name: "Daisy" , email: "daisy@example.com" , status: "inactive" }
])
mongoexport --uri= "mongodb://localhost:27017/test" --collection= "users" --type= "csv" --fields= "name,email" --query= '{"status": "active"}' --out= "active_users.csv"
CSV 파일 생성 결과
외부 데이터를 MongoDB로 가져오기
mongoimport
는 JSON, CSV, TSV 형식의 파일 데이터를 MongoDB 컬렉션으로 가져옵니다.
mongoimport --uri= "mongodb://username:password@host:port/databaseName" --collection= "collectionName" --file= "input_file.json"
--type <json|csv|tsv>
: 파일 형식 (기본값: json).
JSON: 파일 내용이 줄 단위 JSON 객체이거나, --jsonArray
옵션 사용.
CSV/TSV: --headerline
(첫 줄을 필드명으로) 또는 --fields
/--fieldFile
로 필드 지정.
--drop
: 가져오기 전 기존 데이터 삭제.
--mode <insert|upsert|merge>
: 삽입 방식 지정 (--upsertFields
필요).
위에서 내보낸 active_users.csv
파일을 importedUsers
컬렉션으로 가져오기
mongoimport --uri= "mongodb://localhost:27017/test" --collection= "importedUsers" --type= "csv" --headerline --file= "active_users.csv"
mongoimport 결과
오늘은 MongoDB를 사용하면서 우리의 작업을 훨씬 편리하고 효율적으로 만들어주는 주요 도구와 유틸리티들에 대해 알아보았습니다.
시각적인 데이터 관리를 위한 MongoDB Compass의 설치 및 사용법, 안정적인 데이터 백업과 복원을 위한
mongodump
와
mongorestore
, 그리고 다양한 형식의 데이터를 MongoDB와 주고받을 수 있게 해주는
mongoimport
와
mongoexport
까지, 각각의 특징과 사용법을 살펴보았습니다.
이러한 도구들을 잘 활용하면 MongoDB 개발 및 운영의 생산성을 크게 높일 수 있습니다.
다음 시간에는 프로그래밍 언어와 MongoDB를 연동하는 방법을 배워 보겠습니다.
Node.js 환경에서 MongoDB Atlas 클러스터에 접속하여 기본적인 CRUD 작업을 수행하는 방법에 대해 자세히 알아보겠습니다.