제미나이야 고마워: mongodb -> pgsql
개인적으로 유지하고 있는 데이터 수집 & 정리 & 봇 제공 시스템이 하나 있다.
컬렉션마다 다르지만 최초 데이터 수집은 2021년 가을부터인데, 중간중간 멎었을 때도 있지만 아직까지 대부분의 데이터 수집을 계속 하는 중이다. 처음에는 해봐야 얼마나 되겠어 라는 생각으로 대충 mongodb 에 때려넣었는데, 컬렉션이 새로 생길때마다 이름도 대충짓고, 인덱스도 대충 걸고, 스키마 정리도 안 해두었더니 유지보수가 꽤나 어려워졌다.
그리고 vultr 에 띄워둔 mongodb 인스턴스의 block storage 용량이 부족할때마다 조금씩 늘렸는데, 이제 용량도 크고 백업할때마다 CPU도 많이쓰고 ... 처음엔 한달 10만원쯤이었는데, 이제 순수하게 mongodb 인스턴스 비용으로만 한달에 40만원이 나가게 되었다. 안되겠다, 안되겠어.
1. 작업실에 있는 적당한 스펙의 리눅스 머신 확보.
2. 충분히 큰 SSD 붙어있는지 확인.
3. docker 로 pgsql 볼륨 지정해서 띄움.
4. 1년 이상 업데이트가 없는 mongodb collection 은 제외하고 모든 collection 리스팅
5. Document 개수가 1억개 넘어가는 컬렉션이 7개. 제일 큰게 7억개.
6. mongodb collection -> pgsql table 로 1:1 대응. 이번에 만드는 테이블 이름은 규칙을 잘 정해서 이름만 보고 알수 있게 했다.
7. 일단 중요 컬렉션 17개에 대해서 pgsql 쪽으로에 backfill & realtime sync
를 하는 중이다.
pgsql로 옮기면서 스키마 문서 남기고, 설명 달아두고, 마이그레이션 툴 사용해서 테이블 하나씩 만들고 있으니 속이 다 시원하다. 코드&데이터 어느쪽이든 규모가 커지면 다루기 위해 준비해야 하는게 있는데 귀찮다고(혼자서 하면...) 미루면 부채가 계속 쌓여서 작은 수정 하나도 괴로워진다... 사실 예전같았으면 이런 마이그레이션 작업(데이터 뿐 아니라 관련 코드도 싹 갈아엎어야하니까)을 엄두도 못냈겠지만, AI 의 도움이 있으니 할만해졌다. Gemini 3 정도 오니까 이제 코드 작성 도구가 아니라, 정말 일을 이것저것 시키면서 작업을 하는 느낌이 좀 든다.
이번엔 웹으로도 잘 만들어서 광고나 붙여놔야겠다.