반응형 DBMS14 ElasticSearch를 이용한 검색 최적화(with. SpringBoot) Issue 프로젝트를 진행하면서 태그 검색 을 하는 기능을 구현해야했습니다. 태그 조회 API에서 구현하고자 하는 기능은 다음과 같습니다. 태그 검색 기능 태그 자동 완성 기능 해당 조건을 구현하고자 할 때는 기존 RDB 를 사용할 수 있습니다. 검색할 때 RDB의 Like 검색 기능을 사용해도 되지만, Table Full scan 방식을 사용하고 있기 때문에 데이터의 양이 많아질수록 검색의 속도가 현저히 감소하게 됩니다. 이를 통해 해결하기 위해 ElasticSearch 를 활용하여 검색하는 기능을 최적화를 진행해보려고 합니다. 자세한 ElasticSearch 내용은 필자가 정리한 블로그에서 확인하면 됩니다. => 블로그 정리 링크 Problem ElasticSearch 는 역색인 기반의 검색엔진으로 .. DBMS/ElasticSearch 2024. 3. 27. ElasticSearch란 무엇인가요? ElasticSearch란? ElasticSearch는 Apache Lucene 기반의 Java 오픈소스 분산 검색 엔진입니다. 검색 엔진이라고 부르고, 역색인의 구조를 가지고 있기 때문에 검색 속도가 매우 빠르다. 흔히, ElasticSearch를 검색엔진이라고 부르지만, NoSQL의 형식으로 데이터를 저장하기에 NoSQL 데이터베이스처럼 사용하기도 한다. NoSQL ElasticSearch는 모든 데이터를 JSON의 도큐먼트 형식으로 입력 및 관리가 되고 있다. 또한, 쿼리한 결과에 일치하는 원본을 반환하며 문자, 숫자, 날짜, IP 주소 등 다양한 타입을 사용할 수 있다. 그리고 RDBMS(관계형 데이터베이스) 와는 비교도 안될 만큼 빠른 속도로 데이터를 조회할 수 있고 복잡한 검색이 가능하다. 역.. DBMS/ElasticSearch 2024. 2. 6. LEFT JOIN, INNER JOIN 차이 프로젝트로 게시판을 만들면서 각 카테고리에 따라 테이블을 나누어 작성한 후, 정보를 가져오는 경우 테이블을 합치는 경우가 있다. 이 때 JOIN 을 사용하게 되는데, 그 중 많이 사용하는 LEFT JOIN 과 INNER JOIN에 대해 알아보겠습니다. 게시판의 댓글과 게시글을 이용해서 예시를 들것입니다. 이 때 사용할 DBMS는 MYSQL 이다. OUTER JOIN - 합집합 LEFT JOIN은 OUTER JOIN 의 일종이다. 따라서 LEFT OUTER JOIN 이라고 볼 수 있다. OUTER JOIN 은 합집합을 의미한다. 여기서 LEFT JOIN은 왼쪽의 모든 행을 조회한다. select * from post left join comment on post.id = comment.post_id; 따라.. DBMS/MySQL 2024. 1. 6. [Redis] Redis를 이용한 캐시 활용하기 캐시(Cache) 란? 사용자에 입장에서 데이터를 더 빠르게, 더 효율적으로 엑세스 할 수 있는 임시 데이터 저장소를 뜻한다. 대부분의 어플리케이션에서 속도 향상을 위해 캐시를 사용한다. 캐시를 유용하게 사용하는 방법 캐시 저장소에 접근하는 속도가 원본 데이터 저장소(운영 DB)에 접근하는 속도보다 빨라야한다. 동일한 데이터에 대해 반복적으로 엑세스하는 상황이 많을 때 사용하는 것이 좋다. 즉, 데이터 재사용 횟수가 한 번 이상이어야 cache를 사용하는 의미가 있다. 잘 변하지 않는 데이터 일수록 cache를 사용할 때 효율적이다. 캐시로 Redis를 선택한 이유? 서버가 이중화가 되어 있기 때문에 캐시 데이터 일관성을 위해 원격 캐시를 사용한다. 단순한 key-value 구조로 다양한 자료구조(Str.. DBMS/Redis 2023. 12. 30. [Redis] 레디스란 무엇인가? Redis(Remote Dictionary Server) Redis는 Remote(원격)에 위치하고 프로세스로 존재하는 In-Memory 기반의 Dictonary(key-value) 구조 데이터 관리 시스템이다. 여기서 key-value 구조 데이터란? mysql과 같은 관계형 데이터가 아닌 비관계형 구조로서 데이터를 그저 '키-값' 형태 로 단순하게 저장하는 구조를 칭한다. 그래서 관계형 데이터베이스와 같이 쿼리연산을 하지 않지만, 대신 데이터의 고속 읽기와 쓰기에 최적화 되어있다. 그렇기 때문에, Redis는 일종의 NOSQL 로 분류 되기도 한다. 여기서 말하는 NOSQL 이란? 비관계형 데이터베이스로 데이터의 저장 및 검색을 위해 특화된 매커니즘을 제공하는 데이터 저장기술을 의미한다. 단순 검색 .. DBMS/Redis 2023. 12. 30. MariaDB 설치하기 및 접속하기(feat. Windows) 데이터베이스 툴 애플리케이션을 정상적으로 로직이 동작하기 위해서는 데이터베이스가 꼭 필요합니다. 그 중에 가장 널리 사용되는 마리아DB(MariaDB) 애플리케이션에 대해 알아보겠습니다. MariaDB 설치 설치 경로 https://mariadb.org/download/ 설치 파일 개발 환경 설정 MariaDB Server Version : MariaDB Server 10.11.5([Display older releases ✔]) Operating System : Windows/Linux Architecture : x86_64 Package Type : MSI Package/Zip File 설치 시 체크 사항 가장 대중적으로 사용되는 문자 인코딩 방식인 UTF-8을 기본값으로 설정하기 위해서 Use UT.. DBMS/MariaDB 2023. 10. 31. [MySQL] UPDATE문을 이용한 데이터 변경 UPDATE 문 데이터베이스(Database)에서 데이터를 수정할 때 사용하는 쿼리(Query)문이다. 기본적으로 변경할 컬럼들을 선택하여 모든 레코드를 수정할 수 있다. WHERE(조건절)을 이용하여 조건에만 맞는 레코드만 수정도 가능하다. UPDATE문의 기본 구조 UPDATE "테이블명" SET "컬럼명1" = "데이터1" UPDATE example SET name = '김철수' 조건절을 이용한 데이터 변경 UPDATE 문에서 특정 조건을 사용하여 레코드를 수정 UPDATE "테이블명" SET "컬럼명1" = "데이터1" [WHERE 조건] UPDATE example SET name = 'none' WHERE email = 'test@gmail.com' DBMS/MySQL 2023. 10. 8. [MySQL] DELETE문을 이용한 데이터 삭제 DELETE문 테이블에 저장되어 있는 레코드를 삭제하기 위해 사용하는 Query문 기본적인 사용법으로 테이블(Table)의 전체 레코드 또는 삭제하고자 하는 레코드를 선택하여 삭제 가능하다. DELETE 뿐만 아니라 'TRUNCATE' 도 테이블의 데이터를 삭제하는 명령어이다. 테이블 전체 데이터 삭제 테이블에 저장되어 있는 데이터가 모두 필요 없거나, 초기화 시에 전체 데이터를 한 번에 삭제 DELETE FROM [테이블명] DELETE FROM example; 조건절을 이용한 일부 데이터 삭제 설정한 조건에 맞는 데이터만 삭제 DELETE FROM [테이블명] WHERE [조건] DELETE FROM example WHERE name = '홍길동'; DBMS/MySQL 2023. 10. 8. [MySQL] INSERT문을 이용한 데이터 추가/삽입 모든 컬럼에 데이터 추가 선택한 테이블에 레코드를 추가 INSERT INTO [테이블명] VALUES ([데이터1], [데이터2], ...) 데이터 값의 순서는 현재 테이블의 컬럼 순서대로 같은 타입의 값을 추가해야한다. INSERT INTO example VALUES ( 1, '홍길동' 'test@tistory.com' ); 특정 컬럼에 데이터 추가 선택한 테이블의 레코드를 추가, 특정 컬럼에만 데이터를 입력 데이터값 생략 가능한 경우 : AUTO_INCREAMENT 설정, DEFAULT 제약 조건 설정 INSERT INTO [테이블명] ([컬럼명1], [컬럼명2]) VALUES ([데이터1], [데이터2]) INSERT INTO example (name) VALUES ( '김삿갓' ); 여러 개의 레.. DBMS/MySQL 2023. 10. 8. [MySQL] DROP문을 이용한 DATABASE, TABLE 삭제 DROP 문을 이용한 DataBase, Table 삭제 - MySQL에서 DROP문은 데이터베이스(DataBase)와 테이블(Table)을 삭제할 수 있는 SQL문이다. 데이터베이스 삭제 데이터베이스와 데이터베이스 내의 모든 테이블과 데이터를 삭제한다. DROP DATABASE [데이터베이스명] IF EXISTS 명령어를 통해 데이터베이스 존재 여부 확인 후, 존재하는 경우만 삭제하여 에러 방지 DROP DATABASE example; DROP DATABASE IF EXISTS example; 테이블 삭제 테이블과 테이블 내에 있는 데이터를 모두 삭제 DROP TABLE [데이터베이스명] IF EXISTS 명령어를 통해 데이터베이스 존재 여부 확인 후, 존재하는 경우만 삭제하여 에러 방지 테이블을 삭제 .. DBMS/MySQL 2023. 10. 8. [MySQL] SELECT문을 이용한 DATABASE 조회 및 검색 SELECT문 모든 컬럼 조회 검색할 테이블의 모든 컬럼을 출력 SELECT * FROM [테이블 이름] SELECT * FROM example; SELECT문 특정 컬럼 조회 특정 확인하고 싶은 컬럼만 선택하여 출력 SELECT '[컬럼명1] [컬럼명2] ...' FROM [테이블 이름] SELECT id, name FROM example; SELECT문 특정 컬럼 조회 검색할 테이블에서 특정 컬럼에서 원하는 값을 가진 값을 출력 SELECT * FROM [테이블 이름] WHERE [컬럼명1] = [컬럼값1] SELECT * FROM example WHERE name = 홍길동; SELECT문 중복 값 제거 검색할 테이블에서 특정 컬럼에서 중복되는 값을 한 번만 출력 SELECT DISTINCT [컬럼.. DBMS/MySQL 2023. 10. 8. [MySQL] CREATE문을 이용한 데이터베이스, TABLE 생성 데이터베이스 생성 CREATE DATABASE [데이터베이스 이름] CREATE DATABASE example; 데이터베이스 생성 확인 SHOW DATABASE; SHOW DATABASE; 데이터베이스 선택 및 사용 USE [데이터베이스 이름]; USE example; 테이블 생성 CREATE TABLE [테이블 이름] ([컬럼명1], [컬럼명2] ...) 컬럼은 여러 개 추가가 가능하며, 컬럼이름은 겹치지 않게 설정해야한다. 테이블 생성 시에 제약 조건을 설정할 수도 있다. CREATE TABLE example ( idINTEGER, name varchar(10), email varchar(255) ); 테이블 생성 확인 SHOW TABLES 선택된 데이터베이스에 등록된 테이블의 생성 여부를 확인할 수.. DBMS/MySQL 2023. 10. 8. 이전 1 2 다음