database 11

카산드라 아키텍쳐

다뤄볼 내용 cluster 토폴로지 구성 노드 p2p 방식 - 어떻게 cluster health를 유지하는지 데이터 CRUD 방식 - cassandra에 어떤 영향을 주는지 노드 안의 구성요소 Data Centers and Racks rack : node의 논리적 집합 data center : rack의 논리적 집합 Gossip and Failure Detection - 가십 프로토콜 유래 : 신뢰할 수 없는 경로를 통해 정보를 전달하는 방법 연구하는 과정 탈중앙화된 분산시스템에서 데이터 결함을 발견하기 위해 사용한다. (전체에게 알리지 않아도 전체가 알게 되는 것) gossiper는 node 상태 list를 갖고있으며 syn/ack/ack2를 주고받는 3-handshake 방식으로 1초마다 node 상..

database/noSql 2020.12.08

mysql server has gone away

job scheduler로 동작주기가 15시간인 모듈을 개발하였다. 서비스 올리고 나니 처음 동작할 때 무조건 "ERROR 2006 (HY000): MySQL server has gone away"가 났다. db 서버와 연결이 끊긴 거 같은데 구글링해보니 원인은 mysql 기본설정값과 연관이 있다. 1. max_allowed_packet = 16M insert, update문 등으로 인해 전송패킷 사이즈가 크면 발생한다. 쿼리 내용이 많아서 그런 것이므로 값을 늘려주면 된다. 기본값은 1M로 설정되어 있을 것이다. mysql을 docker로 운영하는 경우 my.cnf 파일에서 값을 변경하여 서버가 재시작되더라도 값이 반영될 수 있도록 하자. 2. wait_timeout = 28800 wait_timeou..

database/sql 2020.08.05

tinyInt(1) 과 tinyInt(2) 차이

mysql schema에서 flag값을 저장하기 위해 tinyint(1) 를 사용하였다. 그러다 tinyint(2) 를 사용한 table을 보게 되어 이 둘의 차이점을 정리하려 한다. 결론부터 말하자면, ZEROFILL 옵션 사용 유무 차이가 있을 뿐 실제 저장공간 및 입력 가능 한계는 동일하다. - ZEROFILL INT의 괄호 옵션 기능은 ZEROFILL로, 숫자 값의 앞쪽에 0을 패딩할 것인지 설정하는 옵션이다. +------------+-------------+ | tinyint(1) | tinyint(2) | +------------+-------------+ | 3 | 03 | | 1 | 01 | | 10 | 10 | +------------+-------------+ 참고: https://s..

database/sql 2020.07.07

mongodb cluster 구축

나중에 내가 써먹으려고 쓰는 mongodb cluster 구축. 책을 읽고 내용을 정리해본다. mongodb는 mysql과 다르게 대소문자를 구별한다. mongodb cluster 1) 실제 데이터를 저장하는 shard 2) 요청을 적절한 shard로 배분해주는 mongos process 3) cluster의 설정을 유지해주는 mongod 설정서버 chunk 기본 설정 크기 : 64MB balancing : 충분한 수의 chunk가 확보되면 다른 shard로 데이터를 이동한다. 데이터 고르게 분산, 전송량 최소화 mongos : 사용자와 클러스터 간의 접점, 단일 서버처럼 다룰 수 있게 해준다. 1) 사용자 document 입력 2) mongos가 문서의 shard key 확인 3) chunk 조회, 알..

database/noSql 2019.12.20

GridFs

MongoDB의 Document의 최대 크기는 16MB이다. 그보다 큰 document는 GridFs를 사용해야 한다. GridFs는 모든 파일을 Bson document 형식으로 처리하여 16MB가 넘은 데이터를 분산하여 저장하는 명세이다. 16MB가 넘지 않더라도 전체 파일을 메모리에 로드하지 않고도 저장하는데 유용하다. 파일 하나로 저장하는 것이 아니라 255KB 이하 크기의 chunk로 나누어 저장하는데, fs.chunks, fs.files 2개의 collection을 통해 파일 청크와 메타데이터를 관리한다. fs.chunks { "_id" : , "files_id" : , "n" : , "data" : } fs.files { "_id" : , "length" : , "chunkSize" : , ..

database/noSql 2019.11.10