분류 전체보기

JAVA

[JAVA] JAVA 메모리 영역과 JVM 구조 - Stack, Heap, Method

프로그래머라면 한 번쯤은 JAVA 언어를 통해서 코드를 작성해봤을 것이다. 하지만, 내가 작성한 JAVA Code 가 어떤 식으로 작동하는지 정확하게 알고 있는 프로그래머는 많지 않을 것이다. 그럼 JAVA 가 어떤식으로 작동하는지 알아보자. 자바에서 실행 과정을 단계별로 나눈다면 크게 컴파일 타임(Compile Time), 클래스 로딩 타임(Class Loading Time), 런타임(Run Time)으로 나눌 수 있다. 컴파일 타임은 소스코드를 작성한 후 javac와 같은 컴파일러를 사용해 . java 파일을. class 파일(바이트 코드)로 컴파일하는 단계이다. 클래스 로딩 타임은 JVM이 클래스 파일을 읽어 메모리에 로딩하는 단계이다. 이 과정에서 클래스를 검증하고, 필요한 메모리 공간을 할당하고..

Elasticsearch

[Elasticsearch] Disk-based shard allocation

Disk-based shard allocation 이란? disk-based shard allocation 이란 elasticsearch 서버 내부의 디스크를 파악하고 효율적인 데이터 분산처리를 위한 자동화 옵션이다. elasticsearch는 새로운 샤드를 어디에 할당할지 결정하기 전에 disk-based shard allocator 를 통해서 노드의 사용 가능한 디스크 공간을 고려한다. disk-based shard allocator 의 옵션은 elasticsearch.yml 파일을 통해 수정하고 재시작하거나 cluster-update-setting API를 통해 운영 상태의 클러스터에서도 변경할 수 있다. 기본적으로 disk-based shard allocator 는 1) low watermark ..

Elasticsearch

[Elasticsearch] text, keyword 타입

text, keyword 타입이란? Elasticsearch에서 지원하는 데이터타입 요소로써 text, keyword 모두 문자열을 나타내기 위한 타입이다. 하지만, text 타입은 Full-text search를 위해 토큰이 생성되지만, keyword 타입은 Exact Matching을 위한 토큰이 생성된다. 여기서 Full-text search 이란, 문서의 전체 텍스트에 키워드나 구문을 일치시켜 관련 문서를 검색할 수 있는 기술이다. Exact Matching 은 검색 중인 정확한 용어 또는 구문과 일치하는 문서만 반환하는 검색 기술이다. 그럼 직접 analyzer를 지정하여 Full-text search, Exact Matching 가 어떤 식으로 다른지 확인해 보자. 1. Full-text se..

Elasticsearch

[Elasticsearch] 검색(Search)

검색과정이란? 검색과정은 요청된 검색어를 분석한 다음 해당 검색어를 토대로 Inverted Index에서 검색을 진행한 후에 매칭되는 결과를 검색결과로 표시해주는 일련의 행위를 말한다. Inverted Index Inverted Index 란 문자열을 분석한 결과를 저장하고 있는 구조체이다. 예를 들어 Elasticsearch에 위와 같은 두 개의 문서를 색인(Indexing) 시켰다고 가정해 보자. 첫 번째 Document id는 1 이고 두번째 Document id 는 2라고 가정하자. 그럼 Elasticsearch 엔진은 색인과정에서 문자열을 구성하고 있는 단어들을 분석기(analyzer)를 통해서 토큰으로 분류하고 해당 토큰이 어떤 문서에 있는지 정보를 추가해 줘서 오른쪽과 같은 inverted ..

Elasticsearch

[Elasticsearch] 색인 (Indexing)

색인(Indexing)이란 색인(Indexing)이란 문서를 분석하고 저장하는 과정을 색인이라고 한다. 색인의 과정을 도식화해보면 아래와 같다. 예를 들어서 SERVER 3개에 Elasticsearch 가 Cluster 형태로 구성되어 있다고 가정해 보자. 1) movie 인덱스에 1001번 아이디를 가진 데이터를 NODE A에 PUT 한다. 2) NODE A에서 Primary shard를 하나 생성하고 해당 서버가 아닌 다른 서버에 Replica shard 를 하나 생성해 준다. (shard 1, replica 1 이 기본값임) 그다음 현재 Primary shard의 데이터를 복사해 준다. 그럼 다음으로 NODE B로 id 가 1002인 데이터가 PUT 된다고 가정해 보자. 1) movie 인덱스에 1..

카테고리 없음

[Elasticsearch] Mapping 이란?

