본문 바로가기

BackEnd/DB7

[DB] ElasticSearch의 Suggest API Suggest API SuggestAPI에서 사용되는 Suggester는 색인이 된 대상을 FST(유한상태 변화기)라는 데이터 구조를 만들어 In-Memory에 올려 일반 검색 API보다 훨씬 응답이 빠르다. 이때, 인메모리에 올라가니 변경이 적은 것이 좋다. FST Type을 사용하고 싶으면 mapping에서 completion type으로 지정하면 된다. Completion field type | Elasticsearch Guide [8.16] | ElasticCompletion field type edit To use the completion suggester, map the field from which you want to generate suggestions as type completion.. 2024. 11. 21.
[DB] ElasticSearch의 Search API SearchAPI란?SearchAPI는 ElasticSearch에서 데이터 검색과 필터링을 위한 API입니다. 특정 조건으로 데이터를 검색하고, 정렬, 페이징, 집계 등에 적용할 수 있습니다. 크게 두가지 방법으로 전달할 수 있습니다. 첫번째가 URI Search인데 이건 우리가 ?query=”hello” 이런식으로 REST에서 보내는 방법입니다. 간단한 검색이면 몰라도, 사실 크게 자주 쓰지 않습니다. 두번째가 Query DSL인데 아래처럼 Body에 넣어서 보내는 것입니다. 대부분 후자 방법을 이용합니다. (더 상세한 표현이 가능하고 재사용성이 좋기 때문입니다.)QueryDSL에는 위 사진과 같은 옵션을 넣을 수 있습니다. 특히, query부분이 중요한데, 이 곳에 우리가 SQL로 작성해서 DB에서 .. 2024. 11. 19.
[DB] 백엔드 개발자를 위한 효율적인 데이터베이스 선택 가이드 1. 데이터베이스의 구분데이터베이스는 크게 SQL DB와 NoSQL DB로 나눌 수 있다.   SQL DB는 스키마 기반의 테이블 구조를 가지고 있으며 ACID 특성을 보장하며, 금융 시스템과 같이 데이터 무결성과 트랜잭션 관리가 중요한 경우 사용된다. 게다가 40년 넘게 사용되고 있는 만큼 높은 안정성과 신뢰성을 자랑한다. 하지만, NoSQL DB에 비해서 확장성과 샤딩이 어렵다는 단점이 있다. 반면에, NoSQL DB는 스키마가 유연하고 대규모 데이터 분산 저장 및 처리에 최적화되어 있으며, BASE 특성을 가집니다. 또한, 빅데이터 분석을 처리하는데 탁월하며, 확장성도 훨씬 좋다. 하지만, 각각 DB마다 다르겠지만 호환성, 자료 부족 등의 문제가 있다. 실제로 위 그래프처럼, SQL DB가 거의 메.. 2024. 11. 17.
[DB] CSV 파일 데이터 DB에 업로드 CSV 파일을 사용하는 이유초기 데이터를 몇 개만 추가해야 한다면, 그냥 우리가 직접 DB 콘솔에 접속해서 하나하나 데이터를 넣거나 하면 된다. 하지만, 사실 우리가 데이터가 한두개일리가 절대 없다. 예를 들어, 공공데이터 포탈에서 데이터를 받아올 경우, 데이터가 수천, 수만건이 될 것이다. 이때, 이 데이터들을 하나씩 직접 입력하는 것은 비효율적일 뿐 아니라 시간이 많이 소요된다. 또, 만약 테이블이 통째로 삭제되는 문제가 발생한다면,수만개의 데이터를 다시 입력해야 하므로 상당한 노력이 필요하게 된다. CSV 파일을 활용하면 이런 문제를 해결할 수 있다. 한 번에 많은 데이터를 가져와 데이터베이스에 바로 삽입할 수 있기 때문에, 대량의 데이터 처리가 필요한 경우 CSV 파일 업로드는 훨씬 더 효율적이고.. 2024. 11. 13.
[DB] ElasticSearch Index 설정과 텍스트 분석 Index API의 개요ElasticSearch를 할 때 가장 기초가 되는 부분이다. 물론 데이터를 삽입할 때, Index가 없으면 자동으로 생성하지만... 사실 세부적으로 검색을 튜닝하려면 Index에 대한 세부적인 설정은 필수이다. Index API는 Index를 생성하고 설정을 하는 역할을 한다. 이 때, 데이터 모델링을 진행한다. 이때, 한번 생성한 맵핑 타입은 변경할 수 없으니 주의할 것! Index 설정 요청은 아래처럼 생겼다. 크게 setting 부분과 mapping 부분 이렇게 두개로 나뉜다고 보면 된다.PUT /complex_index{ "settings": { "analysis": { "analyzer": { "korean_analyzer": { .. 2024. 11. 8.
[DB] Elastic Search의 기초 Elastic Search란?방대한 양의 데이터를, 거의 실시간에 가깝게 저장, 검색, 분석 할 수 있도록 하는 오픈소스 분산 검색 엔진이다. ELK Stack이란?Elastic Search, Logstash, Kibana 3개를 합쳐 ELK라고 부른다. 보통 로그 분석으로 사용되며, 여기서 특히 Elastic Search가 범용성이 높아 단독으로 사용되는 경우가 많다.FileBeat : 로그 파일 Logstash에게 전달하기 위한 놈Logstash : 다양한 소스의 로그 또는 데이터를 수집, 집계, 파싱하여 ElasticSearch에게 전달하는 놈ElasticSearch : Logstash로 부터 받은 데이터를 검색 및 집계하는 역할Kibana : ElasticSearch로 검색한 데이터를 GUI로 시.. 2024. 11. 7.
[DB] Redis, 실제 개발에서 어떻게 활용할 수 있을까? Redis라는 이름은 많이들 들어봤을 것이다. 하지만, Redis의 특징은 아는데 이걸 어떻게 활용해야 할지 모르겠는 사람들이 꽤 많을 것이다. 그래서, 이번에는 내가 활용해보고 조사해본 실제 개발에서 Redis의 활용 방안에 대해서 다뤄보고자 한다. 일단, Redis 활용 방안을 알아보기전에, Redis의 특징에 대해 알아야한다.key -value 형식으로 저장되는 NoSQL Datebase이다인 메모리(In-Memory) 방식으로 저장되기 때문에, 디스크에 접근해야되는 RDB에 비해 굉장히 빠르다메모리에 저장되기 때문에 종료시 데이터가 사라진다. 그래서 이를 방지하기 위해 백업을 지원한다싱글 스레드로 작동한다. (엄밀히 말하면 살짝 아니긴 하지만)TTL(Time to live)를 제공한다. 그래서 일.. 2024. 5. 10.