트랜잭션 5

안정성과 성능 최적화를 위한 Java와 데이터베이스에서의 Lock 전략

시스템이 복잡해질수록 동시에 여러 작업을 처리해야 할 필요가 늘어나게 됩니다. 이 때 동시에 접근하는 여러 작업 간의 충돌을 방지하기 위해 Lock이라는 개념을 사용하게 됩니다. 여기서 SQL DBMS에서의 Lock과 Java에서의 Lock을 알아보고, 이를 언제 어떻게 사용해야 하는지 살펴보겠습니다. Lock이란?Lock(락)은 특정 자원에 대해 여러 작업이 동시에 접근하는 것을 방지하기 위한 메커니즘입니다. Lock을 활용하지 않은 동시성 문제 예시동시성 문제로 하나 예를 들어보자면, A와 B라는 사람한테 화이트보드에 적혀있는 숫자를 하나씩 증가시켜 달라고 요청을 합니다. 그럼 A라는 사람이 화이트 보드에 있는 3이라는 값을 읽어서 머리속으로 계산을 합니다. 계산을 끝내고 화이트보드를 지우고 다시 적..

Database 2024.10.13

데이터베이스 프로시저, 함수, 뷰: 각각의 역할과 사용법

프로시저와 함수 뷰의 차이점을 설명드리겠습니다. 1. 프로시저프로시저(Procedure)는 데이터베이스의 데이터에 대한 작업을 수행하기 위한 목적으로 사용됩니다. 이것은 데이터의 추가, 수정, 삭제, 검색 등과 같은 다양한 데이터 조작 작업을 수행하는 데 사용됩니다.비즈니스 룰 검증, 트랜잭션 관리, 보안 제어 등과 같은 데이터베이스 관리 작업에도 활용됩니다.프로시저는 무엇을 return하는 것 보다 데이터를 조작하기 위해 사용됩니다. 그런 이유로 리턴값이 없는 프로시저가 일반적입니다. 2. 함수함수(Function)는 주로 값을 계산하거나 가공하기 위해 사용됩니다.함수는 return 값으로 단일 값(숫자 또는 문자열)을 제공하는 것이 일반적입니다.함수는 입력 값을 받아서 계산하고, 그 결과 값을 반환합..

Database 2023.12.26

트랜잭션 격리 수준의 종류와 성능 최적화 전략

트랜잭션과 격리 수준 데이터베이스에서 트랜잭션과 격리 수준은 데이터의 무결성을 유지하고 동시성을 관리하는 중요한 개념입니다. 트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변화시키기 위해 실행되는 프로그램의 단위 작업입니다. 트랜잭션은 다음과 같은 ACID 속성을 만족해야 합니다.A : Atomicity 원자성을 의미하며, 트랜잭션 내의 모든 연산은 하나의 작은 단위로 동작해야 합니다. 쉽게말해 모든 연산이 실패하거나, 모든 연산이 성공하거나 둘 중 하나만 처리되도록 해야합니다.C : Consistency 일관성을 의미하며, 트랜잭션은 데이터 일관성 상태에서 다른 일관된 상태로 전환해야 합니다. 예를 들면 "학생"이라는 데이터가 테이블에서 삭제된다면 "수강신청"이라는 학생에 Relation 되어있는 데이터..

Database 2023.09.02

Kafka의 EOS 보장 및 성능 최적화 전략: Producer, Consumer, Broker 설정

1. EOS의 개념과 중요성EOS (Exactly Once Semantics)는 메시지 전송에서 메시지가 한 번만 전송되고 처리되는 것을 보장하는 전송 보증입니다. 다시 말해, 송신자와 수신자 사이에 데이터의 중복 또는 손실 없이 데이터가 한 번만 전송되는 것을 의미합니다. EOS의 중요성:데이터 중복성 제거: 중복된 메시지는 데이터의 무결성을 해칠 수 있습니다. EOS는 이를 방지하여 데이터의 정확성을 보장합니다.데이터 손실 방지: 손실된 메시지는 시스템의 안정성을 위협합니다. EOS는 모든 메시지가 제대로 전달되도록 보장합니다.자원 효율성: 중복 메시지를 처리하는 데 필요한 자원을 절약하여 시스템의 효율성을 높입니다.  2. Kafka에서 EOS를 어떻게 구현하는지Apache Kafka는 0.11.0..

DevOps 2023.08.08

Redis 트랜잭션: MULTI부터 EXEC까지 트랜잭션 처리 과정

Redis 트랜잭션 에 대하여 알아보겠습니다. 우선 트랜잭션이 이루어지는 순서는 다음과 같습니다.MULTI : 트랜잭션을 시작합니다. 이후에 실행되는 명령어는 모두 이 트랜잭션에 속합니다.명령어 저장 : MULTI 이후에 실행되는 멸영어들은 순차적으로 기록되어 트랜잭션 로그(명령어 큐)에 저장됩니다. 여기에 저장된 명령어들은 실행되지 않습니다.EXEC : 트랜잭션을 실행합니다. EXEC 명령어를 호출하면 트랜잭션 로그(명령어 큐)에 저장된 순서대로 명령어들을 실제로 실행합니다.트랜잭션 결과 : 만약 중간에 오류가 발생하거나, WATCH로 감시한 키가 변경되었다면, EXEC가 호출되기 전까지의 트랜잭션의 모든 명령어들은 취소되어 실행되지 않은 것처럼 처리됩니다. 트랜잭션의 주의사항Redis는 단일 스레드로..

Database 2023.08.04