🌏 DataBase/MySQL

🌏 DataBase/MySQL

[MySQL] 전문 검색 기능 : FullText Search

🚨 이슈 상황 회사 내부 ERP 시스템에서 검색 기능을 구현하였다. ㅜㅜ 데이터가 많이 쌓이면서 검색이 느리다는 이슈 사항이 있었다. 처리를 하기에 앞서 어떻게 바꾸면 좋을 것인지 생각하면서 정리를 해 본 글이다. 초반에는 Elasticsearch를 이용해서 구현을 해보려고 목표를 잡았으나, 주어진 작업시간이 짧고 리소스가 많이 드는 기술이기 때문에 다른방법을 찾다가 FullText Search에 대해 알게 되었다. 🔎 검색 기능을 구현하기 위한 몇가지 방안 1. 검색 엔진 Elasticsearch 💡 Elasticsearch 란 ? Elasticsearch 는 Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진입니다. Elasticsearch를 통해 루씬 라이브러리를 단..

🌏 DataBase/MySQL

[DB] JOIN 정리 ( INNER / LEFT / RIGHT )

# JOIN 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법 연결하려는 테이블들이 적어도 하나의 컬럼을 공유하고 있어야 한다. 이 공유하고 있는 컬럼을 PK 또는 FK 값으로 사용 한다. 1. INNER JOIN : 내부조인 -> 교집합 2. LEFT / RIGHT JOIN -> 부분집합 ● 예시 TABLE A ID NAME 1 김철수 2 이나영 3 삼순이 TABLE B ID GENDER 1 남 2 여 4 여 5 남 1. INNER JOIN - 교집합, 공통적인 부분만 SELECT ID NAME GENDER 1 김철수 남 2 이나영 여 SELECT A.ID, A.NAME, B.GENDER FROM A INNER JOIN B ON A.ID = B.ID; 2. LEFT JOIN - 조인 기준 왼쪽에 있는..

🌏 DataBase/MySQL

[DB] Subquery (서브쿼리) 사용법 / select문 안에 select문

# Subquery(서브쿼리) - SQL 에서 쿼리안의 쿼리를 이용하는것을 Subquery 라고 부른다. - 서브쿼리는 메인쿼리가 서브쿼리를 포함하여 종속적인 관계이다. ● 사용방법 SELECT 학과명, (SELECT count(*) FROM 교수 WHERE 학과.학과명 = 교수.학과명) AS 교수숫자 FROM 학과 => 학과 테이블에서 학과명과, (교수테이블에서 학과에따른 교수숫자) 를 select한다. from 절 예시 : SELECT 학과명, 월급평균 FROM (SELECT 학과명, AVG(월급) AS 월급평균 FROM 교수 GROUP BY 학과명) WHERE 월급평균 > 5000 => 학과명과 월급평균을 새로운 서브쿼리 테이블 : (교수테이블에서 테이블) 중 월급평균이 5000 이상인 것만 SEL..

🌏 DataBase/MySQL

[DB] 13.PL/SQL

# PL/SQL 상용 관계형 데이터베이스 시스템인 오라클 DBMS에서 SQL언어를 확장하기 위해 사용되는 프로그래밍입니다. https://livesql.oracle.com/ Oracle Live SQL livesql.oracle.com ● 변수 선언 변수명 데이터타입 := 값; num1 number := 10; ● 상수 선언 상수명 constant 데이터타입 := 값; num2 constant number :=20; declare -- 변수 선언 num1 number := 10; num2 constant number :=20; begin -- 쿼리문 dbms_output.put_line(num1); dbms_output.put_line(num2); end; ● 조건문 if문 if 조건식1 then 쿼리문..

🌏 DataBase/MySQL

[DB] 12. 뷰(VIEW) (Feat.Oracle)

# 뷰(VIEW) 뷰는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체입니다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있습니다. 또한, 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있습니다. - join 를 자주 여러개 사용하게 되면 느려지게 된다. - 조인된 문장을 하나의 가상 테이블로 만들어 사용하는게 낫다 ● 뷰 생성 create view 뷰이름 as 쿼리문; create view vw_user_profile as SELECT u.userid, u.username, p.hp, p.age, p.gender from tb_user u, tb_profile p where u.id = p.userid; ● 뷰 셀렉트..

