티스토리 뷰
- 원격 DB를 전제로 한 경우, 추가 설정이 필요합니다.
MongoDB 원격 접속 설정
1. 방화벽 설정
먼저, MongoDB가 사용하는 기본 포트(27017)에 대한 인바운드 연결을 허용해야 합니다. Ubuntu나 Debian 기반 시스템에서는 UFW(Uncomplicated Firewall)를 사용하여 이를 설정할 수 있습니다.
sudo ufw allow 27017
이 명령은 27017 포트로의 모든 인바운드 연결을 허용합니다.
2. MongoDB 설정 파일 수정
MongoDB의 설정 파일을 수정하여 원격 접속을 허용해야 합니다. 설정 파일의 위치는 일반적으로 /etc/mongod.conf
입니다.
설정 파일을 엽니다:
sudo nano /etc/mongod.conf
net
섹션을 찾아 다음과 같이 수정합니다:net: port: 27017 bindIp: 0.0.0.0
여기서
bindIp: 0.0.0.0
은 모든 IP 주소에서의 연결을 허용한다는 의미입니다. 이전에는 기본값으로127.0.0.1
(localhost)만 허용되어 있었을 것입니다.
주의사항
bindIp: 0.0.0.0
으로 설정하면 모든 IP 주소에서의 연결을 허용하므로 보안에 주의해야 합니다.- 가능하다면 특정 IP 주소나 IP 범위만 허용하는 것이 더 안전합니다. 예:
bindIp: 127.0.0.1,192.168.1.0/24
- 0/24의 의미는
3. MongoDB 재시작
설정 변경 후 MongoDB 서비스를 재시작해야 합니다:
sudo systemctl restart mongod
데이터 삽입
필요한 라이브러리
- json: Python 기본 라이브러리로, JSON 데이터를 다루는 데 사용됩니다.
- pymongo: MongoDB와 Python을 연결해주는 드라이버입니다.
pip install pymongo
로 설치할 수 있습니다.
import json
from pymongo import MongoClient
JSON 데이터 준비
MongoDB에 삽입할 데이터는 JSON 형식이어야 합니다. JSON은 키-값 쌍으로 이루어진 데이터 형식으로, MongoDB의 문서 구조와 잘 맞습니다.
예시 데이터
[
{
"회원": {
"이름": "홍길동",
"나이": 30,
"이메일": "hong@example.com"
},
"구매이력": [
{
"상품코드": "PROD001",
"상품명": "스마트폰",
"구매일자": "2024-10-05",
"가격": 800000
},
{
"상품코드": "PROD002",
"상품명": "무선이어폰",
"구매일자": "2024-10-07",
"가격": 150000
}
]
}
]
MongoDB에 데이터 삽입하기
다음은 대용량 JSON 파일을 MongoDB에 삽입하는 함수입니다:
def import_large_json(file_path, host, db_name, collection_name):
client = MongoClient(f'mongodb://{host}:27017/')
db = client[db_name]
collection = db[collection_name]
with open(file_path, 'rb') as file:
json_data = json.load(file)
collection.insert_many(json_data)
이 함수는 다음과 같은 단계로 작동합니다:
- MongoDB 서버에 연결합니다.
- 지정된 데이터베이스와 컬렉션을 선택합니다.
- JSON 파일을 열어 데이터를 읽어옵니다.
insert_many()
메소드를 사용해 데이터를 한 번에 삽입합니다.
insert_many vs insert_one
insert_many()
: 여러 문서를 한 번에 삽입합니다. 대량의 데이터를 처리할 때 효율적입니다.insert_one()
: 한 번에 하나의 문서만 삽입합니다. 단일 문서를 삽입할 때 사용합니다.
대용량 데이터를 다룰 때는 insert_many()
가 훨씬 효율적입니다. 개별적으로 insert_one()
을 반복하는 것보다 처리 속도가 훨씬 빠릅니다.
사용 예시
import_large_json("test.json", '123.123.123.12', 'root', 'test-db')
- ps. 개인적으로 약 5GB 크기의 JSON 파일을 삽입해봤는데, 64GB RAM에서 약 5분 정도 소요되었습니다.
반응형
'개발일지' 카테고리의 다른 글
[MongoDB] 윈도우에서 MongoDB 7 설치하기(환경변수 설정) (1) | 2024.09.05 |
---|---|
[Hadoop & Apache Spark] 하둡과 아파치 스파크-3 초기설정 및 실행/정지 (0) | 2024.06.28 |
[Hadoop & Apache Spark] 하둡과 아파치 스파크-1,2 (0) | 2024.06.26 |
Node.js 기초 (0) | 2024.06.24 |
[Ubuntu] 우분투 서버(ubuntu server) 글자 크기 CLI로 변경 (0) | 2024.02.05 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 지식그래프임베딩
- 3d-force-graph
- difflib
- LLM
- Vue3
- Postgis
- Encoding
- knowlegegraph
- psycopg
- rdflib
- p-tuing
- pandas
- PostgreSQL
- vscode
- polars
- PEFT
- writerow
- volar
- 키워드추출
- TextRank
- KRworkrank
- python
- hadoop
- python'
- 지식그래프
- elasticsesarch
- knowledgegraph
- v-tooltip
- MongoDB
- SPARQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함