일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링 컨테이너와 스프링 빈
- Kotlin In Action
- 고급매핑
- Kotlin in action 10장
- 백준 20055 컨베이어 벨트 위의 로봇
- 객체 지향 설계와 스프링
- 7장 고급매핑
- 컨베이어 벨트 위의 로봇 Python
- 코틀린
- 자바 ORM 표준 JPA 프로그래밍 7장
- 스프링 핵심 원리
- 스프링 핵심 원리 - 기본편
- Kotlin in action 3장
- Kotlin in action 5장
- 기능개발 python
- 13460 구슬탈출 2
- Python
- 스프링 핵심 원리 이해
- Kotlin in action 6장
- Kotlin
- KotlinInAction
- 코틸린인액션
- 싱글톤 컨테이너
- spring
- kotlin in action 정리
- 백준 13460 Python
- 20055
- 백준
- 코틀린인액션
- 20055 컨베이어 벨트 위의 로봇
- Today
- Total
목록분류 전체보기 (157)
기록하는 습관
Elasticsearch Client 실무에선 대량의 요청을 처리하기 위해 ES에 접근할 때 전용 클라이언트 모듈을 많이 사용한다. Rest Client Java High Level REST Client 라고도 불림 HTTP 방식 사용 내부적으로 HttpClient 모듈 사용 Transport Client Java Client 라고도 불림 초기부터 제공되던 클라이언트 방식으로, 상대적으로 빠른 속도를 보장함. Socket 이용 내부적으로 Netty 모듈 사용 ** ES 7.0 이후 부터는 Transport 클라이언트가 폐기 되었기 때문에 REST 클라이언트를 사용해야 함.!! Rest Client를 사용하는 이유 - Transport 클라이언트의 요청: JSON 파싱 -> 자바 객체로 변환 -> Tran..
Elasticsearch Shard 최적화 운영 중에 shard의 개수를 수정하지 못하는 이유 - ES Shard는 Lucene index의 확장. - 각 shard는 내부에 독립적인 Lucene 라이브러리를 가지고 있고, Lucene은 단일 머신 위에서만 동작(Stand Alone)하는 검색엔진임. - shard 내부의 Lucene 입장에서는 함께 인덱스를 구성하는 다른 shard의 존재를 모름! - 프라이머리 shard의 개수를 변경한다는 것 == 독립적인 Lucene이 가지고 있는 데이터를 모두 재조정 한다는 뜻. o 이는 세그먼트를 재조정 해야 하는데, 세그먼트의 불변성 때문에 불가능함. 1. Index를 생성할 때 한 번 설정된 shard의 개수는 절대!! 변경이 불가능하므로 데이터의 크기가 최..
Elasticsearch와 Lucene Elasticsearch는 Shard 내부에 Lucene library를 가지고 있음 Elasticsearch는 각 shard가 가지고 있는 Lucene을 제어할 수 있으며, 실시간 검색에 가깝게 동작하기 위해 주기적으로 인메모리 버퍼에 대해 Flush 작업을 수행함 Lucene: 다수의 class로 구성된 검색 library이다. 중요한 class IndexWriter : 데이터를 색인하는 클래스 IndexSearcher : 색인된 데이터를 검색 결과로 제공하는 클래스 Lucene 인덱스 내부에는 Segment 자료구조가 다수 존재. Segment를 이용해 검색을 수행함 Segment는 역색인 구조. Lucene 인덱스의 한계 데이터를 저장할 때 물리 머신이 제공..
노드의 종류 마스터 노드(Master node) 노드 추가/제거 등의 클러스터 전반적인 관리 네트워크 속도가 빠르고 지연이 없는 노드를 마스터 노드로 선정하는 것이 좋음. 이유: 인덱스 생성, 삭제 등 클러스터와 관련된 전반적인 작업을 담당하므로. 마스터 노드는 1개만 존재. 만약, 마스터 노드가 down 되면 다른 후보들 중 하나 선택해서 역할을 수행 데이터 노드(Data node) 실질적인 데이터 저장 검색과 통계 같은 데이터 관련 작업 수행 데이터가 실제로 분산 저장되는 물리적 공간인 shard가 배치되는 노드 색인 작업은 CPU, memory, computing resource를 많이 소모하므로 resource monitoring이 필요함. 색인할 문서의 수가 적으면 마스터 노드와 함께 구성해도 ..
기본 용어 클러스터(Cluster) 물리적인 node 인스턴스들의 모임 모든 node의 검색과 색인 작업을 관장하는 logical 개념 Index의 Document를 조회 할 때: master node를 통해 n개의 node를 모두 조회해서 각 data를 취합 후 결과를 하나로 합쳐서 반환함. 가용성, 확장성 측면에서 유연함 이유: cluster에 있는 node는 실시간 추가/제거가 가능하기 때문 인덱스(Index) 독립적인 데이터 저장 공간 하나의 index는 하나의 type만 가짐. 하나의 물리적인 노드에 여러 개의 논리적인 index 생성 가능. 만약 ES를 분산 환경으로 구성하면, 하나의 index가 여러 node에 분산되어 저장됨. Index 이름은 모두 소문자여야 함. Index가 없는 상태에..
문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..
** Elasticsearch를 공부하며 정리한 글입니다. ## 들어가며 Elasticsearch에서 제공하는 동의어 기능 synonym token filter : 색인시 사용하는 필터 synonym graph token filter : 검색시 사용하는 필터 동의어는 색인할 때 보다, 검색할 때 처리하는 것이 성능이 더 좋다. 관련 자료: 동의어로 Elasticsearch의 성능 강화 동의어를 수동으로 진행하는 이유 게임 용어 동의어 같은 경우, 줄임말이 가장 흔하다. 하지만 이는 직접 만드는 줄임말이기 때문에 학습을 시키지 않는 이상 사용자가 직접 등록하는 작업이 필요하다. 동의어에 대한 open api를 조사했지만 게임 용어에 대한 api는 제공하고 있지 않다. 결론: 일반 용어: api 사용 게임 ..
** Elasticsearch를 공부하며 정리한 글입니다. Elasticsearch에서는 인덱스 매핑 정보가 바뀌면 업데이트 하는 과정이 어렵다. reindex를 통해 다시 인덱스 생성을 한 후 reindex api 호출을 통해 기존 인덱스를 지우고 다시 만들었다. 하지만 이 과정은 document 수가 10만가지만 넘어가도 서비스 흐름이 끊어지게 된다. 따라서 alias를 이용해reindex를 무중단하게 진행해보려고 한다. # reindex 시 알고 있어야 하는 사항 1. _source 는 enabled 상태인 index만 reindex가 가능하다. 2. reindex는 복사가 아니다. 즉 reindex를 하려는 index의 mapping정보도 똑같이 카피되는 것이 아니라. 데이터만 넣기 때문에 이때 ..