Database 10

[MYSQL] 3월에 태어난 여성 회원 목록 출력하기(프로그래머스/Level 2)

# 3월에 태어난 여성 회원 목록 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/131120 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ⭐ 코드 SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') FROM MEMBER_PROFILE WHERE (MONTH(DATE_OF_BIRTH) = 3) AND (GENDER = 'W') AND (TLNO IS NOT NULL) ORDER BY MEMBER_ID A..

Database/MySQL 2023.05.17

[MongoDB] SQL vs MQL

✅ SQL이란? 관계형 데이터베이스와 같은 경우에는 데이터를 테이블에 직관적으로 간단하게 나타내는 '관계형' 모델을 기반으로 한다. 우리가 익숙하게 알고있는 SQL(Structured Query Language)은 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다. 테이블의 열에는 데이터의 속성이 들어 있으며, 각 레코드에는 일반적으로 각 속성에 대한 값이 있으므로 데이터 포인트 간의 관계를 손쉽게 설정할 수 있다. ✅ MQL이란? MQL은 MongoDB Query Language로 몽고디비의 쿼리 언어이다. SQL이 테이블에 대한 모든 데이터를 조회할때 아래와 같이 문법을 작성한다면 select * from table; MQL은 아래와 같이 문법을 작성한다. MQL은 객체로서 데이..

Database/MongoDB 2023.03.28

[MongoDB] Replica Set vs Sharded Cluster

먼저 배포하기 전에 2가지를 고려해야한다. 1. 서비스의 요구사항 확인 -> 하루에 쌓이는 데이터양, 얼마나 보관하는지, 쓰기가 많은지 읽기가 많은지 등 2. 어떤 환경에서 배포하느냐 -> 내가 준비할 수 있는 서버의 스펙을 확인해야 한다. ✅ Replica Set vs Sharded Cluster 장단점 배포 형태 장점 단점 Replica Set - 운영이 쉽다. - 장애 발생시 문제 해결 및 복구가 쉽다. - 서버 비용이 적게 든다. - 성능이 좋다. - 개발 시 설계가 용이하다. - Read에 대한 분산이 가능하지만, Write에 대한 분산은 불가능하다. Sharded Cluster - Scale-Out이 가능하다. - Write에 대한 분산이 가능하다. - Replica Set의 모든 장점이 상대..

Database/MongoDB 2023.03.25

[MySQL] 클러스터 인덱스

클러스터 인덱스는 아래와 같이 3줄로 요약이 가능하다. 1. 클러스터 인덱스는 데이터 위치를 결정하는 키 값이다. 2. MySQL의 PK는 클러스터 인덱스다. 3. MySQL에서 PK를 제외한 모든 인덱스는 PK를 가지고 있다. 클러스터 키는 정렬된 자료구조이고 클러스터 키 위치에 따라서 데이터의 주소가 결정된다. 이를 다르게 말한다면 클러스터 키 순서에 따라서 데이터 저장 위치가 변경된다는 뜻이고 데이터 저장 위치가 변경된다는 것은 클러스터 키 삽입 / 갱신 시에 성능이슈가 발생한다. 인덱스를 만들 때마다 pk를 만들게 되므로 PK의 사이즈가 인덱스의 사이즈를 결정하게 된다. 🔎 클러스터 인덱스의 장점 1. PK를 활용한 검색이 빠름(특히 범위 검색) 2. 세컨더리 인덱스들이 PK를 가지고 있어 커버링..

Database/MySQL 2023.03.07

[MySQL] 인덱스 자료구조

인덱스의 핵심은 탐색 범위를 최소화 하는 것이다. 그렇다면 탐색이 빠른 자료구조들은 어떤 것이 있을까? Hash Map, List, Binary Search Tree 등이 있는데, 하나씩 간단하게 살펴보도록 하자. ✅ HashMap - 단건 검색 속도 O(1) - 범위 탐색 O(N) - 전방 일치 탐색 불가 Ex) like 'AB%' 해시맵은 키와 밸류가 있다. 그렇기 때문에 단건 검색 속도는 빠른편이며 상수 시간이 걸리게 된다. 범위 탐색에는 O(N) 시간이 걸리게 된다. ✅ List - 정렬되지 않은 리스트의 탐색은 O(N) - 정렬된 리스트의 탐색은 O(logN) - 정렬되지 않은 리스트의 정렬 시간 복잡도는 O(N) ~O(N * logN) - 삽입 / 삭제 비용이 매우 높음 정렬되지 않은 리스트는..

Database/MySQL 2023.03.06

[MySQL] 조회 최적화를 위한 인덱스 이해하기

