[개발이야기] mongo DB 좋군요

in #sctlast year

upbit에서 연일 큰폭의 상승을 보여주는 코인들이 넘쳐나고 있습니다. 이렇게 급등하는 친구들을 찾을 수 있는 뭔가 방법이 있지 않을까 해서 작업을 시작해봅니다.

우선 거래 데이터를 모아야겠지요. 지난 번에 upbit에서 실시간 데이터를 가져오는 방법에 대해서는 소개를 했었는데요. 이번에는 실시간 거래 데이터를 저장하는 방법에 대한 이야기입니다.

데이터를 저장하는 방법으로는 여러가지가 있겠지만 데이터베이스에 저장하는 것이 관리가 가장 편합니다. 사용할 수 있는 다양한 데이터베이스가 존재합니다만 그중 mongo DB를 사용해보기로 했습니다.

우선 mongo DB를 PC에 설치해야합니다.

아래 사이트에 가서 mongo DB최신판을 설치합니다. 설치하는 과정에서 monogo DB compass 설치가 되지 않아서 일단은 빼고 설치했습니다.

https://www.mongodb.com

설치가 끝나면 bin 폴더에 있는 mongod.cfg를 열어서 필요한 값을 설정합니다. local host에서 사용할 예정이면 특별히 수정할 필요가 없습니다. 전 IP 설정이 필요해서 cfg 파일을 변경하였습니다.

그후 command 창을 열어서 monogo DB를 실행합니다.

mongod --config .\mongod.cfg

이제 mongo DB를 사용할 준비가 끝났습니다.


파이썬에서 mongo DB를 사용하기 위해서는 pymongo 패키지를 사용하면 됩니다.

pip install pymongo

사용법은 아주 간단한데요. 원하는 DB 이름으로 생성만하면 사용이 가능합니다.

아래 예는 'test_db'라는 DB를 만들고, market이라는 테이블을 만든 후 tick_data를 추가한 경우입니다.
mongo DB에서는 테이블을 collection, tuple을 document라고 부르고 있으니 문서 읽을 때 참고하세요.

from pymongo import MongoClient

#MONGO_DB_HOST = 'localhost'
MONGO_DB_HOST = '192.168.0.13'

client = MongoClient(MONGO_DB_HOST, 27017)
db = client['test_db']
tick_data = {'id':124, 'name':"STEEM", 'date':'2020:02:19', 'low':1, 'final':2} 
db.market.insert_one(tick_data)

colls = db.market.find()
for col in colls :
    print(col)

이 정도만 알면 mongo DB에 데이터를 입력하는데는 문제가 없는 것 같습니다. 추가적으로 필요한 함수들은 공식 API 사이트를 참고하면 될 것 같습니다.

https://api.mongodb.com/


mongo DB에 데이터가 잘 저장되고 있는지 확인이 필요한데요. 이때 사용할 수 있는 툴이 mongoDB Compass입니다. 이 툴도 아래 사이트에서 받을 수 있습니다.

https://www.mongodb.com

프로그램 설치 후 실행하면 mongo DB 주소를 입력하는 부분이 있습니다. 이때 아래와 같이 입력하면 됩니다.

mongodb://ip

접속을 해보니 아래와 같이 실시간 데이터를 잘 저장하고 있군요.

저장하는 데이터는 크게 두 종류입니다.
all_symbol_one_tick은 5초에 한번씩 upbit에 상장되어 있는 모든 암호화폐의 현재 상태(가장 최근에 거래된 한 건)가 저장됩니다. 그리고 아래에 있는 테이블은 요즘 자주 급등락을 반복하는 코인들의 실거래 내역 전부를 저장하고 있습니다.

과거 데이터는 1분봉 이하는 받아볼 수가 없기 때문에 제대로된 분석을 하려면 이렇게 실거래 데이터를 모두 모두 모아봐야 할 것 같습니다.

하루 정도 저장된 데이터를 보고 어떤 insight를 발견할 수 있기를 기대합니다.

Sort:  

JCAR 2월 구독보팅입니다.
날마다 좋은 날 되세요.

대단하십니다. ㅎ 회사 이외에는 거들떠도 안보는데...

트아님 능력에 항상 감탄을....

Hi @tradingideas!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.392 which ranks you at #2525 across all Steem accounts.
Your rank has dropped 102 places in the last three days (old rank 2423).

In our last Algorithmic Curation Round, consisting of 93 contributions, your post is ranked at #23.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server