전체 글31 ElasticSearch 동시성 제어 만약에 서로 다른 클라이언트가 같은 document를 동시에 업데이트 하게 되면 어떻게 될까? 이 때 동시성 제어를 해주지 않으면 데이터 정합성에 큰 문제가 생길 수 있다. ElasticSearch에서 동시성 처리를 하기 위해서는 Optimistic Concurrency Control 방법을 사용한다. Optimistic Concurrency Control 각 document는 _seq_no 와 _primary_term 이라는 정보가 있다. 특정 데이터를 업데이트 할 때 이 두 값을 사용하면 동일한 document에 대한 두게의 다른 요청 중 하나만 처리되고 다른 하나는 실패한다. 이 때 document가 실패한 경우 자동으로 재요청을 보내도록 설정할 수 있는데 이 때 retry_on_confilct=자.. 2022. 7. 23. ElasticSearch mapping 엘라스틱 서치에서 맵핑은 인덱스의 스키마를 정의하는 것이다. 엘라스틱 서치는 기본적으로 정의되지 않은 필드의 데이터인 경우 동적으로 타입을 맵핑해주는 기능이 있지만 이 경우 개발자가 의도하지 않은 타입으로 맵핑 될 수 있다. 예를 들어 타임 스탬프를 epochtime 형태로 저장하기 위해 timestamp : 1658564541298 를 저장했다면 해당 필드의 타입이 정적으로 맵핑되지 않았을 시 엘라스틱 서치는 이름 날짜 데이터로 인식하지 못하고 number type로 지정한다. 따라서 의도하지 않은 타입 맵핑을 피하기 위해선 동적 맵핑에 의존하지 않는 것이좋다. 맵핑의 기본 형태는 다음과 같다. { "mappings": { "properties" : { "필드명" : { "type": 타입 } } } .. 2022. 7. 23. Node.js 작동 원리 (3) - 이벤트 루프 지난 번 살펴봤던 강의는 이벤트 루프 작동원리를 이해하기 쉽게 풀어서 설명해주었다. 그러나 이벤트 루프 내부의 각 6가지 phase가 정확하게 어떤 역할을 수행하고 있는지는 자세하게 설명해주지 않아 궁금증이 완전히 해결되지는 않았다. 따라서 각 phase에 대해 좀더 알아보기로 했다. 6가지 phases 이벤트루프는 다음의 6가지 phase로 이루어져있으며 각 phase가 순차적으로 실행된다. 각 phase는 FIFO형태의 큐로 이루어져있고 여기에 실행될 콜백들이 저장되어있다가 해당 phase의 실행 순서가 되었을 때 실행된다. 각 phase는 큐의 모든 콜백들을 다 실행시키거나 실행할수 있는 제한 횟수에 도달하면 종료되고 그 다음 phase가 실행된다. timers : setTimeout(), setI.. 2022. 6. 25. Amazon DynamoDB Design Pattern 이 포스트는 Amazon DynamoDB Workshop & Labs을 참고하여 정리한 study log 입니다. Adjacency List Design Pattern Amazon DynamoDB에서 다대다 관계를 모델링하는 데 유용한 설계 패턴이다. 그래프 데이터를 표현하는데 유용하다. 보통 그래프에서 node가 되는 데이터는 partition key로, 해당 node와 연결된 target node는 sort key로 표현할 수 있다. 이 패턴의 장점은 데이터 중복을 최소화하며 node와 연관되어있는 다른 데이터를 간단하게 query 할 수 있다는 점이다. Schema Modeling 관계형 모델로 짜여진 영화 데이터를 비정규화하여 DynamoDB의 테이블 형식으로 바꿔보자. 1. Common Acce.. 2022. 5. 15. 이전 1 ··· 4 5 6 7 8 다음