본문 바로가기

소프트웨어 이야기/데이터 저장소 + 시각화

[Redis]라이브 환경에서 설정 변경하기 config set 명령문을 사용하면, 레디스 서버를 재가동하지 않아도, 환경 변수 값을 변경할 수 있다. redis.conf 파일에서 사용할 수 있는 모든 환경변수들을 config set 명령문으로 변경할 수 있다. 그래서 maxmemory, memory 관리 정책 등을 변경해줘야할 때, 이 명령문을 사용하면 redis를 재가동하지 않아도 된다. 예시 CONFIG SET MAXMEMORY 100000 참고 자료 https://redis.io/commands/config-set
[Redis]메모리 관리 방식 조사 배경TTL이 만기된 캐시키들이 삭제(evicted)되지 않는 현상을 발견하면서, 레디스에서 메모리를 관리하는 방법이 궁금해졌다 알게된 것* 레디스는 아래의 세가지 상황 때, 메모리를 정리한다. A. 만료된 키를 가져올 때 B. 샘플링한 데이터 중에 만료된 키가 있는 경우 C. 메모리 관리 정책을 설정했을 때, 논리적인 데이터 사용량이 maxmemory를 초과한 경우 => 실제 사용량으로 잡히는 rss를 기준으로 메모리를 정리하지 않는다. * 레디스는 jemalloc을 쓴다. * 용량이 큰 데이터를 자주 썼다가, 지우면 파편화가 발생하기 쉽다. 그리고 데이터의 크기 편차가 크면, 파편화가 생기기 쉽다. 실제 사용량보다 rss가 높게 나온다는 거다. 이 경우를 해결하려면, 장비를 이전하는게 낫다. 데뷰..
(읽을거리)엘라스틱 서치 쿼리 성능 최적화 읽을 거리 Optimizing Elasticsearch Searches https://www.elastic.co/blog/found-optimizing-elasticsearch-searches
[MariaDB]RDB 속에서 NOSQL 사용하기 배경티셔츠의 속성을 저장하는 테이블이 있다고 생각해보자티셔츠의 팔 길이, 색상 등은 항상 저장되어야하는 속성이니 이러한 데이터는 고정 스키마를 사용하면 된다. 그런데 이 중 몇개의 티셔츠는 한정판 티셔츠이거나, 누군가 기증한 티셔츠여서 일반 티셔츠에서는 없는 속성을 갖고 있는 경우가 있다. 이러한 정보들을 RDB에 저장해야한다면, 어떻게 하는게 좋을까? 누가 기증한 티셔츠인지 저장해야하는 경우, 기증자를 의미하는 새로운 필드를 저장하는게 맞을까?전체 데이터 로우 중 5%만 이 필드가 필요한 경우, 새로운 필드를 사용하는게 맞을까? 이러한 경우 필요한 속성만 동적으로 저장할 수 있어야한다. 그러려면 고정된 스키마에 동적 스키마를 적용할 수 있어야한다. 즉 RDB 개념에 NOSQL 개념을 접목시킬 수 있어야..
[Cache]Redis vs Memcached VS 캐시를 사용할 때, Redis와 Memcached 중 어떤걸 선택해야하는지고민이 될 때가 있다. 그래서 실무에서 발생하던 사건들과 책과 구글에서 본 내용을 기반으로, 어떤 경우에 두 캐시가 각각 유용한지 정리해보려고 한다. Redis 장점- 디스크에 데이터를 기록하고 있기 때문에, Redis 메모리가 날라가도 데이터를 복구할 수 있다.( 스냅샷을 떠서, 이를 사용하는 RDB 방식과 Write / Update Event를 로그에 남겨서 이를 기반으로 복구하는 AOF 방식 두가지가 있다. )- 다양한 데이터 포맷을 지원한다. String, List, Set, Sorted sets, Hash 등의 데이터 포맷을 지원한다. 그래서 애플리케이션 단에서 편하게 데이터를 저장하고, 사용할 수 있다.- Memca..
[리서치]통계 처리 시스템 기업 사례 네이버 콘텐츠 통계 서비스 [215]네이버콘텐츠통계서비스소개 김기영 from NAVER D2 카카오 통계 서비스 [235]루빅스개발이야기 황지수 from NAVER D2 루빅스 기술 블로그 포스팅 : http://tech.kakao.com/2016/04/27/rubics/
[DB] 갈레라 클러스터의 특이한 점들 갈레라 클러스터를 사용하다가, 특이한 점을 발견했다.auto increment로 설정된 레코드의 ID값이 1씩 순차적으로 증가하는게 아니라,1, 3, 4, 6 이런식으로 불규칙하게 ID값이 증분하고 있었다. 왜냐하면 갈레라 클러스터에 묶여있는 데이터베이스 서버들이 각각 다른 ID값을 생성하게 하기 위하여AUTO INCREMENT의 증분값이 클러스터의 노드마다 각각 다르다고 한다. 이렇게 하는 이유는 모든 노드의 ID가 1씩 값이 증가한다면, ID가 컨플릭이 날 수 있기 때문이다. 참고 문서 멀티 데이터베이스 환경에서 AUTO INCREMENT 관리하는 방법 - http://codership.blogspot.kr/2009/02/managing-auto-increments-with-multi.html갈레라 ..
[DB] 갈레라 클러스터 주의사항 - 테이블 변경하기 갈레라 클러스터를 쓰고 있으면, 테이블 변경할때 마음의 준비를 좀 하고 DDL 명령문을 날려야한다. 경건하게 ALTER QUERY를 날려야한다 내가 지금 사용하고 있는 DDL 방식이 뭔지 확인해보고, 어떤 테이블들을 변경할건지, 서비스의 특성이 뭔지 등을 고려하여 테이블 변경 플랜을 짜야한다. 갈레라 클러스터에서 DDL 을 처리하는 방법은 두가지가 있다. TOI 와 RSU 방식이다.Default 방식은 TOI 이다. TOI TOI 방식은 클러스터에 묶여있는 DB SERVER들의 테이블들을 한방에 변경해주는 방식이다. 그런데 모든 DB SERVER에서 테이블 변경이 끝날 때까지, 클러스터에 들어오는 트랜잭션들을 처리하지 않고 쌓아둔다.만약에 세 대의 데이터베이스 서버로 클러스터를 구성했다면, 세 대의 서버..