db 9

[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

[AWS] Amazon RDS란?

✅ Amazon RDS란? AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹서비스이다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하고, 사용자가 애플리케이션에 집중하여 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원해주는 서비스이다. ✅ RDS 데이터베이스 엔진 종류 - MySQL - PostgreSQL - MariaDB - ORACLE - SQLServer - Amazon Aurora ✅ RDS의 특징 관계형 데이터베이스를 제공하는 서비스 Relation Database Service: 관계형 데이터베이스 NoSQL과 반대 가상 머신 위에서 동작 단 직접 시스템에 직접 로그인 ..

AWS 2023.03.07

[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] MySQL 아키텍처

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

Database/MySQL 2023.02.03

[DB] 데이터베이스 정규화란?

✅ 정규화란? 데이터베이스 정규화는 관계형 데이터베이스 데이터 모델의 중복을 최소화하고 데이터의 일관성, 유연성을 확보하기 위한 목적으로 데이터를 분해하는 과정을 뜻한다. 일반적으로 크고 제대로 조직되지 않은 테이블들을 잘 조직된 여러 개의 테이블을 나누는 과정이라고 생각하면 이해하기 쉽다. 정규화를 하는 목적은 데이터들을 조금 더 효율적으로 관리하는데에 그 목적이 있다. 불필요하거나 중복되는 데이터들을 제거한다. 이상현상(Anomaly)을 방지한다. 데이터 저장을 논리적으로 한다. 데이터를 효율적으로 관리하기 위해서는 위의 3가지를 고려해 데이터모델을 재설계해야 한다. 이렇게 정규화를 수행하면 비즈니스 로직에 변화가 생기더라도 데이터 모델의 변경을 최소화할 수 있다. ✅ 이상현상(Anomaly)이란? ..

Computer Science 2023.02.02

[DB] 데이터베이스 인덱스(Index)란 무엇인가?

아직까지 미미한 양의 DB를 다뤄보았기 때문에 데이터 양이 증가할수록 실행 속도가 눈에 띄게 느려지는 경험을 해보지는 못했다. 하지만 DB데이터의 양이 증가할수록 쿼리를 잘 사용해야하고, 쿼리의 성능을 높이는 데 중요한 것은 인덱스를 적재적소로 활용해야 함은 잘 알고 있다. 오늘은 인덱스의 개념과 구조, 그리고 필요성, 사용했을 때 장단점들에 대해 정리해보고자 한다. ✅ 인덱스(Index)란? 인덱스(Index)는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료구조이다. 테이블의 특정 컬럼(Column)에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 컬럼의 값과 물리적 주소를 (key, value)의 한 쌍으로 저장한다. 인..

Computer Science 2023.01.30
728x90