반응형

cache

    Lucene의 segment가 immutable한 이유

    Elasticsearch의 Document의 수정, 삭제 동작이 발생되었을 때 실제 Document를 구성하고 있는 각 shard 내부 Segment는 바로 지워지지 않는다. 대신 해당 세그먼트가 지워졌다고 mark만 하고 수정되었을 경우에는 새로운 세그먼트를 할당한다. 이렇게 동작하는 이유는 Lucene레벨에서 비용을 아끼기 위해서 사용된다고 알고는 있었는데 정확하게 왜 segment가 immutable한지 알지 못해서 정리해 봤다. 1. 동시성 이슈 우선 개인적으로 생각했을 때는 immutable한 데이터의 경우 수정에 의한 고민을 할 필요가 없기 때문에 multi thread 환경에서 특별한 race condition을 고려할 필요가 없어서 이점이 있다고 생각했다. 우연한 기회에 해당 부분에 대해 ..

    [번역] Redis partitioning

    파티셔닝 공부를 위해 아래 페이지의 내용을 번역하며 정리해봤다.https://redis.io/topics/partitioning Redis Partitioning: 여러 레디스 인스턴스로 데이터 분배하기 파티셔닝은 데이터를 여러 레디스 인스턴스로 분할하여 모든 인스턴스가 자기가 소유한 키의 집합들만 소유하도록 하는 프로세스이다. 먼저 파티셔닝 개념에 대해 설명하고 레디스 파티셔닝에 대한 대안을 소개한다. 파티셔닝이 효율적인 이유 레디스에서 파티셔닝을 하기는 다음 두개의 이점이 있다. 1. 하나의 컴퓨터로 메모리의 양이 제한되는 경우에 파티셔닝을 사용하여 더 큰 데이터베이스와 메모리를 가질 수 있다. 2. 여러 개의 코어와 여러 대의 컴퓨터에 연산 능력을 확장하고 네트워크 대역폭을 여러 대의 컴퓨터와 네트..

    Redis Keys 명령어의 대체 Scan 설명

    Redis에서 Keys 명령어는 성능상으로 문제가 있다. Redis의 One Thread 정책으로 인해서 해당 작업을 처리하기 위해서 서버가 멈춰버린다. 그래서 이를 대안하기 위해서 Redis의 Scan이라는 기능을 사용할 수있다. Scan은 cusor를 기반으로 동작하는 Itorator이다. 처음시작은 scan 번호를 0으로 지정해서 시작한다. 그러면 두 개의 값을 반환을 하는데 첫번째 값은 다음 cursor의 번호이고 그 다음 값은 키값들이 출력된다. 다음 데이터를 찾기위해서는 1번 값에서 반환된 커서 값을 이용해서 검색하면 된다. (scan 9) 그리고 scan 후 나온 다음 cursor의 값이 0인경우 그 이후에 값이 없음을 의미한다. Option #Count Option scan은 모든 반복에서..

    스프링 CacheManager Ehcache

    스프링에는 데이터를 캐시로 보관할 수 있는 캐시 기능을 제공한다. 그 중 대표적으로 사용되는 Ehcache(ehcache-spring-annotation)에 대해 알아보자. 이를 사용하는 가장 대표적인 이유는 다음과 같다. 1. 꾸준하게 동일한 데이터 2. 조회하여 데이터를 가지고 오는데 비용이 많이 소모되는 경우 [설정방법] pom.xml 123456net.sf.ehcacheehcache2.10.4Colored by Color Scriptercs applicationContext.xml 수정 applicationContext-cache.xml 추가 1234567891011121314151617181920212223 Colored by Color Scriptercs Ehcache 설정 파일 생성12345..

반응형