Mapping 이란? Mapping 이란 문서의 구조를 나타내는 정보라고 할 수 있다. ES 에서와 RDB 에서와 사용하는 단어는 아래와 같이 대응된다고 볼 수 있다. Elasticsearch RDBMS Index database mapping schema document row Elasticsearch를 스키마리스라고 해서 스키마가 없는 게 아니고 미리 정의하지 않아도 되는 것이다. Mapping 은 크게 동적 매핑(Dynamic Mapping)과 정적 매핑(Static Mapping)으로 나뉘게 된다. mapping 종류 정의 동적 매핑 (Dynamic Mapping) 처음 색인되는 문서를 바탕으로 매핑 정보를 Elasticsearch가 동적(자동)으로 생성한다. 정적 매핑 (Static Mappin..

카테고리 없음

[Elasticsearch] Index 란?

인덱스 (Index) 란? 문서가 저장되는 논리적인 공간이다. Es 에서 Index 는 RDBMS 에서 Database 와 대응되는 개념이라고 보면 된다. Es 의 용어와 RDBMS 의 용어를 비교해보면 아래의 표와 같이 이해할 수 있다. Elasticsearch RDBMS Index Database Mapping Schema Document Row 인덱스 설계 방법 인덱스를 설계하는 것은 ES 를 사용하기 위해 고려해야 하는 첫 단계이다. 인덱스 설계를 어떤 방향으로 하느냐에 따라서 문서의 구조 및 검색 쿼리 자체가 달라지게 된다. 예를들어 아래의 그림을 보자. 인덱스를 설계할때 movie 인덱스를 생성해서 관리해도 되고 각 장르마다 인덱스를 설계해서 관리해도 된다. 그럼 인덱스의 설계에 따라 어떤식으..

Elasticsearch

[Elasticsearch] Shard 란?

샤드(Shard) 란 인덱스가 색인되는 문서가 실제로 저장되는 공간을 의미한다. 하나의 인덱스는 반드시 하나 이상의 샤드를 가진다. 샤드는 크게 Primary shard , Replica shard로 나뉜다. 종류 역할 Primary shard 문서가 저장되는 원본 샤드이다. 색인과 검색 성능에 모두 영향을 준다. Replica shard Primary shard 의 복제 샤드이다. Primary shard 에 문제가 생기면 Replica shard 가 Primary shard 로 승격된다. 문서의 색인과정은 Primary shard 에서 먼저 분석 과정이 이루어지고 저장이 된 다음에 해당 문서가 Replica shard 로 복제되는 구조이다. Replica shard 의 개수보다 Primary shar..

Elasticsearch

[Elasticsearch] Cluster, Node 란?

Cluster, Node 란? 일반적인 Cluster 의 정의는 "여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합" 을 말한다. Elasticsearch 도 여러대의 노드(컴퓨터와 대응되는 개념) 들이 각자의 역할을 바탕으로 연결되어 하나의 시스템처럼 동작한다. Node 의 종류 1) 마스터 노드 (Master Node) : 클러스터 상태 관리 및 메타 데이터 관리 2) 데이터 노드 (Data Node) : 문서 색인 및 검색 요청 처리 3) 코디네이팅 노드 (Coordinating Node) : 검색 요청 처리 4) 인제스트 노드 (Ingest Node) : 색인되는 문서의 데이터 *전처리 *전처리 : 어떤 문서가 ES 내에 들어와서 저장이 되기 이전에 수정한다는 의미. 마스터..

Elasticsearch

[Elasticsearch] Elasticsearch 란?

Elasticsearch 란? 1. 루씬 기반의 오픈소스 검색 엔진이다. 루씬이란 자바 언어로 이루어진 정보 검색 라이브러리이다. 루씬 라이브러리를 통해서 색인과 검색을 가능하게 한다. json 기반의 문서를 저장하고 검색할 수 있으며 분석 작업도 가능하다. 2. 준 실시간 검색 시스템 실시간이라고 생각 될 만큼 색인된 데이터가 빠르게 검색된다. 3. 고가용성(HA)를 위한 클러스터를 구성할 수 있다. 한 대 이상의 노드로 클러스터를 구성하여 높은 수준의 안정성을 보장하고 부하 분산을 통해 안정적인 데이터 처리가 가능하다. 4. 동적 스키마 생성 가능 입력될 데이터들에 대해 미리 스키마를 정의하지 않아도 자동으로 스키마가 생성된다. 일반적으로 RDBMS 에서는 특정한 데이터를 저장하기 위해서는 스키마 지..

ssh9308
'분류 전체보기' 카테고리의 글 목록 (7 Page)