개발/DB(5)
-
ElasticSearch - DFR에 대해 알아보자
개요 scoring model 관련하여 BM25에 대해서 알아보았다. 이번에는 DFR에 대해서 알아보도록 하자. DFR의 경우 lucene 내부에서 implementation이 되어 있다. DFR ( Divergence from Randomness ) framework 똑똑하신 분들이 DFR에 대한 내용을 내놓았다. 사실 가정이나 내용이 잘 이해가지 않는다. 한 번 정리해보면서 그 내용을 이해해보도록 해보자. 정의 # 아래의 함수들은 우선 간단하게 표기했다. boost = 1 def normalize(tf, c, avgfl, fl): return 1 def baseModel(stat, tfn): return 1 def afterEffect(stats, tfn): return 1 w = boost * ba..
2021.08.29 -
ElasticSearch - BM25에 대해서 알아보자
개요 ES에는 search를 위해서 다양한 scoring function들을 지원한다. 이에 대해서 자세히 살펴 보도록 하자 TF-IDF 먼저 검색의 기초가되는 TF, IDF에 대해서 이해해야한다. 필자도 수알못이긴 하지만 이번 기회에 한 번 천천히 살펴서 적어보려고 한다. 시작하기 전에 몇가지 상황을 가정하면서 이해를 도우려고 한다. 내가 만약 아이폰12 케이스를 찾는다고, 가정하자. (실제로 찾고 있다.) 이 때, 우리는 검색을 "아이폰12 케이스"로 찾을 것이다. 이 때, 검색 쿼리는 "아이폰12", "케이스"로 찾게 될 것이다. (실제로 tokenize, filter하는 내용 및 자연어 처리 부분은 좀 더 복잡하지만 개략적으로 이해해보자.) 이제 검색엔진에서는 inverted index로 docu..
2021.08.08 -
ElasticSearch keyword string 차이
ElasticSearch data types ES에는 다양한 data type이 존재한다. ES data types keyword type이란? 결론적으로 말씀드리면 keyword type은 anlayzer를 거치지 않고, text를 그대로 저장한다. ( tokenizer, filter를 거치지 않음 ) 따라서 exact match를 활용할 때, 사용할 수 있다. Example 아래의 쿼리를 통해서 테스트해볼 수 있다. 1. Index 생성 index 생성 curl --location --request PUT 'localhost:9200/malgogi-test-v1?include_type_name=true' \ --header 'Accept: application/json' ..
2021.08.01 -
MySQL에서 접속 중인 session 정보를 확인해보자
개요 MySQL에서 접속 중인 session 정보들을 확인해보자. Connection monitoring MySQL에서는 현재 잡혀있는 session에 대한 모니터링 테이블이 존재한다. 문제가 되는 session들을 찾아내거나 kill할 필요가 있을 때, 참조하면 좋다. SHOW PROCESSLIST; 현재 실행 중인 process list들을 확인할 수 있다. show full processlists; show processlist; 확인할 수 있는 field들은 아래와 같다. id: session id user: 접속한 계정의 id host: host + port db: 접속한 db command: thread가 현재 실행 중인 명령, Sleep의 경우는 idle 상태를 의미하며, 자세한 내용은 Th..
2021.02.07 -
MySQL lock & Isolation level
MySQL lock & isolation level 본 문서는 inno DB engine 기반으로 작성이 되어 있다. MySQL lock types 아래와 같은 lock들이 존재한다. 1. Base lock 기본적으로 Row level lock이다. S (shared lock): read a row X (exclusive lock): update or delete a row 2. Intenstion lock 테이블 안의 “row에 대해서 나중에 어떤 row-level락을 걸 것”이라는 의도를 알려주기 위해 미리 table-level에 걸어두는 lock, multiple granularity locking 방식의 일부로 동작함 아래의 쿼리를 통해 intention lock의 상태를 볼 수 있다. SHOW ..
2021.01.01