DB팀과 대화를 하면서 알게된, mongoDB에서 대용량 데이터 pagnination 처리(페이징 처리)를 할 때 주의할 점에 대해서 정리한다. mongo 쿼리로 페이지네이션 처리를 하는 가장 간단한 방법은 아마 아래와 같을 것입니다.1. 전체 데이터 개수를 구해서, 원하는 사이즈로 나눠서 순회를 돌린다.2. 쿼리는 sort, skip, limit 순서대로 사용한다. mongo에 대용량 데이터를 읽거나 쓸 때 모두 필요한 방법입니다.아무래도 한번에 많은 데이터를 불러오면, API 서버와 MongoDB 서버 모두에서 과도한 메모리를 사용하게 되고, 시스템이 다운되거나 성능이 저하될 수 있습니다. 그러나 여기서 skip 연산자를 무분별하게 사용할 때도 성능 저하가 발생될 수 있다는걸 알고 있나요? 저는 몰랐..
MongoDB
Go 서버에서 mongoDB에 데이터를 넣을 때 추가할 수 있는 신기한 기능(?)을 리팩토링 코드 리뷰를 받으면서 알게되어 그 내용을 정리하여 글을 쓰고자 한다.리뷰받은 코드는 다음과 같다.types.DataToUpdateInMongo{ ... TotalTradingVolume: totalTradingVolume.String() ...} 여기서 TotalTradingVolume 엄청나게 큰 숫자 값(블록체인 서비스다보니 기본 단위가 10^18 이기 때문)이다. 이래저래 사칙연산도 필요하다 보니 decimal.Deciaml 타입인 totalTradingVolume을 변수로 계산을 마친 후, 이제 mongo db 저장을 위해 최종 구조체에 값을 저장하려고 하는 코드이다. mongo에 이..