라벨이 데이터베이스인 게시물 표시

블록체인은 분산데이터베이스이다.

블록체인이 뭘까? 한마디로 말하면 분산 데이터베이스이다. 때문에 저장공간의 낭비가 심하고 원자성이 필요한 데이터 검증 때문에 연산과정이 복잡해지고 컴퓨팅 파워가 많이 든다. 암호화폐에서 이를 사용하고 있다. 화폐가 그동안 권력자들이 삥땅치기 위해 불투명하게 거래되었는데 암호화폐는 모두 공개되어 삥땅 칠 수 없다. 양자컴퓨터는 삥땅 칠 수도 있겠다. 여러 암호화폐가 있지만 비트코인은 디지털 금처럼 되것이고 이더리움은 업그레이드 후 빨라 질 것이다. 3세대인 이오에스 같은 애들이 주도하게 될꺼 같다. 결국 데이터베이스는 TPS 높은 놈이 장땡 아닌가. 속도를 위해 클레이 같은 애들은 검증에 참여하는 노드를 소수만 운영하여 개선 했듯이 이 또한 방법이 될 것이며 개발자 편의성이 좋은 엔진 같은 코인도 주목 받을 것이다. 기존 데이터베이스는 샤딩이니 RAC니 하며 복제본으로 넓혀가고 블록체인은 병렬에서 최적화를 위해 위원회 방식으로 좁혀간다. 이 둘이 만난 대역에 미래가 있다. 결국 기술은 사람을 향하니까.

대용량 데이터 처리 하면서 겪은 일들

하루에 데이터가 약 140만건 정도 쌓이는 서비스 이었다. 처음엔 몽고디비 하나로만 이를 처리하였다. 데이터 쌓이는 것은 잘 쌓였다. 웹 모듈에서 모바일에서 전송하는 데이터를 받아서 몽고디비에 쌓는 로직으로 구성했다. 갑자기 로그 파일 생성에 욕심이 생겨서 이를 추가해보았다. 하지만 서버에 로그 파일 생성하는 부분에서 의외로 오류가 많이 발생하였다. 웹 모듈이 죽는 상태가 많이 발생하였다. crontab 에 웹 모듈 실행여부를 체크하여 프로세스가 죽어 있으면 다시 실행시키는 스크립트를 생성해서 돌렸으나 작동되지 않았다. 스크립트는 복잡한 로직은 작동이 되지 않는거 같았다. 이런 내용을 실행하는 프로그램을 작성해서 돌렸다. 이렇게 몇달 운영하다 보니 매우 비효율적이란 생각이 들었다. 웹 모듈에서 자체 제공하는 로그를 이용하기로 하고 이렇게 구성했더니 로그는 훨씬 원활하게 돌아갔다. 진작에 웹 모듈에서 제공하는 로그를 사용할 껄 그랬다. 몽고디비에서 쌓이는 데이터를 가지고 대시보드를 작성하기 위한 서비스를 개발했다. 이때 문제가 발생했다. 디비에 계속 쌓이는 모듈에 데이터를 검색할 때마다 부하를 주어서 데이터 누락이 발생했다. 몽고디비 자체가 성능을 위해서 데이터 정합성을 포기하도록 설계되었다는 것이다. 문제를 해결하기 위해서는 상태 모니터링용은 관계형 데이터베이스를 사용하기로 했다. 마이에스큐엘을 설치하고 웹 모듈에서 상태 모니터링용 데이터는 마이에스큐엘에 저장하도록 분기 하였다. 대시보드용 서비스는 마이에스큐엘에서 데이터를 가져와 보여주었다. 오래된 데이터에서 이력을 보는데는 몽고디비에서 바로 검색해도 성능 저하는 없었다. 컬렉션을 날짜별로 저장되도록 구성하였는데 현재 저장되는 컬렉션에서 검색을 할 경우 성능저하가 발생하였다. 현재 저장되고 있는 않는 어제나 지난 날의 컬렉션의 자룔 검색하면 성능저하는 발생되지 않았다. 결국 데이터베이스는 두개로 운영되었다. 관계형 데이터베이스는 현황용 데이터를 저장하고  몽고디비는 저장용 데이터를 저장하도록 설계하였다. 이런