본문 바로가기

BE 공부/검색엔진7

[OpenSearch]클러스터 구성: 마스터 노드 + 데이터 노드 🔍 OpenSearch란?OpenSearch는 빠른 검색 기능을 제공하는 데이터베이스 시스템입니다.대량의 데이터를 효과적으로 저장하고 검색할 수 있어, 로그 분석, 데이터 모니터링, 검색 엔진 구축 등에 사용됩니다. OpenSearch는 단순한 데이터베이스가 아니라 클러스터(cluster) 라는 개념을 사용해 여러 개의 서버(노드)를 조합하여 동작합니다. 이때, 클러스터 내에서 각 노드는 마스터 노드(Master Node) 와 데이터 노드(Data Node) 로 역할이 나뉩니다. 이 글에서는 OpenSearch 클러스터를 구성할 때 마스터 노드와 데이터 노드를 어떻게 배치하는지, 그리고 각각의 역할이 무엇인지 쉽게 설명하겠습니다.🚀 OpenSearch 클러스터란?📌 클러스터란 무엇일까?단일 서버에서.. 2025. 3. 7.
[ElasticSearch] 낙관적 동시성 제어(Optimistic Concurrency Control, OCC) 1. updateItem 구현 고민Elasticsearch를 사용해 updateItem 기능을 구현하려고 했습니다. 하지만 단순한 업데이트 작업을 넘어, 데이터 일관성(Consistency)과 동시성 제어에 대한 고민이 필요했습니다. 특히, 동시에 여러 작업이 일어나는 경우 어떻게 처리해야 할지가 핵심 이슈였습니다.2. ACID에 대한 고민일반적인 데이터베이스는 ACID(Atomicity, Consistency, Isolation, Durability) 특성을 제공합니다. 하지만, Elasticsearch는 완벽한 ACID를 보장하지 않기 때문에 여러 업데이트 작업이 동시에 발생하는 상황에서 데이터 일관성을 유지하는 것이 어려울 수 있습니다.3. 낙관적 동시성 제어 방법Elasticsearch에서 동시성.. 2024. 9. 9.
[ElasticSearch] 메모리, 디스크, 캐시 접근 과정 1. 메모리(Memory)JVM 힙 메모리엘라스틱서치가 자바 가상 머신(JVM) 위에서 실행되기 때문에 JVM 힙 메모리를 사용주로 필드 데이터(Field Data), 집계(Aggregations), 필터 캐시(Filter Cache), 리퀘스트 캐시(Request Cache) 등을 저장각 용어 설명필드 데이터(Field Data):데이터를 메모리에 로드해 문자열 필드를 기준으로 하는 검색 및 집계 작업에서 주로 사용집계(Aggregations):엘라스틱서치가 복잡한 집계 쿼리를 처리할 때 데이터가 메모리에 로드됨필터 캐시(Filter Cache):반복적으로 사용되는 검색 필터의 결과를 캐싱하여 검색 성능을 향상리퀘스트 캐시(Request Cache):동일한 요청에 대해 반복적으로 발생하는 검색 결과를 .. 2024. 8. 29.
[ElasticSearch] 인덱싱과 세그먼트 문서 인덱싱과 세그먼트 생성[문서 1 인덱싱]역 인덱스에 "정말", "멋진", "날씨", "입니다"라는 단어가 추가"정말"이라는 단어는 문서 1의 위치(예: 1번째 단어)로 저장문서 1의 역 인덱스를 포함하는 세그먼트가 생성[문서 2 인덱싱]역 인덱스에 "오늘", "날씨", "정말", "좋습니다"라는 단어가 추가"정말"이라는 단어는 문서 2의 위치(예: 3번째 단어)로 저장문서 2의 역 인덱스를 포함하는 또 다른 세그먼트가 생성[문서 3 인덱싱]역 인덱스에 "정말", "날씨", "좋다"라는 단어가 추가"정말"이라는 단어는 문서 3의 위치(예: 1번째 단어)로 저장문서 3의 역 인덱스를 포함하는 또 다른 세그먼트가 생성세그먼트 내의 데이터 구조세그먼트 A:단어 목록: "정말", "멋진", "날씨", "입니.. 2024. 8. 29.