반응형

데이터베이스 14

[mysql] INSERT ... ON DUPLICATE KEY UPDATE Statement : UNIQUE index 혹은 PRIMARY KEY 기준으로 중복값 체크

https://dev.mysql.com/doc/refman/8.4/en/insert-on-duplicate.html MySQL :: MySQL 8.4 Reference Manual :: 15.2.7.2 INSERT ... ON DUPLICATE KEY UPDATE Statement15.2.7.2 INSERT ... ON DUPLICATE KEY UPDATE Statement If you specify an ON DUPLICATE KEY UPDATE clause and a row to be inserted would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row occurs. For example, if ..

[mysql] replica 서버 구축하는 목적, 복제방법 w.바이너리 로그

Replication 이란 ? - 한 서버에서 다른 서버로 데이터를 동기화 > 원본 데이터를 가진 서버를 소스 서버 (= 마스터) > 복제된 데이터를 가진 서버를 레플리카 서버 (= 슬레이브) Replica 서버를 구축하는 목적 - 스케일 아웃 : 갑자기 늘어나는 트래픽을 대응하는데 유연한 구조 - 데이터 백업 : > 레플리카를 안하더라도 백업을 해야 한다 > 백업 과정은 실제 실행중인 쿼리들에 영향을 줄 수 있기 때문에, 레플리카 서버에서 데이터 백업을 실행하여 소스 서버에서 백업 시 발생하는 문제들을 해결한다 - 데이터의 지리적 분산 : > 데이터베이스의 애플리케이션 서버가 멀리 떨어져 있다면 응답을 늦게 받게 된다. > 빠른 응답을 위해 애플리케이션 서버에 가깝게 서비스를 구성하는게 좋다. 복제를 ..

트랜잭션의 격리수준 [Real_MySQL_8.0]

트랜잭션의 격리수준이란 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지 결정하는 것 - DIRTY READ가 발생하는 READ UNCOMMITTED는 일반적인 데이터베이스에서는 거의 사용하지 않고, SERIALIZABLE 또한 동시성이 중요한 데이터베이스에서는 거의 사용되지 않는다. - 4개의 격리 수준에서 순서대로 뒤로 갈수록 각 트랜잭션 간의 데이터 격리(고립) 정도가 높아지며, 동시 처리 성능도 떨어지는 것이 일반적이라고 볼 수 있다. - 격리 수준이 높아질수록 MySQL 서버 처리 성능이 많이 떨어질 것으로 생각하는 사용자가 많은데, 사실 SERIALIZABLE 격리 수준이 아니라면 크게 성능의 개선이나 저하는 발생하지 않..

elasticsearch. 노리 분석기 [엘라스틱 스택 개발부터 운영까지]

한글을 분석하기 위해선 한글 어휘의 기본 단위인 형태소 단위로 분석해주는 전용 플러그인을 설치해 사용하게 된다. 과거에는 공식 지원되는 플러그인이 없어 아리랑, 은전한닢 등의 커뮤니티 플러그인을 사용했으나, 성능이나 호환성 측면에서 엘라스틱서치 6.4 버전부터 공식 지원되는 노리Nori 사용을 권장한다. 노리 분석기 설치 1. 설치하기 위해서는 elasticsearch-plugin이 설치되어 있는 경로를 확인해야한다. 나는 brew를 통해 설치했고, /opt/homebrew/Cellar/elasticsearch-full/7.17.4/bin 여기에 존재했다. elasticsearch. elasticsearch / kibana 설치 (맥 os) 1. elasticsearch install brew tap e..

elasticsearch. range query 와 bool query [엘라스틱 스택 개발부터 운영까지]

범위 쿼리 range query - 특정 날짜나 숫자의 범위를 지정해 범위 안에 포함된 데이터들을 검색할 때 사용된다. - 날짜/숫자/IP 타입의 데이터는 범위 쿼리가 가능하지만, 문자형, 키워드 타입의 데이터에는 범위 쿼리를 사용할 수 없다. GET kibana_sample_data_flights/_search { "query": { "range": { "timestamp": { "gte": "2020/12/15", "lte": "2020/12/16" } } } } 참고로, 날짜/시간 포맷이 맞아야 검색이 가능하므로, '2020-12-15', '2020-12-16'으로 검색 시 결과가 나오지 않는다. gte (gte: 10) 10과 같거나 10 보다 큰 값 (gte: 2021-01-21) 2021년 1..

