본문 바로가기
반응형

분류 전체보기136

[Redis] Redis를 이용한 동시성 이슈 해결 실습해보기 - SETNX 사용 방법 동시성 문제란?여러개의 프로세스나 스레드가 동시에 같은 리소스, 예를 들자면 데이터베이스나 캐시, 파일 등에 접근 할 때 예상 치 못한 데이터 충돌, 중복 실행, 무결성 문제가 발생하는 상황이다. 대표적인 예시로는 재고 감소, 중복 결제 방지, 특정 작업의 중복 실행 방지 등이 필요 할 때 동시성 제어가 필요하다.  Redis를 이용한 동시성 해결 방법 Redis를 활용하여 분산 락(distributed lock)을 사용하면, 하나의 작업이 끝날 때까지 다른 프로세스가 동일한 리소스를 변경하지 못하도록 막을 수 있다. Redis를 이용한 대표적인 동시성 해결 기법은 다음과 같다SETNX (SET if Not Exists) 사용Redlock 알고리즘 (분산 락 강화 버전) 사용이 두가지 방법을 nodejs.. 2025. 2. 20.
[SQL] SQL 실행 순서에 대해서 SQL 쿼리를 작성할 때 아무 생각 없이 짜다가 문득 실행 순서에 대해 어떻게 되는지 궁금해졌다. SQL 쿼리가 실행될 때는 작성한 순서대로가 아니라 내부적으로 정해진 순서에 따라 처리된다.가장 일반적인 실행 순서는 아래와 같다 SELECT ... FROM ... JOIN ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT ...; 실제 실행 순서FROM테이블을 선택하고 원시 데이터를 가져온다.JOIN이 있다면 JOIN 조건에 따라 테이블 결합WHERE조건에 따라 행(Row) 필터링GROUP BY 전에 실행되므로 집계(Aggregation)에 영향을 줌GROUP BY같은 값끼리 그룹화집계 함수 (SUM,AVG,COUNT 등)가 사용될 때만 필요Having.. 2025. 2. 18.
[Redis] redis,docker로 멀티서버에서 pub/sub 실습해보기 어떤 하나의 서비스를 할 때 하나의 서버를 두는 것이 아닌 여러 대의 서버를 두는 경우가 있다. 해당 서비스가 소켓 통신을 통한 채팅 서비스를 제공한다고 생각해보자. A와 B 두 사람이 채팅을 한다고 할 때 서버가 한대라면 문제가 없다. 그런데 서버가 여러 대이고 각자 다른 서버에 연결이 되어 있다면? 그럴 때는 채팅을 어떻게 할 수 있을까? 이럴 때 redis의 pub/sub 기능을 사용해 이를 해결할 수 있다. Redisredis는 인메모리 데이터 베이스로 거대한 맵 데이터 저장소 형태를 가지고 데이터를 메모리에 저장하여 빠른 읽기와 쓰기를 지원한다. 싱글 스레드로 동시성 이슈가 발생하지 않고 해시 테이블을 사용하기 때문에 매우 빠른 속도로 데이터 검색이 가능하다. 이러한 특징으로 캐시 서버로 많이 .. 2025. 2. 9.
[DataBase] 외래키(Foreign Key)에 관한 고찰... 스타트업에 이직 후 업무 중 거의 대부분의 테이블에 외래키 설정이 안되어 있는 것을 알게 되었다. 대학교에서나 기존 직장에서는 왠만하면 외래키 설정이 되어 있었기 때문에 의아한 부분이였다.  다행히 직속 팀장님이 과거 데이터베이스 코어단을 직접 만드시던 디비 전문가셨기 때문에 바로 질문을 드렸고 답변을 해주셨다. 외래키란? 관계형 데이터베이스 관리 시스템(RDBMS)은 테이블 간의 관계를 정의하기 위해 외래키(foreign key)를 사용한다. 외래키는 한 테이블의 열이 다른 테이블의 기본 키(Primary Key)와 연결됨으로써 데이터 무결성을 보장하고, 테이블 간의 관계를 명확하게 정의하는 역할을 한다. 이는 데이터 중복을 방지하고 정합성을 유지하는데 중요한 요소로 작용한다.  과거에는 컴퓨팅 자원이.. 2025. 1. 6.
반응형