일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 트랜잭션
- 데이터베이스
- Database
- JavaScript
- 객체지향
- Single Thread
- 개발자
- acid
- 백엔드
- 면접
- 싱글스레드
- architecture
- AWS
- PostgreSQL
- 컨퍼런스
- roadmap
- eventloop
- Redis
- NoSQL
- promise
- Transaction
- OOP
- Developer
- 경력채용
- node.js
- solid
- TypeScript
- 레디스
- V8
- 아키텍처
- Today
- Total
목록Database (7)
devlog.akasai
DB의 Index | devlog.akasai 인덱스를 간단하게 살펴보고 클러스터 인덱스와 넌 클러스터 인덱스를 알아보았습니다. Index란? 추가적인 쓰기와 저장공간을 사용하여 Database 테이블의 검색속도를 높여주는 자료구조입니다. CU akasai.space 인덱스를 간단하게 살펴보고 클러스터 인덱스와 넌 클러스터 인덱스를 알아보았습니다. Index란? 추가적인 쓰기와 저장공간을 사용하여 Database 테이블의 검색속도를 높여주는 자료구조입니다. CUD 작업(Insert, Update, Delete)은 기본적으로 R 작업(Select)을 선행하기 때문에 효율적인 인덱스의 사용은 테이블의 CRUD 작업의 성능을 높여줍니다. 인덱스로 설정되지 않은 컬럼의 조회는 Full Scan수행하기 때문에 속..
TTL을 이용한 DynamoDB Stream Trigger | devlog.akasai 주기적으로 캐싱을 해야 하는 작업이 있어 삽질해본 경험을 공유하려 합니다. 단순하게 Crontab이나 배치 등을 이용하여 처리하는 방법과 Request 단위로 캐싱을 하는 방법을 생각해보았지만, 여러 akasai.space 주기적으로 캐싱을 해야 하는 작업이 있어 삽질해본 경험을 공유하려 합니다. 단순하게 Crontab이나 배치 등을 이용하여 처리하는 방법과 Request 단위로 캐싱을 하는 방법을 생각해보았지만, 여러 조건이 존재해서 아래 방법을 선택했습니다. Data Modeling 기존 API의 latency를 줄이기 위한 일부 데이터를 캐싱하는 작업이였기 때문에 스키마를 복잡하게 모델링하진 않았습니다. 키를 기..
Isolation Level이란? | devlog.akasai 격리 수준(isolation level)이란? 격리수준(isolation level)이란 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 수준입니다. 즉, 한 트랜잭션이 다른 트랜잭션이 변경한 데이터에 대한 접근 강 akasai.space 격리 수준(isolation level)이란? 격리수준(isolation level)이란 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 수준입니다. 즉, 한 트랜잭션이 다른 트랜잭션이 변경한 데이터에 대한 접근 강도를 의미합니다. 레벨이 높아질수록 트랜잭션간 고립정도가 높아지며, 성능저하도 야기됩니다. 일반적인 온라인 서비스에서는 READ COMMITTED나 REPEATABLE READ 중 하나를 ..
Redis가 싱글스레드인 이유? | devlog.akasai 레디스의 대표적인 특징은 싱글스레드입니다. 왜 싱글스레드로 구성되었는지 알아보았습니다. 레디스가 싱글스레드인 이유? 레디스는 Event Loop(이벤트루프)를 이용하여 요청을 수행합니다. 즉, akasai.space 레디스의 대표적인 특징은 싱글스레드입니다. 왜 싱글스레드로 구성되었는지 알아보았습니다. 레디스가 싱글스레드인 이유? 레디스는 Event Loop(이벤트루프)를 이용하여 요청을 수행합니다. 즉, 실제 명령에 대한 작업(Task)는 커널 I/O 레벨에서 Multiplexing(멀티플렉싱)을 통해 처리하여 동시성을 보장합니다. 따라서, 유저 레벨에서는 싱글스레드로 동작하지만, 커널 I/O 레벨에서는 스레드풀을 이용합니다. 4가지 이유 C..
Redis란? | devlog.akasai 개인적으로 가장 좋아하는 NoSQL DBMS가 Redis입니다. 실무에서 기존부터 사용하고 있다 보니 자연스럽게 익숙해진 것 같습니다. 몇몇 특징들을 대충 알고는 있었지만 이번 기회에 자세히 알아보았 akasai.space 개인적으로 가장 좋아하는 NoSQL DBMS가 Redis입니다. 실무에서 기존부터 사용하고 있다 보니 자연스럽게 익숙해진 것 같습니다. 몇몇 특징들을 대충 알고는 있었지만 이번 기회에 자세히 알아보았습니다. 레디스란? Redis(레디스)는 REmote DIctionary Server의 약자로 오픈소스(BSD licensed) DBMS입니다. In-memory(인메모리) 데이터 저장소이며, Key-Value기반의 NoSQL DBMS입니다. 보통..
DB의 Lock/DeadLock | devlog.akasai 교착상태(Dead Lock)란? 모든 프로세스가 대기 상태이며 각 프로세스가 다른 프로세스가 가지고 있는 자원을 기다리고 있으면 교착상태 라고 한다. 데이터베이스 관점에서는 트랜젝션간 발생하는 akasai.space 교착상태(Dead Lock)란? 모든 프로세스가 대기 상태이며 각 프로세스가 다른 프로세스가 가지고 있는 자원을 기다리고 있으면 교착상태 라고 한다. 데이터베이스 관점에서는 트랜젝션간 발생하는 것을 의미하며, 두 개의 트랜젝션이 각각의 트랜젝션이 가지고 있는 리소스의 Lock을 획득하려고 할 때 발생합니다. 교착상태 발생의 필요 충분 조건 네가지의 조건이 모두 충족되어야 교착상태가 발생한다. 상호배제 (Mutual Exclusion..
트랜잭션과 ACID | devlog.akasai 트랜잭션이란? 여러 작업을 하나로 묶은 작업수행의 논리적 단위입니다. 한 개 이상의 작업으로 구성되며 한 트랜잭션은 모두 실행되거나, 실행되지 않습니다. 트랜잭션의 상태 한 트랜잭션 플 akasai.space 트랜잭션이란? 여러 작업을 하나로 묶은 작업수행의 논리적 단위입니다. 한 개 이상의 작업으로 구성되며 한 트랜잭션은 모두 실행되거나, 실행되지 않습니다. 트랜잭션의 상태 한 트랜잭션 플로우의 흐름입니다. Active(활성) 트랜잭션의 연산들이 정상적으로 실행 중인 상태. Partially Committed(부분 완료) 트랜잭션의 모든 연산들이 정상적으로 완료되었지만, Commit연산 직전의 상태. Committed(완료) 트랜잭션이 성공적으로 완료되어..