[python] 파이썬에서 MongoDB의 스트리밍 데이터 처리하기

MongoDB는 많은 양의 데이터를 처리하고 저장하기에 적합한 유연한 NoSQL 데이터베이스입니다. 이번 글에서는 파이썬에서 MongoDB의 스트리밍 데이터를 처리하는 방법에 대해 알아보겠습니다.

MongoDB 스트리밍 데이터 처리를 위한 패키지 설치

우선 MongoDB에서 스트리밍 데이터를 처리하기 위해 pymongo 패키지를 설치해야 합니다. 아래의 명령을 사용하여 패키지를 설치할 수 있습니다.

pip install pymongo

MongoDB에 연결하기

먼저 pymongo를 사용하여 MongoDB에 연결해야 합니다. 다음과 같은 코드를 사용하여 연결할 수 있습니다.

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')

위의 코드에서 localhost:27017는 MongoDB 서버의 주소와 포트 번호입니다. 이 번호는 MongoDB가 실행 중인 로컬 머신에서 실행되는 경우 기본값으로 설정됩니다.

컬렉션 생성 및 데이터 입력

이제 MongoDB에 데이터를 저장하기 위해 새로운 컬렉션을 생성하고 데이터를 입력해보겠습니다. 아래의 코드를 사용하여 컬렉션을 생성하고 데이터를 입력할 수 있습니다.

db = client['mydatabase']
collection = db['mydata']

data = {'name': 'John', 'age': 30, 'city': 'Seoul'}
result = collection.insert_one(data)

위의 코드에서 mydatabase는 생성할 데이터베이스의 이름이고, mydata는 컬렉션 이름입니다. data 변수에는 입력할 데이터가 포함되어 있습니다. insert_one() 메소드를 사용하여 데이터를 컬렉션에 저장합니다.

스트리밍 데이터 처리하기

이제 MongoDB에서 스트리밍 데이터를 처리하는 방법을 알아보겠습니다. pymongo를 사용하여 MongoDB의 컬렉션을 감시하고 변경 사항을 확인할 수 있습니다. 다음과 같은 코드를 사용하면 됩니다.

from pymongo import MongoClient
from bson import ObjectId
import time

client = MongoClient('mongodb://localhost:27017/')
db = client['mydatabase']
collection = db['mydata']

query = {'_id': {'$gt': ObjectId('607ccb2b9a666f40208a27e0')}}
cursor = collection.find(query, cursor_type=CursorType.TAILABLE_AWAIT)

while cursor.alive:
    if cursor.next():
        # 변경된 데이터를 처리하는 로직 작성
        pass

    time.sleep(1)

위의 코드에서 CursorType.TAILABLE_AWAIT는 MongoDB 커서의 유형이며, 변경 사항을 계속해서 감시하는 역할을 수행합니다. query 변수는 커서가 읽을 데이터의 범위를 지정합니다. 이 코드는 _id가 주어진 ObjectId보다 더 큰 값을 가진 문서를 읽습니다.

커서가 살아있는 한, 변경된 데이터를 읽고 처리하는 로직을 수행합니다. 위의 예제 코드에서는 변경된 데이터를 처리하는 부분을 비워두었으며, 실제로는 데이터를 처리하는 로직을 작성해야 합니다.

마무리

이제 파이썬에서 MongoDB의 스트리밍 데이터를 처리하는 방법을 알아보았습니다. pymongo 패키지를 사용하여 MongoDB에 연결하고 데이터를 입력하고, 변경 사항을 감지하는 코드를 작성할 수 있습니다. MongoDB의 강력한 기능을 활용하여 많은 양의 데이터를 처리하고 실시간으로 동적인 애플리케이션을 개발할 수 있습니다.

참고 자료