CS 지식/데이터베이스 51

데이터베이스 조인 연산은 성능에 영향을 줄까? 안줄까?

포스팅을 작성하게 된 계기는 해당 포스팅을 보고 나서입니다.  https://blog.naver.com/shino1025/223124936920 Table Join은 정말 느리지 않은가?RDBMS의 쿼리에서 빼놓을 수 없는 핵심 기능 중 하나가 바로 "JOIN"이다. 조인은 각기 ...blog.naver.com 사실 6개월전에 봤던 게시글인데 오랜만에 북마크 정리하다가 보게 됐습니다.  6개월전에 볼 때와 크게 다르지 않을 것이라고 예상했던 것과 다르게 꽤 많이 다르게 보였습니다.  이전에 봤을 땐 그저 읽고 이해하기만 했는데 이젠 다른 생각이 들기 시작했습니다.  조인 연산, 성능에 영향을 줄까? 안줄까?일단 직관상 영향을 줄 것처럼 생겼습니다. 테이블을 하나만 조회하는 것과 두개, 세개를 조합해서 조..

데이터베이스 조인 알고리즘과 쿼리 최적화

이번 포스팅은 데이터베이스의 조인 알고리즘과 쿼리를 최적화하는 방법에 대해서 공부해보고 정리해보겠습니다.  데이터베이스를 깊이있게 공부하면 공부할수록 왜 큰 기업들이 DBA라는 직군을 따로 뽑는지 알 수 있게 되는 대목이었습니다. 정말 데이터베이스 하나만으로도 공부해야될게 엄청나게 많네요.  그럼 시작해보겠습니다! 데이터베이스 조인 알고리즘우리가 RDBMS에서 쿼리를 작성하면 우리가 원하는 데이터를 가져오기위해 조인 연산을 진행하게됩니다. 이 조인연산을 최적화하기위해 데이터베이스 내부에선 옵티마이저라는 엔진이 돌아갑니다.  옵티마이저는 데이터베이스의 상태를 파악하고 어떤 조인 알고리즘을 사용하면 좋을지 어떤 인덱스를 사용하면 좋을지 자체적으로 판단하여 조인연산을 최적화합니다.  보통 실행계획을 실행해보면..

Redis Sentinel 장애대응 Notification 구축하기

https://coding-review.tistory.com/533 Redis Sentinel 도커 배포하기대기열 만들기를 진행한게 벌써 10일 전이네요... Redis Sentinel 정말 골치아픈 녀석이었습니다.  이번 포스팅에선 Redis Sentinel을 도커로 배포하면서 삽질했던 부분들을 정리하고자 글을 쓰게 되었coding-review.tistory.com 이 포스팅에 대부분의 세팅이 담겨있습니다! 위의 링크를 참고해주세요.  이번 배포에서 달라진 것이라면 슬랙과 연동하는 것입니다. Sentinel에선 모니터링과 더불어 알람을 제공해줍니다. 특정 상황이 되면 쉘 스크립트 파일을 실행하는 것이죠.  바로 시작해보죠! #!/bin/bashEVENT_TYPE=$1MASTER_NAME=$2MASTER..

Redis Sentinel 도커 배포하기

대기열 만들기를 진행한게 벌써 10일 전이네요... Redis Sentinel 정말 골치아픈 녀석이었습니다.  이번 포스팅에선 Redis Sentinel을 도커로 배포하면서 삽질했던 부분들을 정리하고자 글을 쓰게 되었습니다.  한번 시작해보도록 하겠습니다.   Redis SentinelRedis Sentinel은 Redis에서 제공해주는 HA (High Availability) 전략 중 하나입니다. Sentinel이라는 Redis 서버를 모니터링 하는 Redis Client를 두고 지속적으로 모니터링 하면서 Redis의 상태를 확인하고 장애에 대응하는 기능들을 제공합니다.  Redis Sentinel에 대해서는 이번 포스팅에선 자세히 다루지 않도록 하겠습니다. 배포하는데 집중해보려고합니다. 자세한 내용은..

Redis for Client Side Caching (실습)

전 포스팅에 이어 바로 실습으로 들어가보겠습니다. 전 내용이 궁금하시면 아래의 링크를 참고해주세요! https://coding-review.tistory.com/524 Redis for Client Side Caching (이론)이번 포스팅은 Redis 6부터 제공해주는 신기능 (무려 4년전 기술인 따끈따끈한 신기술입니다.) Redis for Client Side Caching에 대해서 공부해봤습니다.  Client Side Caching사실 이 내용을 공부하게 된 계기coding-review.tistory.com @Configuration@EnableRedisHttpSession@EnableRedisRepositories@Slf4jpublic class RedisConfig { @Value("${..

Redis for Client Side Caching (이론)

이번 포스팅은 Redis 6부터 제공해주는 신기능 (무려 4년전 기술인 따끈따끈한 신기술입니다.) Redis for Client Side Caching에 대해서 공부해봤습니다.  Client Side Caching사실 이 내용을 공부하게 된 계기가 Client Side Caching을 공부하려고 했다가 영어로 구글링한 탓일까요... 제일 상단에 뜬 Redis 공식문서를 보고 공부하게 되었습니다.  원래 우리가 흔히 말하는 Client Side Caching은 HTTP header인 Cache-Control과 ETag를 말합니다. 즉, 브라우저에 캐싱하는 것을 Client Side Caching이라고 하는 것입니다.  이번 포스팅은 그 내용은 아니기때문에 다루지는 않겠습니다. 브라우저에서 캐싱하는 것은 어..

데이터베이스 Failure Mode

요즘 이 사이트를 보면서 공부하고있는데 정말 좋은 것 같습니다.  https://roadmap.sh/backend Backend Developer Roadmap: What is Backend Development?Learn what backend development is, what backend developers do and how to become one using our community-driven roadmap.roadmap.sh 제가 공부했던 내용도 있고 처음 보는 내용도 있는데 처음 본 내용 중에 요즘 공부하고있는 데이터베이스와 관련된 내용으로 골라서 공부해봤습니다.  데이터베이스 Failure Mode저도 처음엔 Failure Mode..? 이게 뭐지? 하고 공부했었는데요. 별건 아니더라..

RDBMS의 레플리케이션 전략

이번 포스팅은 PostgreSQL을 공부하다가 나온 Streaming Replication이 흥미로워서 이참에 다른 RDBMS의 레플리케이션 전략에 대해서 공부해보고 정리해보려고합니다.  이 전략들을 공부하기 전엔 단순히 "RDBMS가 레플리케이션이라는 고가용성 전략이 있고 이걸 이용하면 데이터베이스 서버를 여러대 두면서 부하를 분산시킬 수 있다." 정도만 알고 있었습니다.  이번 기회에 RDBMS의 다양한 전략들을 보면서 조금 더 깊이있는 공부를 한 것 같아서 조금 뿌듯합니다. 한번 정리해보도록 하겠습니다.  Replication이란?레플리케이션 (혹자는 리플리케이션이라고도 읽는 것 같습니다) 은 클러스터링에 비해 안정적으로 가용성을 높이면서 데이터베이스 한대로는 감당할 수 없었던 부하까지 분산시킬 수..

RDBMS의 떠오르는 초신성 PostgreSQL

요즘 여러 회사들의 장애대응 회고를 보면서 드는 생각은 '요즘 PostgreSQL많이쓰네...' 였습니다. 어떤 회사들은 AWS RDS를 PostgreSQL로 한 회사도 있더라구요.  그걸 보면서 어떤 점이 다른 RDBMS를 대체할만큼 매력적이었을까 의문이 들어서 PostgreSQL에 대해서 간단한 개요수준으로 공부해봤습니다.  이번 포스팅에선 PostgreSQL이 다른 RDBMS와 차별점을 가지는 점에 대해서 포스팅을 할 생각입니다.  PostgreSQL이 기존 RDBMS와 뭐가 다를까?제가 아는 PostgreSQL은 Postgres라는 프로젝트에서 시작해 QUEL ('큐엘'이라고 발음하는 것 같습니다) 이라는 언어를 지원한다는 의미에서 PostgreSQL이 되었다고 알고 있습니다.  때문에 발음이 포..

@Transactional과 PostgreSQL은 어울리지 않는다.

제목이 꽤나 자극적이지만 아무리 생각해도 이거만큼 좋은 제목은 떠오르지 않았습니다. 제가 오늘 포스팅을 하게된 계기가 되는 포스팅도 저자분이 "@Transactional의 해로움" 이라고 할 정도이니 말 다한 것이죠. 우선 원래의 글을 올려드릴테니 자세한 내용은 아래의 링크를 참고해주세요! https://channel.io/ko/blog/bad-transactional?fbclid=IwZXh0bgNhZW0CMTEAAR0Atxir0WzSFcBMLmVjDXNLrUoiUl_qX93JPUPoo6EIRqP3irVoc22JEM4_aem_Gt65sDAFShcRmzIYKpla4w @Transactional의 해로움들어가며: 23.12.31 Database outage 새해를 하루 앞둔 12월 31일 자정을 얼마 지나지..