AI와 UUID 그리고 MySQL The Problem with Using a UUID Primary Key in MySQL — PlanetScaleUnderstand the different versions of UUIDs and why using them as a primary key in MySQL can hurt database performance.planetscale.com 서론프로젝트를 진행하다가 UUID 기본키(PK)에 대한 내용이 나오게 되었습니다. UUID · Issue #69 · rimo030/nestjs-e-commerce-frame우리는 PK로 int 타입을 지정하고 있습니다. 하지만 제 개인적인 선호는 UUID 쪽이긴 합니다. UUID는 뭘까요? 그리고 int로 지정하는 것..
B-Tree와 B+Tree트리에 대하여 [DB] 인덱스(Index) 데이터 베이스 인덱스에 대하여 인덱스(Index)란? 인덱스는 데이터 베이스 레코드에 빠르게 접근하기 위해서 키와 값(포인터, 주소)의 쌍으로 구성되는 데이터 구조입니다. 데이터베이스를 책이 munak.tistory.com B+Tree는 리프 노드에만 데이터를 저장하고, 연결 리스트로 구성되어 있기에 범위 검색에 더 효율적입니다. 인덱스 관련한 글에서 B+Tree의 장점을 위와 같이 설명했었습니다. 왜 B-Tree에 비해 B+Tree가 더 범위 검색에 효율적인 걸까요? 이번글에서 정리해보려고 합니다. B-Tree B-Tree는 널리 쓰이는 인덱스 자료구조 중 하나입니다. B-Tree는 이진 트리를 확장한 형태로, 하나의 노드가 가질 수 ..
아래글에 이어 작성되었습니다. [DB] 락(Lock)과 트랜잭션 아래 글에 이어 작성되었습니다. [DB] 트랜잭션(Transaction)과 트랜잭션 격리 수준(Isolation Level) 트랜잭션이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 munak.tistory.com MySQL의 락에 대하여 MySQL의 락 MySQL은 내부적으로 다양한 컴포넌트와 엔진들의 조합으로 구성됩니다. 엔진은 크게 쿼리 처리 및 데이터베이스 관리를 위한 코어 엔진과, 데이터를 실제로 저장하고 관리하는 스토리지 엔진이 있습니다. 때문에 락도 MySQL 엔진 락과 MySQL 스토리지 엔진 락으로 나뉩니다. 이들은 서로 다른 레벨에서 동작하며 데이터베이스의 전반적인 동작 및 각 스토리지 ..
아래 글에 이어 작성되었습니다. [DB] 트랜잭션(Transaction)과 트랜잭션 격리 수준(Isolation Level) 트랜잭션이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다. 데이터베이스 munak.tistory.com 락과 트랜잭션에 대하여 락(Lock) 트랜잭션을 구현하기 위해 대부분*의 데이터베이스 관리 시스템(DBMS)은 락을 사용합니다. 락은 데이터베이스의 일관성과 무결성을 보장하기 위한 중요한 메커니즘 중 하나입니다. 데이터베이스의 SQL도 여타 다른 프로그래밍 언어와 같이 변수를 설정하고 명령어를 실행할 수 있습니다. 이때, 특정 변수에 대해서 다른 명령어들이 접근할 수 없게..
제 1 정규형부터 Boyce-Codd 정규형 알아보기 정규화와 정규형 정규화는 데이터의 중복을 최소화하고, 데이터의 일관성을 지키기 위해 사용되는 관계형 데이터베이스 설계 이론입니다. 정규형은 정규화 과정에서 테이블이 만족해야 하는 특정 규칙을 나타내는 개념으로, 정규화와는 구별해야 합니다. 정규화는 쉽게 말하면, 관계형 스키마를 더 작은 속성들로 분해해 가는 과정이라고 할 수 있습니다. 주의해야 할 점은 테이블을 의미( = 함수적 종속 관계 )에 맞게 나누어야 하며 추후 데이터 손실이 발생하지 않아야 한다는 거죠. 정규화는 아래와 같은 장점을 가져다줍니다. 이상 현상을 제거하여 데이터를 일관성 있게 보존할 수 있게 합니다. 정규화가 되어 있는 쪽이 현실 세계와의 관계를 더 잘 반영합니다. 데이터 중복이..
데이터 베이스 인덱스에 대하여 인덱스(Index)란? 인덱스는 데이터 베이스 레코드에 빠르게 접근하기 위해서 키와 값(포인터, 주소)의 쌍으로 구성되는 데이터 구조입니다. 데이터베이스를 책이라고 비유한다면 인덱스는 색인(~내용을 찾으려면 ~쪽으로 가세요)과 같다고 할 수 있습니다. 테이블에 많은 데이터가 저장된 경우에 검색을 해서 원하는 결과를 가져오려면 시간이 오래걸리겠죠. 그래서 `칼럼의 값`과 `레코드가 저장된 주소`로 인덱스로 만들어 두는 것입니다. 읽기의 성능에 집중한 기능 DBMS는 인덱스를 항상 정렬된 상태를 유지하기 때문에 데이터를 탐색, 읽어오는데에는 빠르지만 새로운 값을 저장하거나 삭제, 수정하는 경우에는 실행 속도가 느려집니다. ⭐ 따라서 인덱스를 추가하는 건 저장 속도를 어디까지 희..
NoSQL과 비교해서 보면 좋습니다. [DB] NoSQL과 레디스(Redis) NoSQL과 레디스에 대하여 SQL(Structured Query Language) SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 프로그래밍 언어입니다. RDBMS에서 자료의 검색과 관리, 스키마 생 munak.tistory.com SQL의 기본적인 문법에 대하여 SQL SQL은 Structured Query Language의 약자로 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 프로그래밍 언어입니다. 질의어지만 질의 기능뿐 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모두 가지고 있습니다. SQL의 분류 SQL은 크게 3가지로 분류됩니다...
NoSQL과 레디스에 대하여 SQL(Structured Query Language) SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 프로그래밍 언어입니다. RDBMS에서 자료의 검색과 관리, 스키마 생성과 수정, 데이터베이스 객체 접근 등 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어로, 에스큐엘 혹은 시퀄이라고 읽습니다. RDBMS는 오랜 시간 개발자들에게 사랑받아 왔지만, 현대의 대용량/비정형 데이터의 저장이나, 빠른 응답시간 등 새로운 요구사항에 대응하기에는 부족한 점들이 있었습니다. 이에 좀 더 유연한, 새로운 데이터 구조를 가진 데이터 베이스들이 등장하게 되었죠. NoSQL Not Only SQL : 데이터를 저장하는 데에는 SQL 외에 다른 방법..