MySQL의 탄력적 검색

Salman Mehmood 2023년6월20일
MySQL의 탄력적 검색

ElasticSearch를 MySQL과 통합하는 방법을 배웁니다. 또한 JSON 형식 데이터베이스와 관계형 데이터베이스 간의 몇 가지 주요 차이점을 살펴보겠습니다.

MySQL과 ElasticSearch 통합

아시다시피 MySQL은 데이터를 스키마에 저장하는 관계형 데이터 관리 시스템입니다.

반면 ES(Elastic Search)는 데이터 저장소를 기반으로 하는 NoSQL입니다. 오픈 소스 분산 검색 엔진입니다.

실시간 데이터 분석을 제공합니다. 따라서 어떤 경우에는 RDBMS보다 더 효율적입니다.

웹사이트/애플리케이션 검색, 로그 데이터 수집 및 분석, 데이터 분석 및 시각화 JSON 형식 DB와 관계형 데이터베이스의 기본 용어 차이는 데이터베이스는 클러스터, 테이블은 인덱스(데이터 구성 메커니즘, 복잡한 데이터 구조를 JSON 문서에 저장), 행은 문서, 열은 필드와 같다는 것입니다.

노드 모음을 클러스터라고 합니다. 샤드는 데이터 조각입니다. 여기서 전제 조건은 MySQL을 설치해야 한다는 것입니다.

오픈 소스 버전은 MySQL 다운로드 사이트에서 찾을 수 있는 MySQL 커뮤니티 서버 섹션에서 찾을 수 있습니다.

다음으로 MySQL에서 테이블을 만듭니다.

CREATE DATABASE info_cus;
DROP TABLE IF EXISTS info_cus;
CREATE TABLE info_cus(
  id integer NOT NULL,
  PRIMARY KEY (id),
  employe_n VARCHAR(32) NOT NULL,
  update_time datetime NOT NULL
);

쿼리 삽입

이제 MySQL 서버로 이동하여 다음 레코드를 삽입합니다.

INSERT INTO info_cus (id, employe_n,update_time)
VALUES (1,'ali',CURDATE()),
(2,'Ayesha',CURDATE()),
(3,'Rizwan',CURDATE()),
(4,'Tanveer',CURDATE());

이제 다음을 통해 확인합니다.

select * from info_cus;

출력:

id	employe_n	update_time
1	ali			2022-11-13 15:31:05
2	Ayesha		2022-11-13 15:31:05
3	Rizwan		2022-11-13 15:31:05
4	Tanveer		2022-11-13 15:31:05

레코드가 있는 올바른 테이블을 얻으면 갈 수 있습니다.

ES는 Java 기반이므로 둘을 연결하려면 JDBC 커넥터를 다운로드해야 합니다. 이 연결은 데이터 저장소에서 필요한 데이터를 추출하고 Elastic Search로 이동하는 데 도움이 됩니다.

JDBC 커넥터를 다운로드하려면 이 링크로 이동하십시오. jar 파일이 있습니다. 보편적이기 때문에 Windows, macOS 등 모든 OS에서 실행됩니다.

다음으로 파일을 추출하고 설치된 버전에 관계없이 bin.jar 파일을 사용하는지 확인하고 이 파일을 jdbc.jar라는 이름으로 루트 디렉터리에 복사합니다. <localpath>/logstash-7.12.0/에서 jdbc_conn.conf라는 새 텍스트 파일을 생성합니다.

이 새 텍스트 파일에서 아래 제공된 다음 코드를 사용하십시오. JDBC 플러그인을 통해 Logstash 파이프라인을 생성합니다.

input {
  jdbc {
    jdbc_driver_library => "<driverpath>/mysql-connector-java-<versionNumber>.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://<MySQL host>:3306/es_db"
    jdbc_user => "<myusername>"
    jdbc_password => "<mypassword>"
    jdbc_paging_enabled => true
    tracking_column => "unix_ts_in__seconds"
    use_column_value => true
    tracking_column_type => "numeric"
    schedule => "*/5 * * * * *"
    statement => "select *, unix_timestamp AS unix_ts_in__seconds FROM elas_table where (unix_timestamp > :sql_last_value AND modification_time < NOW()) ORDER BY modification_time ASC"
  }
}
filter {
  mutate {
    copy => { "id" => "[@metadata][_id]"}
    remove_field => ["id", "@version", "unix_ts_in__seconds"]
  }
}

출력:

{
  stdout { codec =>  "rubydebug"}
}

이제 새 JDBC_conn 구성 파일인 bin/logstash -f jdbc_conn.conf로 Logstash를 엽니다. 마지막으로 Logstash로 이동하여 데이터를 이동하고 Elastic Search에 로그인하여 Kibana에서 데이터를 인증합니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn