일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 소셜로그인
- CI/CD
- oauth2
- 스프링시큐리티
- 국제화
- springsecurity
- yaml-resource-bundle
- springsecurityoauth2client
- 액세스토큰
- 파이썬
- 스프링
- 스프링부트
- 메시지
- 재갱신
- springdataredis
- java
- 티스토리챌린지
- 백준
- githubactions
- 오블완
- 도커
- Spring
- JIRA
- 트랜잭션
- 리프레시토큰
- 데이터베이스
- 토이프로젝트
- AWS
- docker
- 프로그래머스
- Today
- Total
목록DataBase (3)
땃쥐네
이 글은 현재 절판된 관계형 데이터베이스 실전 입문 의 1.1 ~ 1.2 부분을 개인적으로 학습하고, 정리한 내용입니다. SQL과 관계형 모델 SQL - 관계형 데이터베이스(RDB)에 질의를 하기 위한 언어 - 관계형 모델이 기반이다. 능력 있는 DB 엔지니어가 되기 위해서는 관계형 모델에 대한 이해는 필수 - 오랜 경험이 누적되면 관계형 모델을 모르더라도 적절히 구문을 사용하면서 SQL을 쓸 수 있긴하다. - 하지만, 진정으로 능력 있는 DB 엔지니어를 목표로 한다면 관계형 모델을 제대로 이해해야한다. RDB는 관계형 모델을 바르게 구현할수록 더운 진가를 발휘한다 - SQL은 관계형 모델을 기반으로 한 언어지만 관계형 모델을 충실하게 재현하지는 않았다. - SQL은 유연성이 매우 높게 설계되었기에 관계..
이전 글에서 데이터베이스의 트랜잭션이 무엇인지, 트랜잭션의 4대 특성 ACID는 무엇인지 확인해봤습니다. 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않아야 한다는 격리성(Isolation)을 지키기 위해서, 가장 쉬운 방법은 트랜잭션을 순서대로 실행하는 방법이긴 하나, 이대로면 수 백만건의 동시요청이 들어왔을 때 순서대로 진행되느라 매우 오랜 시간이 걸리게 되는 성능 이슈가 발생한다는 것도 확인했습니다. 트랜잭션의 격리 수준을 조절함으로서 이 성능 문제를 관리할 수 있는데, 국제 표준기구인 ANSI에서는 이 '트랜잭션 격리수준'을 어떻게 정의했고 이 수준에 따라 어떤 현상들이 발생하는 지 이번 글에서 다루도록 하겠습니다. 트랜잭션의 격리 수준 완화에 따라 일어나는 현상들 1. 더티 읽기(Dirt..
마일리지 거래 사례를 통해 확인하는 '트랜잭션'의 필요성 어떤 서비스에서 구매자 '철수'와 판매자 '영희'가 어떤 제품을 거래하는 상황을 상상해봅시다. 대표적으로 아xx매니아와 같은 온라인 게임머니 거래 사이트)가 있겠네요. 여기서는 일단 게임머니 거래, 수수료와 같은 복잡한 상황을 고려하지 않고 단순히 마일리지를 주고 받는 상황을 고려해보겠습니다. 철수가 영희에게 1만 마일리지를 지불하는 서비스 로직을 좀 더 작은 단위로 분리해보면 1. 철수의 마일리지에서 1만 마일리지를 차감 2. 영희의 마일리지에 1만 마일리지를 적립 이 두 가지가 모두 이루어져야합니다. 그런데, 1번은 성공했는데, 2번 작업 진행 과정에서 시스템에 심각한 오류가 발생해서 작업이 진행되지 않는다면 무슨 일이 벌어질까요? 철수의 마일..