컴퓨터 구조의 기본이 되는 모습을 표현하면 위와 같다. CPU가 데이터를 가지고 오거나 저장하기 위해서는 I/O 입출력 버스를 통하게 되고 메모리나 디스크, 모니터로 데이터를 보내게 된다. 여기서 데이터를 저장하기 위한 용도로 자주 사용되는 것은 메모리와 디스크이다. 그렇다면 메모리와 디스크의 차이점은 무엇일까? 메모리 디스크 속도 빠름 느림 영속성 전원이 공급되지 않으면 휘발 영속성이 있음 가격 비쌈 저렴 속도 측면에서 보면 메모리는 디스크에 비해서 훨씬 빠르다. 하지만 영속성 측면에서 보면 메모리는 전원이 공급되지 않으면 사라지게 된다. 반면에 디스크 같은 경우에는 전원이 공급되지 않더라도 데이터가 보존이 된다. 그렇기 때문에 영속성 측면에서 본다면, 결국 데이터베이스의 데이터는 디스크에 저장이 되어..

Database/MySQL 2023.02.04

[MySQL] MySQL 아키텍처

✅ MySQL 아키텍처 데이터베이스는 파일을 관리하는 서버이다. Client가 Server에게 데이터를 요청하는 것처럼 서버는 데이터베이스에 데이터를 요청하게 된다. Client는 JSON을 통해 Server에게 데이터를 요청하는 것과 같이 Server는 SQL을 통해서 MySQL 서버에 데이터를 요청하게 된다. 위 그림에서 MySQL엔진은 사람으로 비유하면 판단과 명령을 하는 두뇌라고 생각하면 되고, 스토리지 엔진은 판단을 수행하는 팔과 다리라고 보면 될 것 같다. ✅ MySQL엔진 MySQL엔진을 세부적으로 살펴보면 쿼리 파서, 전처리기, 옵티마이저, 쿼리 실행기로 이루어져 있다. 🔎 쿼리파서 SQL을 파싱하여 Syntax Tree를 만듬 이 과정에서 문법 오류 검사가 이루어짐 🔎 전처리기 쿼리파서에..

Database/MySQL 2023.02.03

[MongoDB] Sharded Cluster

✅ Sharded Cluster 왼쪽의 A-Z는 Replica Set인데 만약 Replica Set에 감당할 수 없을 정도로 많은 데이터들이 유입이 된다면, 오른쪽처럼 Sharded Cluster로 배포하게 된다. 여기서 Sharding은 하나의 큰 데이터를 여러개로 분할하는 과정을 뜻하고, 분할되는 데이터 셋의 모음을 Shard라고 한다. Sharded Cluster는 분산을 위한 솔루션으로 Replica Set으로 데이터의 서브셋이 나뉜다. Sharding은 분산처리 즉, Scale-Out을 위한 솔루션이다. ✅ Sharded Cluster의 장단점 장점 단점 - 용량의 한계를 극복할 수 있다. - 데이터 규모와 부하가 크더라도 처리량이 좋다. - 고가용성을 보장한다. - 하드웨어에 대한 제약을 해결..

Database/MongoDB 2023.02.01

[MongoDB] Replica Set

✅ Replica Set Members Status Description Primary - Read / Write 요청 모두 처리할 수 있다. - Write를 처리하는 유일한 멤버이다. - Replica Set에 하나만 존재할 수 있다. Secondary - Read에 대한 요청만 처리할 수 있다. - 복제를 통해 Primary와 동일한 데이터 셋을 유지한다. - Replica Set에 여러개가 존재할 수 있다. ✅ Replica Set Election(Fail-Over) Replica Set으로 자동 Fail-Over가 가능하기 때문에 멈춤 없이 서비스를 지속적으로 운영할 수 있는 특징이 있다. 하지만 위의 그림처럼 Primary가 죽게 되면 Read에 대한 요청을 처리할 수 없고, 2개의 Second..

Database/MongoDB 2023.01.30

[MongoDB] MongoDB 구조

MongoBD는 MySQL과 같은 관계형 RDBMS와 다른 구조를 가진다. RDBMS의 Cluster와 DataBase는 동일하지만 RDBMS의 Table, Row, Column의 개념이 MongoDB에서는 Collection, Document, Field의 개념으로 보면 될 것 같다. ✅ MongoDB 구조 🔎 Database 특징 Database Description admin - 인증과 권한 부여 역할 - 일부 관리 작업을 하려면 admin Database에 대한 접근이 필요 local - 모든 mongodb instance는 local database를 소유한다. - oplog와 같은 replication 절차에 필요한 정보를 저장한다. - startup_log와 같은 instance 진단 정보를..

Database/MongoDB 2023.01.30
728x90