[ 낙관적 오프라인 잠금 ] 특징 충돌이 감지되면, 트랜잭션을 롤백해 동시 비즈니스 트랜잭션 간의 충돌을 방지한다. 한 세션에서 커밋하려는 변경 내용이 다른 세션의 변경 내용과 충돌하지 않는지 확인하는 방법이다. 세션 간의 충돌 가능성이 낮다고 간주될 때 사용하는 방법이다. 가장 일반적인 구현 방법은 시스템의 각 레코드에 버전 번호를 연결하는 것이다. 세션 데이터에 저장된 버전을 레코드 데이터의 현재 버전과 비교하는 것을 의미한다. 낙관적 오프라인 잠금을 구현하는 데 있어서 버전 번호 대신 수정 타임스탬프를 사용하는 것은 좋지 않다. 시스템 클록은 신뢰할 수 없고, 여러 서버 간에 작업을 조율하는 경우, 더욱 신뢰하기 어렵기 때문이다. 버전 번호를 사용할 때 문제점 일관성 없는 읽기의 문제가 해결되지 않..
Elasticsearch Node의 역할을 설정하지 않고 실행하게 되면, 해당 Node는 Master, Data 역할을 부여받게 됩니다. 이후 elasticsearch.yml 파일을 수정해서 Master 역할만 설정하게 되면, 에러가 발생하게 되고 이를 해결한 과정입니다. elasticsearch.yml 파일을 수정하지 않고, 그대로 실행 첫 번째로 elasticsearch.yml 파일을 수정하지 않고 실행하게 되면, Master 및 Data 역할을 포함한 모든 역할을 맡은 채로 실행됩니다. $ bin/elasticsearch # Elasticsearch Node 실행 elasticsearch.yml 파일에 node.roles를 master로 설정하여 실행 elasticsearch.yml 파일을 아래와 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/rWcd2/btrj4WR1c8I/3PdR1SjPktKermj0VfZ0sK/img.png)
Lucene에서 색인을 하는 과정 우선 lucene에서는 크게 다음과 같은 과정으로 색인을 하게 됩니다. Lucene에서는 Index File을 생성할 때, Index File Format인 Segment File을 통해 색인을 하며, Segment File이 생성되면, DocumentWriter를 통해 색인하는 과정이 만들어지고 색인이 완료되면, Commit을 통해 실제 데이터 파일에 쓰입니다. 하나의 Index에는 여러 개의 Segment File이 존재하는데, 여러 개의 Segment File이 Commit이 되면, SegmentMerger를 통해 merge 작업을 수행하는 흐름으로 색인을 하게 됩니다. 여기서 여러 개의 Segment File이 존재하는 이유가 궁금하실 수도 있는데요. 색인이 된 ..