파이썬에서 도큐먼트 데이터베이스(Document Database)에 데이터를 저장하려면, JSON과 유사한 형태의 자료구조를 사용하는 것이 가장 일반적입니다. 도큐먼트 데이터베이스는 데이터를 문서(document) 형태로 저장하며, 각 문서는 키-값 쌍으로 이루어진 구조를 가집니다. 이 구조는 매우 유연하며, 일반적으로 MongoDB나 CouchDB 같은 도큐먼트 데이터베이스에서 사용됩니다.
파이썬에서는 dict
자료구조가 도큐먼트 데이터베이스의 문서와 동일한 형식을 가지며, 파이썬의 pymongo
라이브러리를 사용하면 쉽게 MongoDB와 같은 도큐먼트 데이터베이스에 데이터를 저장하고 관리할 수 있습니다.
1. 도큐먼트 데이터베이스에서의 자료구조 모델
도큐먼트 모델은 보통 다음과 같은 구조를 가집니다:
- 문서(document): 하나의 레코드에 해당하며, 파이썬의
dict
와 유사한 구조.- 예:
{ "name": "John", "age": 30, "skills": ["Python", "MongoDB"] }
- 예:
- 컬렉션(collection): 비슷한 타입의 문서들의 모음. SQL의 테이블과 유사.
- 데이터베이스(database): 여러 컬렉션을 포함하는 단위.
각 문서는 고유의 ID 필드(_id
)를 가지며, 이 필드를 기준으로 각 문서를 식별합니다.
2. 예제: 도큐먼트 데이터베이스 저장 모델
MongoDB를 사용한 기본 예제
아래 예제에서는 파이썬 pymongo
라이브러리를 사용해 MongoDB에 데이터를 저장하고 관리하는 예를 보여줍니다.
1. MongoDB 설치 및 PyMongo 설치
먼저 MongoDB가 설치되어 있어야 하며, PyMongo는 파이썬에서 MongoDB와 통신하기 위한 라이브러리입니다. 이를 설치하려면 다음 명령어를 사용하세요.
pip install pymongo
2. MongoDB 연결 및 문서 저장
다음은 MongoDB에 데이터를 저장하는 예제입니다. 우리는 이벤트 로그를 기록하는 데이터를 문서로 만들어 이를 MongoDB 컬렉션에 저장할 것입니다.
from pymongo import MongoClient
from datetime import datetime
# MongoDB 클라이언트 생성 및 데이터베이스 연결
client = MongoClient("mongodb://localhost:27017/")
db = client["event_logs_db"] # 데이터베이스 선택
collection = db["event_logs"] # 컬렉션 선택
# 이벤트 로그 문서 생성
event_log = {
"event_type": "ERROR",
"description": "Database connection failed",
"timestamp": datetime.now(),
"metadata": {"server": "db1", "retry_attempts": 3}
}
# 문서 저장
inserted_id = collection.insert_one(event_log).inserted_id
print(f"새로 추가된 문서의 ID: {inserted_id}")
3. 여러 문서 저장 및 조회
MongoDB는 여러 문서를 한 번에 저장할 수 있으며, 간단한 조회 쿼리도 가능합니다.
# 여러 개의 이벤트 로그 추가
event_logs = [
{
"event_type": "WARNING",
"description": "High memory usage detected",
"timestamp": datetime.now(),
"metadata": {"memory_usage": "95%", "threshold": "90%"}
},
{
"event_type": "INFO",
"description": "Backup completed successfully",
"timestamp": datetime.now(),
"metadata": {"duration": "15 minutes", "backup_size": "1GB"}
}
]
# 여러 문서 한 번에 삽입
result = collection.insert_many(event_logs)
print(f"추가된 문서들의 ID: {result.inserted_ids}")
# 모든 문서 조회
for log in collection.find():
print(log)
3. 응용: 도큐먼트 데이터베이스 모델 설계
데이터 카드와 같은 개념을 도큐먼트 데이터베이스에 응용할 수 있습니다. 각 데이터 카드는 하나의 문서로 저장되며, name
, description
, attributes
등의 필드로 구조화할 수 있습니다.
# 데이터 카드 문서 예시
data_card = {
"card_id": 1,
"name": "Customer 1",
"description": "First customer record",
"created_at": datetime.now(),
"attributes": {
"age": 25,
"location": "New York",
"purchases": ["laptop", "smartphone"]
}
}
# 데이터 카드 문서 저장
inserted_id = collection.insert_one(data_card).inserted_id
print(f"데이터 카드 저장 ID: {inserted_id}")
# 데이터 카드 조회 (card_id로 검색)
result_card = collection.find_one({"card_id": 1})
print(f"조회된 데이터 카드: {result_card}")
4. 데이터베이스에서 데이터 업데이트 및 삭제
문서를 업데이트하거나 삭제하는 것도 간단하게 할 수 있습니다.
문서 업데이트:
# card_id가 1인 데이터 카드의 age 속성 업데이트
collection.update_one({"card_id": 1}, {"$set": {"attributes.age": 26}})
print("데이터 카드의 나이가 업데이트되었습니다.")
문서 삭제:
# 특정 문서 삭제 (card_id가 1인 문서)
collection.delete_one({"card_id": 1})
print("card_id가 1인 문서가 삭제되었습니다.")
5. 예제 요약
- MongoDB와 같은 도큐먼트 데이터베이스에서는 JSON과 유사한 파이썬
dict
자료구조를 사용하여 데이터를 저장할 수 있습니다. - 파이썬에서
pymongo
라이브러리를 이용해 MongoDB와 연결하여 데이터를 저장, 조회, 수정, 삭제할 수 있습니다. - 데이터 카드를 도큐먼트로 저장하는 구조를 만들어 사용자 데이터, 이벤트 로그 등 다양한 정보를 유연하게 관리할 수 있습니다.
이러한 도큐먼트 데이터베이스 구조는 유연성이 뛰어나고, 정해진 스키마가 없어 데이터의 변화에 매우 유연하게 대응할 수 있습니다. JSON 구조를 기반으로 다양한 데이터를 저장하고 관리할 수 있어 많은 현대 애플리케이션에서 활용됩니다.
'데이터 카드 자료구조' 카테고리의 다른 글
[데이터 카드 자료구조] 헤더, 콘텐츠, 푸터, 메타로 구성된 데이터 카드 1 (12) | 2024.10.26 |
---|---|
[데이터 카드 자료구조] 병렬처리에 적합한 데이터 카드 자료구조 (0) | 2024.10.24 |
[데이터카드 자료구조] 이벤트 로그를 위한 데이터 카드 자료구조 (0) | 2024.10.23 |
[데이터카드 자료구조] 데이터 카드 자료구조에서의 랜덤 모델 (5) | 2024.10.23 |
[데이터카드 자료구조] 데이터 과학 분야에서의 데이터 카드 활용 (5) | 2024.10.22 |