본문 바로가기
Database/MySQL

[MySQL] (완) 기본 문법 - 7

by VictorMeredith 2023. 5. 4.

1. FULL TEXT SEARCH

- LIKE '%어쩌고%' 이러면 INDEX 사용이 불가능해진다. 

- 그래서 FULL TEXT INDEX를 추가하고 MATCH(), AGAINST()를 사용한다.

- 작동방식 : 모든 단어를 추출해서 정렬하고 단어가 출현하는 행을 모두 정리해두고 이를 활용한다.

 

- 예시

- bookName 열에서 'MySQL' 을 검색한다.

- 2자 이하는 검색 자체가 불가능하다.

- 기본적으로 ('MySQL' IN NATURAL LANGUAGE MODE) 로 실행된다.

- 이는 Stopwords를 제거하고 검색해준다 (the, is, are, and, am, also 뭐 이런것들)

- 한글은 보통 불리언 모드를 사용한다.

 

- 예시

- *는 아무문자라는 뜻이다 ('에스큐엘의' 이런 거 검색됨)

- '에스큐엘 기본' : 띄어쓰기는 OR이다

- '+에스큐엘 +빅데이터' : +는 필수이고, -는 NOT이다.

 

cf) ngram Parser : 

- ngram은 텍스트 검색 및 분석에서 사용되는 일련의 연속된 문자들입니다.

- n은 연속된 문자의 개수를 나타냅니다. 예를 들어, "hello"라는 단어에 대해 2-gram (또는 bigram)은 "he", "el", "ll", "lo"와 같은 문자 쌍입니다. ngram parser는 주로 텍스트 검색 및 분석을 개선하기 위해 사용됩니다.

- 문자열을 n-gram으로 나누어 인덱싱하면, 부분 문자열 검색이 빠르게 수행될 수 있습니다.

- ngram parser는 대표적으로 MySQL, PostgreSQL, Elasticsearch 등의 데이터베이스 관리 시스템에서 사용되며, 다양한 언어 및 텍스트 유형을 지원합니다.

 

cf) Elasticsearch : 

- Elasticsearch는 실시간 분산 검색 및 분석 엔진으로, Apache Lucene 기반으로 개발되었습니다.

- 대량의 데이터를 빠르게 검색하고 분석할 수 있는 고성능의 오픈 소스 솔루션입니다.

- Elasticsearch는 주로 로그 분석, 실시간 검색, 데이터 시각화, 자연어 처리, 대규모 데이터 분석 등 다양한 분야에서 사용됩니다.

- Elasticsearch는 RESTful API를 통해 데이터를 쉽게 색인하고 검색할 수 있으며, 복잡한 쿼리를 수행할 수 있습니다.

- 또한, Elasticsearch는 확장성이 높아 대규모 데이터 처리에 적합하며, 다양한 플러그인과 Kibana라는 데이터 시각화 도구를 통해 사용자 친화적인 인터페이스를 제공합니다.

 

2. TRANSACTION : 모든 작업은 '모두성공' or '모두실패' 둘 중 하나로 결정. data의 일관성을 보장한다.

- 쿼리문 하나가 에러/실패라면 전체 취소

- START TRANSACTION 으로 모드 시작 -> 수정 -> COMMIT 해야 반영된다.

- ROLLBACK 하면 롤백된다.

- 보통 서버에서 짠다. 로직의 일부로

서버에서는 이런 구조로 작성한다.

- Express/Mongoose 에서는 Mongoose의 session 메서드를 이용한다.

Express - Mongoose 스택에서는 이런식으로 짠다.

 

3. ACID (Transaction에서 지켜야 되는거)

- Atomicity(원자성) : Transaction 이 'ALL성공' 혹은 'ALL실패' 둘중 하나여야한다.

- Consistency(일관성) : Transaction 은 일관된 상태에서 다른 일관된 상태로 변환해야 한다. (규약, 제약조건 등의 만족)

- Isolation(독립성) : Transaction 끼리는 영향 없이 독립적이어야 한다.

- Durability(영속성) : Transaction 이 commit 되면 영구적으로 DB에 저장되어야 한다.

 

4. AWS 호스팅

- AWS EC2 : 여기에 DB쓰면 고생 많이함. 근데 설정을 커스터마이징할 수 있고, 가격이 싸다.

- Aurora, RDS : Managed 서비스니까 이런거 쓰자. Aurora가 더 좋지만 비싸다.

- RDS의 EndPoint -> DBeaver 연결한다. 이는 MongoDB의 Compass처럼 사용할 수 있다.

 

5. 엔티티 관계도

- 기본적으로 DB가 있으면 DBeaver에서 확인할 수 있다.

- 다양한 차트 그리는 서비스가 있으니 잘 찾아보고 사용하자.

- 순서 : 기능정의 -> 표 -> 테이블 이어주기

- 기능 정의 : 회원가입, 주문하기, 즐겨찾기, 글쓰기, 지우기 등등

- 표 만들기 : PrimaryKey는 (PK)로 표기하고, ForeignKey는 (FK)로 표기한다. id는 굵게 표기한다.

- PK <-> FK 관계를 이어준다.

- PK 1개당 FK 최대/최소 몇개 가질 수 있는가 ? 를 생각하고 표기해준다. 

- A -------최소-최대- B 이렇게 이어준다. 

- 동그라미는 0개, 일자는 1개, 삼지창은 무한이다.

- 반대도 해야한다. A-최대-최소-------------최소-최대-B 

 

요런 식

'Database > MySQL' 카테고리의 다른 글

[MySQL] 이것이 MySQL이다  (0) 2024.03.25
[MySQL] Sequelize 개념 및 세팅 방법, 쿼리 예제  (0) 2023.05.12
[MySQL] 기본 문법 - 6  (0) 2023.05.04
[MySQL] 기본 문법 - 5  (0) 2023.05.04
[MySQL] 기본 문법 - 4 (Join 개쉬움)  (0) 2023.05.04

댓글