안녕하세요?
오전에 비가 어마무시하게 내리더니 지금은 소강상태로 접어드나 봅니다.
이런 비오는 날에 아버지와 오랫만에 부침개를 해서 먹었는데 역시 날씨가 많은 도움을 주었습니다.
지난주에 개발서버와 Mysql을 세팅했는데 아무래도 custom json을 쌓으려면 mongoDB가 RDB보다 비슷한형태를 가지고 있어서 개발팀원들의 요청도 있고 해서 추가 설치했습니다.
제가 처음에 IT쪽에 입문했을때는 대부분 회사에서 오라클만 DB라고 생각하고 많이들 사용하던 시기라서 SQL, 관계형데이터베이스모델링등 학습도 많이 했는데 Sybase, DB2, MSSQL, Mysql, PostgreSQL등 점점 더 다양한 RDBMS가 나오더니 요즈음에는 기존 RDBMS에서 이야기하는 관계도 없는 DB 즉 NoSQL이라는 비관계형데이터베이스가 대세로 뜨더니 그중에 대표격인 MongoDB를 많이 사용하네요.
그럼 RDBMS와 NoSQL(MongoDB)는 어떠한 차이점이 있을까요?
여러가지 차이점이 있겠지만 두 종류의 DB에 들어가는 데이터의 포맷이 다릅니다.
예를 들어 e-commerce의 주문데이터를 RBMS에 들어갈때는 주문자정보, 주문한 상품정보, 주문한상품과 주문자Mapping정보등이 별도의 테이블에 들어가서 각각의 테이블은 다른테이블에 없는 데이터만을 가지고 있습니다.
그러나 NoSQL(MongoDB)는 주문정보를 넣을때 위 3개의 정보(주문자정보, 주문한 상품정보, 상품과 주문자정보매핑정보)를 하나의 데이터로 모두 집어넣게 됩니다.
이러한 NoSQL의 최대의 장점은 대용량데이터를 다룰때 속도를 느리게 하는 JOIN을 사용하지 않는다는 점과 또한 자주 변경되지 않은 데이터를 다룰때 매우 효율적입니다.
https://chainz.cryptoid.info/ltc/
우리가 자주 보게되는 암호화폐의 TX정보를 가지고 있는 explorer입니다.
이러한 블럭정보도 모두 Chain에서 바로 데이터를 읽는게 아니라 모든 블럭정보를 MongoDB에 넣고 필요한 데이터는 해당 DB에서 불러오는 방식으로 개발하게 됩니다.
그래서 스코판 개발팀에서도 sct, sctm 채굴현황이나 스팀엔진등의 마켓현황등 무언가 의미있는 통계등을 내기 위해서는 custom_json을 계속 Mongodb에 저장해야 된다는 생각입니다.
Mongodb에 저장된 custom_json은 아래와 같은 포맷으로 계속 저장되게 됩니다.
물론 모든정보를 NoSQL에만 저장하는것은 아니고 시의적절하게 RDBMS와 NoSQL을 사용하면서 스코판 유저들에게 유의미한 통계정보를 제공하려고 합니다.
관련해서 의미있는 통계정보가 필요한게 있으면 댓글로 남겨주시면 개발팀내에서 회의를 거쳐 우선순위를 잡도록 하겠습니다. steemcoinan을 통해 운영진들을 포함해서 sct커뮤니티내의 모든 회원분들이 각자가 원하는 것을 이루어갔으면 좋겠습니다.