아래글에 이어 작성되었습니다. [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는 인덱스를 항상 정렬된 상태를 유지하기 때문에 데이터를 탐색, 읽어오는데에는 빠르지만 새로운 값을 저장하거나 삭제, 수정하는 경우에는 실행 속도가 느려집니다. ⭐ 따라서 인덱스를 추가하는 건 저장 속도를 어디까지 희..
아래 글에서 Split 타입 구현도 살펴볼 수 있습니다! [TS] 타입이 추론되는 String.prototype.split - 1 [TS] 타입이 추론되는 String.prototype.split - 2 DeepMerge 타입을 구현합니다. 서론 이번 글에서는 두 인터페이스를 합성하여 하나의 인터페이스로 만들어 주는 DeepMerge 타입을 만들어 보려고 합니다. 음...단순히 인터섹션(&)을 이용하면 되는 것 아닌가요? 🤔 type DeepMerge = T & P; 물론 인터섹션 타입을 이용하면 두 객체를 병합할 수 있습니다. // 인터섹션 타입을 이용해 두 객체를 병합할 수 있지만 type DeepMerge = T & P; type Example = DeepMerge; const e1: Example..
아래글에 이어 작성되었습니다. [TS] 타입이 추론되는 String.prototype.split - 1 글을 읽으시면서 모르는 개념이 나오더라도 바로바로 따라 해 볼 수 있게 작성하였습니다. TS가 처음이시라면 아래 글들이 이해에 도움이 될 것 같습니다.⭐ [TS] TypeScript 시작하기 [TS] TypeScript의 munak.tistory.com Split 타입에 파라미터 limit를 추가합니다. limit String.prototype.split는 optional parameter로 limit를 전달할 수 있습니다. /** * Split a string into substrings using the specified separator and return them as an array. *@pa..
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가지로 분류됩니다...
글을 읽으시면서 모르는 개념이 나오더라도 바로바로 따라 해 볼 수 있게 작성하였습니다. TS가 처음이시라면 아래 글들이 이해에 도움이 될 것 같습니다.⭐ [TS] TypeScript 시작하기 [TS] TypeScript의 기본 타입 [TS] TypeScript의 타입 조작 (제너릭, 조건부타입, infer) [TS] 유틸리티(Utility) 타입 JS의 String.prototype.split()을 모방하여 타입추론이 가능한 문자열 분할 타입, Split를 새롭게 구현합니다. String.prototype.split() /** * Split a string into substrings using the specified separator and return them as an array. *@params..