대부분의 운영체제와 호환
현재 가장 많이 사용되고 있는 데이터베이스 (2021년 기준, Meta, Twitter 등 많은 기업이 사용)
C, C++로 만들어짐
MyISAM 인덱스 압축 기술, B-트리 기반의 인덱스, 스렏 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스 제공
대용량 데이터베이스를 위해 설계되어 있고, rollback, commit, 이중 암호 지원 보안 등의 기능 제공
MySQL은 쿼리 캐시 지원해서 입력된 쿼리 문에 대한 전체 결과 집합을 저장
→ 사용자가 작성한 쿼리가 캐시에 있는 쿼리와 동일하면 서버는 단순히 구문 분석, 최적화 및 실행을 건너뛰고 캐시의 출력만 표시
MySQL 엔진 아키텍처
Storage Engine
: 데이터베이스의 심장
: 모듈식 아키텍처로 쉽게 storage engine을 바꿀 수 있음
: 데이터 웨어하우징, 트랜잭션 처리, 고가용성 처리에 강점
: storage engine 위에 Connector API 및 서비스 계층을 통해 MySQL 데이터베이스와 쉽게 상호 작용할 수 있음
: 디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징
: 최대 테이블의 크기는 32TB
: SQL 뿐만 아니라 JSON을 이용해서 데이터에 접근할 수 있음
: 지정 시간에 복구하는 기능, 로깅, 접근 제어, 중첩된 트랜잭션, 백업 등을 할 수 있음
: Not only SQL 이라는 슬로건에서 생겨난 DB, SQL을 사용하지 않는 데이터베이스
: JSON을 통해 데이터에 접근
: Binary JSON 형태(BSON)로 데이터가 저장
: 와이어드타이거 엔진이 기본 스토리지 엔진
: 키-값 데이터 모델에서 확장된 document 기반이 DB
: 확장성이 뛰어나며 빅데이터를 저장할 때 성능이 좋고
: 고가용성과 샤딩, 레플리카셋을 지원
: 스키마를 정해 놓지 않고 데이터를 삽입할 수 있어 다양한 도메인의 데이터베이스를 기반으로 분석하거나 로깅 등을 구현할 때 강점
: MongoDB는 document를 생성할 때마다 다른 Collection에서 중복된 값을 갖지 않는 유니크한 값이 ObjectId가 생성
: 기본키로 유닉스 시간 기반 타임스탬프(4바이트), 랜덤값(5바이트), 카운터(3바이트)로 이루어짐
: 인메모리 데이터베이스
: 키-값 데이터 모델 기반의 데이터베이스
: 기본적인 데이터 타입은 string(문자열) 최대 512MB까지 저장
: set, hash 등을 지원
: pub/sub 기능을 통해 채팅 시스템, 다른 데이터베이스 앞단에 두어 사용하는 캐싱 계층, 단순한 키-값이 필요한 세션 정보 관리, 정렬된 셋(sorted set) 자료 구조를 이용한 실시간 순위표 서비스에 사용
면접을 위한 전공지식
Overview of MySQL Storage Engine Architecture
Quick Start: BSON Data Types - ObjectId