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 메서드를 이용한다.
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 |
댓글