🌏 DataBase/MySQL

[DB] 11. JPA(Java Persistent API) (Feat.Oracle) & Entity

● Camel Case : 단어를 표기할 때 첫 문자는 소문자로 시작하며 띄어쓰기 대신 (대문자)로 단어를 구분합니다. * Java의 변수는 선언할 때 camelCase로 선언합니다. ● Snake Case : 단어를 표기할 때 모두 소문자로 표기하며, 띄어쓰기 대신 언더바(_)로 표기합니다. * DB테이블 및 컬럼에 사용됩니다. * API 정의하기에 따라 다르지만 주로 API 통신 규격을 만들 때 사용됩니다. # JPA(Java Persistent API) ORM(Object Relatianal Mapping)으로 RDB데이터베이스의 정보를 객체지향으로 손쉽게 활용할 수 있도록 도와주는 도구입니다. 자바객체와 관계형 데이터베이스 둘간의 맵핑을 통해서 보다 손쉽게 적용할 수 있는 기술을 제공합니다. 또한..

🌏 DataBase/MySQL

[DB] 10. ResultSet & PreparedStatement 클래스

# ResultSet 클래스 Statement 객체로 SELECT문을 사용하여 얻어온 레코드 값들을 테이블의 형태로 갖는 객체입니다. ● 메서드 next() : 다음 데이터가 존재하는지를 불린 형으로 알려주는 메서드 ● 싱글톤(Singleton) 애플리케이션이 시작될 때 어떤 클래스가 최초 한 번만 메모리에 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴입니다. * 디자인 패턴 소프트웨어를 설계할 때 특정 부분에서 자주 발생하는 문제들을 해결하기 위해 재사용이 가능한 최적의 방법을 제시하여 프로그램을 개발하는 방법을 말합니다. public class Dbconn { private static Connection dbConn; public static Connection getConnectio..

🌏 DataBase/MySQL

[DB] 9. Statement(인터페이스)

# Statement(인터페이스) Statement 객체는 Statement 인터페이스를 구현한 객체를 Connection 클래스의 createStatement() 메소드를 호출함으로 리턴받을 수 있습니다. Statement 객체가 생성되면 executeQuery() 또는 executeUpdate() 메소드를 호출하여 SQL문장을 실행할 수 있습니다. ● Statement 단점 - SQL쿼리에 매개변수를 부여할 수 없습니다. - 매번 컴파일을 합니다. - "insert into test values ("' + name + '", " + age + " , '" + gender +"')"; 예시 1) public class Main2 { public static void main(String[] args) ..

🌏 DataBase/MySQL

[DB] 8. MySQL 과 JAVA 연결

★JDBC(Java DataBase Connectivity) 자바언어에서 DB 프로그램을 하기 위해 사용하는 API입니다. * JDBC DRIVER : DBMS와 통신을 담당하는 자바 클래스입니다. ● 연결방법 downloads.mariadb.com/Connectors/java/connector-java-2.6.1/ Connectors/java/connector-java-2.6.1/ - MariaDB downloads.mariadb.com mariadb-java-client-2.6.1.jar 다운로드 java(Feat . IntelliJ) 에서 'ctrl + shift + alt + s' 단축키 누른후 libraries '+' 선택 다운받은 mariadb 파일넣어준다. java ) public class..

🌏 DataBase/MySQL

[DB] 7. 테이블 병합(JOIN)

# 테이블 병합(JOIN) 데이터 베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현합니다. SELECT 컬럼명1, 컬럼명2 ... FROM 테이블명1 (INNER, LEFT, RIGHT) JOIN 테이블명2 ON 테이블명1.필드명 = 테이블명2.필드명 ● INNER : 교집합 LEFT : 테이블1을 기준으로 데이터를 병합 RIGHT : 테이블2를 기준으로 데이터를 병합 예) INSERT INTO tb_order VALUES('0000000001', 1000, '양말', now(), 8); INSERT INTO tb_order VALUES('0000000002', 2000, '손수건', NOW(), 2); INSERT INTO tb_order VALUES('0000..

ryang x2
'🌏 DataBase/MySQL' 카테고리의 글 목록