내가 공부하고 싶은 IT/지식정리
-
100만 row가 있는 테이블에 컬럼 추가는 어떻게 할까내가 공부하고 싶은 IT/지식정리 2023. 3. 28. 10:17
테이블을 설계하고 서비스를 운영하다보면 자연스럽게 많은 데이터가 쌓이게 되는 테이블들이 존재하게 됩니다. 또한 부득이한 경우 테이블에 컬럼 추가, 변경, 인덱스 추가 등 여러 가지 해당 테이블에 값을 변경해야 되는 상황이 생기게 되는데요. 초기에 데이터가 얼마 존재하지 않을 때는 문제가 되지 않지만 데이터가 많이 쌓이게 된 경우에는 문제가 발생할 수 도 있습니다. 일반적으로 컬럼을 추가한다고 할 때 사용할 수 있는 쿼리는 ALTER TABLE `테이블명` ADD `컬럼명` 자료형 ex) 'USER' 라는 테이블에 'name' 10글자 컬럼 추가 ALTER TABLE `USER` ADD `name` VARCHAR(10) 와 같이 사용할 수 있습니다. 하지만, MySQL/MariaDB 는 전통적으로 ALTE..
-
2022년 회고내가 공부하고 싶은 IT/지식정리 2023. 1. 30. 00:35
처음으로 회고록을 작성해보고자 합니다. 정리하는 느낌으로 간단하게 목차만 나눠서 업무적인 내용과 개인적인 내용들을 정리해보겠습니다. 블로그 2022년도는 블로그 글 작성을 거의 하지 않은 년도였던거 같네요. 사실 상 21년, 22년은 블로그를 작성하지 않고 다른 사람들의 블로그나 유튜브를 더 많이 보는 시간이었던거 같습니다. 또한 회사 생활 등으로 신경을 못쓴 년도였던거도 같은데 핑계인거 같긴하네요. 블로그를 쓰는 목적성을 많이 잃어버렸다고 생각했습니다. 23년도가 되어서 지금까지 제가 해왔던 일들을 쭉 정리를 해보고 있는데 기록을 남기는게 중요하다는 생각을 다시 하게 되어서 블로그 글들을 다시 열심히 써보려고 합니다. 블로그를 쓰는 목적성에 대해서 고민을 하다가 결론이 난 거지만 다른 사람들이 많이 읽..
-
Elasticsearch term & match내가 공부하고 싶은 IT/지식정리 2023. 1. 1. 21:01
테스트용 index 생성 schema 를 가진 인덱스 생성 (nori 형태소 분석기 사용) PUT /cn-test-idx { "settings": { "index": { "number_of_replicas": 1, "number_of_shards": 1, "analysis": { "analyzer": { "korean_analyzer": { "type": "custom", "tokenizer": "korean_tokenizer", "filter": [ "nori_readingform", "lowercase", "nori_posfilter" ] } }, "tokenizer": { "korean_tokenizer": { "type": "nori_tokenizer", "decompound_mode": "mix..
-
Elasticsearch bool 쿼리내가 공부하고 싶은 IT/지식정리 2023. 1. 1. 20:55
bool 쿼리 다른 쿼리들을 조합하여 결과와 score 들을 결합하거나 동작을 변경함. 즉 bool 하위의 여러 쿼리들을 결합하여 결과를 낼때 사용함 bool 은 query 와 filter 에서의 동작이 상이함. query로 사용할 때는 score 가 결합되어 일치하는 절일 많을 수록 더 좋음 bool의 기본 쿼리 must: 모든 필터가 매치되어야 함(and) filter: 이전 포스팅에서 설명한 filter 와 동작은 동일. score를 무시하고 결과가 캐싱됨 should: minimum_should_match 개의 필터에 매치되어야 함 (or) minimum_should_match must 또는 filter 같이 사용되면 기본값이 0, score에 영향만 줌 단독으로 사용시 기본값이 1 must_no..
-
Elasticsearch DSL 기본내가 공부하고 싶은 IT/지식정리 2023. 1. 1. 20:52
DSL이란 Domain Specific Language 으로 JSON 에 기반한 질의 언어 DB의 SQL 과 비슷한 언어로 사용자가 원하는 데이터를 추출하기 위한 질의 언어 DSL 예시 GET /조회할 인덱스명/_search { "query": { ... } } 예) 실제 가장 기본적인 match 쿼리 GET /cn-test-idx/_search { "query": { "match": { "kor_contents": "여러" } } } Query VS Filter DSL 설명에 앞서 query 와 filter 간의 차이점을 이해해야 함 기본적으로 Elasticsearch 는 일치하는 검색 결과의 관련성을 점수 별로 정렬하여 각 문서와 쿼리와 얼마나 잘 일하는지 측정함 관련성 점수는 소수점 숫장이며 검색 ..
-
Elasticsearch Inverted Index 의 이해내가 공부하고 싶은 IT/지식정리 2022. 12. 25. 20:42
Elasticsearch는 Open Source Project인 Apache Lucene을 기반으로 만들어진 Search Engine 임 이 Apache Lucene에서의 Index는 Inverted Index를 사용하기 때문에, Elasticsearch도 그러함 Index 란 Key-Value 구조를 가지는 테이블을 말한다. Key Value 1 1번 2 2번 3 3번 4 4번 위와 같은 Key-Value 구조를 가지는 테이블은 HashMap 이라는 자료구조와도 관련이 있다, 특히 대용량 데이터에서 빠르게 데이터를 탐색할 때에 매우 유용한 자료구조로 알려져 있다. Forward Index 보통 Index 라고 말하는 것은 forward index 를 의미한다. 어떠한 주어진 Document 들로 ind..
-
Elasticsearch 분석기 테스트내가 공부하고 싶은 IT/지식정리 2022. 12. 25. 20:34
Tokenizer 확인 주어진 문장(text)이 어떻게 형태소 분리되는지 확인 분석하려는 index 를 지정함 여기서는 cn-place Tokenizer 지정 여기서는 korean_tokenizer GET cn-place/_analyze?pretty { "tokenizer":"korean_tokenizer", "text":"운동장" } 결과 { "tokens" : [ { "token" : "운동장", "start_offset" : 0, "end_offset" : 3, "type" : "word", "position" : 0, "positionLength" : 2 }, { "token" : "운동", "start_offset" : 0, "end_offset" : 2, "type" : "word", "pos..
-
Elasticsearch 분석기내가 공부하고 싶은 IT/지식정리 2022. 12. 25. 20:31
Elasticsearch 의 분석기는 토크나이저 (Tokenizer) 토큰 필터 (Token Filter) 로 구성되어 있음 분석기 동작 프로세스 문장을 특정한 규칙에 의해 수정 전처리 필터 (CHARACTER FILTER; char_filter) 문장 분석 전 replaceAll()같은 패턴 처리나, 태그 제거 등의 역할 토크나이저 내부에서도 전처리가 가능하기 때문에 활용도는 떨어짐 대표적인 전처리 필터 : html_strip 기본적으로 html 태그를 모두 삭제하지만 escaped_tags 파라미터를 통해 특정 태그만 예외처리 가능 수정한 문장을 개별 토큰으로 분리 토크나이저 필터 (TOKENIZER FILTER) 분석기의 핵심 구성요소로, 텍스트를 어떻게 나눌 것인지 정의 언어 및 특징에 따라 다른..