elasticsearch. leaf query (match, term, range) [엘라스틱 스택 개발부터 운영까지]

엘라스틱서치는 크게 리프 쿼리 leaf query와 복합 쿼리 compound query로 나눌 수 있다. - leaf query는 특정 필드에서 용어를 찾는 쿼리로, 매치 match 용어 term 범위 range 쿼리 등이 있다. - compound query는 쿼리를 조합해 사용되는 쿼리로, 논리 bool 쿼리 등이 있다. [ leaf query ] 전문 쿼리 full text query와 용어 수준 쿼리 term level query의 차이점 - full text query는 전문 검색을 하기 위해 사용되며, 전문 검색을 할 필드는 인덱스 매핑 시 텍스트 타입으로 매핑해야 한다. > 텍스트 타입 필드에서 검색어를 찾을 때 사용한다. > 분석기가 텍스트를 토큰화해서 전문 검색이 가능하다. - term..

elasticsearch. 역인덱싱과 분석기 [엘라스틱 스택 개발부터 운영까지]

엘라스틱서치는 전문 검색을 지원하기 위해 역인덱싱 기술을 사용한다. 전문 검색은 장문의 문자열에서 부분 검색을 수행하는 것이며, 역인덱싱은 장문의 문자열을 분석해 작은 단위로 쪼개어 인덱싱하는 기술이다. 역인덱싱을 이용한 전문 검색에서 양질의 결과를 얻기 위해서는 문자열을 나누는 기준이 중요하며, 이를 지원하기 위해 엘라스틱 서치는 캐릭터 필터, 토크나이저, 토큰 필터로 구성되어 있는 분석기 모듈을 갖고 있다. - 분석기에는 하나의 토크나이저가 반드시 포함돼야 하며, 캐릭터 필터와 토큰 필터는 옵션이므로 없어도 되고 여러 개를 함께 사용해도 된다. 분석기 구성 구성요소 설명 캐릭터 필터 입력받은 문자열을 변경하거나 불필요한 문자들을 제거한다 토크나이저 문자열을 토큰으로 분리한다. 분리할 때 토큰의 순서나..

elasticsearch. 문자열 타입 (텍스트 타입 / 키워드 타입 / 멀티 타입) [엘라스틱 스택 개발부터 운영까지]

엘라스틱서치 5.x 버전부터 문자열 타입이 텍스트와 키워드라는 두 가지 타입으로 분리되었다. >> 텍스트 타입 - 일반적으로 문장을 저장하는 매핑 타입으로 사용한다. - 텍스트 타입으로 지정된 문자열은 분석기에 의해 토큰으로 분리되고, 이렇게 분리된 토큰들은 인덱싱되는데 이를 역인덱싱이라고 한다. - 역인덱싱된 용어 중 하나라도 포함되면 도큐먼트를 찾는다. - 텍스트 타입의 경우 기본적으로 집계나 정렬을 지원하지 않으며, 매핑 파라미터로 집계나 정렬을 지원할 수 는 있으나 메모리를 많이 사용한다는 단점이 있다. - 텍스트 타입으로 지정된 필드를 정렬할 경우 문장의 첫 문자열이 아닌 분해된 용어를 기준으로 정렬을 수행하므로 예상과는 다른 결과를 얻게 된다. # text 타입 가진 text_index 인덱스..

elasticsearch. elasticsearch / kibana 설치 (맥 os)

1. elasticsearch install brew tap elastic/tap brew install elasticsearch-full 설치 완료되었으면 elasticsearch 명령어 통해 실행한다. 실행 후, curl -XGET localhost:9200 통해서 아래와 같이 나오면, 실행된 것이다. 2. kibana install brew tap elastic/tap brew install kibana-full 설치 완료되었으면 kibana 명령어 통해 실행한다. 실행 후, http://localhost:5601/ 로 접속하면 아래와 같은 홈화면이 뜬다. 홈화면은 버전마다 다를 수 있다. Elastic Search / kibana 설치 (맥os) 1. homebrew 설치하기 https://www..

반응형