728x90
반응형

백엔드 8

[매일메일] 넥스트키 락(Next-Key Lock)이란?

Next-Key Lock이란 무엇인가요? 넥스트키 락은 레코드 락과 갭락을 결합한 형태로, 특정 인덱스 레코드와 그 주변의 갭을 동시에 잠그는 락입니다. 이를 통해 레코드 자체의 변경과 함께 그 주변 공간의 변경도 동시에 제어할 수 있습니다.넥스트키 락은 특정 레코드와 그 주변 공간을 잠그기 때문에, 다른 트랜잭션이 새로운 레코드를 삽입하여 팬텀 리드를 발생시키는 것을 방지합니다. orders_id | orders_amount----------|---------------1 | 1002 | 2003 | 300// 트랜잭션 A 시작START TRANSACTION;// 트랜잭션 A amount = 200인 orders_id = 2 레코드에 대한 레코드 락과 1-2,..

[매일메일] 갭락(Gap Lock)이란?

Gap Lock이란 무엇인가요? 갭 락은 특정 인덱스 값 사이의 공간을 잠그는 락입니다. 기존 레코드 간의 간격을 보호하여 새로운 레코드의 삽입을 방지합니다. 갭 락은 범위 내에 특정 레코드가 존재하지 않을 때 적용됩니다. 트랜잭션이 특정 범위 내에서 데이터의 삽입을 막아 팬텀 읽기(Phantom Read) 현상을 방지합니다. 예를 들어, 인덱스 값 10과 20 사이의 갭을 잠그면 이 범위 내에 새로운 레코드 15를 추가할 수 없습니다.// id 1, 3, 5가 저장된 orders 테이블// 트랜잭션 A 시작START TRANSACTION;// 트랜잭션 A 1-3과 3-5 사이의 갭과 3 레코드 락 설정(넥스트키 락)SELECT * FROM orders WHERE orders_id BETWEEN 2 AN..

[매일메일] 팬텀 리드(Phantom Read) 란?

Phantom Read란 무엇인가요?Phantom Read는 트랜잭션이 동일한 조건의 쿼리를 반복 실행할 때, 나중에 실행된 쿼리에서 처음에는 존재하지 않았던 새로운 행이 나타나는 현상입니다. 이는 주로 읽기 일관성(Read Consistency) 을 유지하는 과정에서 발생할 수 있는 문제로, 데이터 삽입이나 삭제가 다른 트랜잭션에 의해 이루어질 때 발생합니다.  -- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- 트랜잭션 B 시작START TRANSACTION;-- 트랜잭션 B 새로운 행 삽입INSERT INTO orders (customer_id, amount) VALUES (4, 250);-..

[매일메일] 동기와 비동기의 차이점은 무엇인가

동기와 비동기는 호출하는 함수의 작업 완료를 기다리는지 여부의 차이가 있습니다.함수 A가 동기로 함수 B를 호출하면 A는 B의 작업이 완료될 때까지 기다려야 합니다. 따라서 작업이 순차적으로 진행됩니다. 반면, 함수 A가 비동기로 함수 B를 호출하면 A는 B의 작업 완료를 신경 쓰지 않고 따로 동작합니다. 따라서 작업이 순차적으로 진행되지 않습니다.블로킹과 동기는 어떤 차이가 있나요? 🤔두 개념은 유사하면서도 다른데요. 동기 호출에서는 호출된 함수가 작업을 완료할 때까지 호출한 함수가 기다립니다. 즉, 작업이 순차적으로 진행되는 것을 의미합니다. 반면, 블로킹은 함수가 호출된 후, 호출한 함수의 결과를 기다리기 위해 실행을 멈추는 상태를 의미합니다. 즉, 제어권이 반환되지 않고 대기하는 상황입니다.1...

[개발 회고 #6] Vue.js + PHP + 고도몰 커머스 프로젝트 - 성장,회고, 그리고 조급함 사이에서

✅ 정리된 본문 예시 (개인 개발일지 & 회고 형식)스타트업에서 일한 지 어느덧 6개월이 지났습니다. Vue.js와 PHP 기반의 커머스 프로젝트에서 다양한 기능을 구현하고 리팩터링하며 성장해온 시간을 정리하고자 합니다.지금 내가 할 수 있는 기능들이 많아졌습니다. 하지만, 만약 지금 작업 중인 파일이 사라진다면? 처음부터 다시 만든다면 상당한 시간이 걸릴 것입니다. 물론 지금까지 들인 시간보다는 빠를 수 있겠지만, 효율적으로 일하기 위해선 체계적인 기록이 반드시 필요하다는 점을 실감하고 있습니다. ✏️ 주요 작업 경험 요약Vue.js + PHP (고도몰 기반) 프로젝트 참여백엔드 API 수정 및 기능별 통신 로직 구현Vue.js HTTP 통신 처리 (axios, async/await)\Vuex 상태관리..

[취업 성공 준비]면접 특강

면접에서 검증하는 것 자기소개 지원동기 역량 (실력, 협업 능력, 성장 가능성) 프로젝트 경험 (성공/실패) 문재해결 능력 나의 장점과 단점 스스로 질문해 보세요 비전공자라면, 대학 전공에 쓴 시간과 비용이 아깝지 않나요!? 우리 회사에 지원한 이유는 무엇인가요!? 전직 회사를 그만둔 이유가 무엇인가요!? 경력 단절 또는 쉬는 기간에 무엇을 했나요!? 직군) 가장 중요한 역량을 무엇이라고 생각하나요? 나로 인해 발생한 가장 큰 문제는 무엇인가요? 자신의 단점은 무엇인가요? 면접이 떨린다면!? 이렇게 생각해라 나와 회사와 대등한 관계이다. 나를 거부하면 회사가 손해 지라는 마음으로 임한다. 내가 회사에 도움이 된다는 인상을 줘라 회사에 궁금한 것이 있다면 물어봐라 (대등) 떨면 오히려 자신 없다는 인상을 ..

[Java] 생성자(Constructor) 란?

생성자란? 인스턴스가 생성될 때 호출되는 것이 인스턴스 초기화 메서드다. 인스턴스 생성을 담당하는 것 : new 키워드 생성자가 인스턴스를 만드는 것이 아니다. 생성자는 인스턴스의 변수를 초기화 하는데 사용되는 특수한 메서드다. 매개변수는 있을 수도 있고 없을 수도 있다. 생성자를 생략하면 컴파일러가 자동으로 기본생성자(Defalut Constructor)를 생성해준다. 생성자를 생성했을 때 기본생성자는 자동으로 만들어 지지 않는다. 따라서 필요하다면 따로 생성해야한다. 생성자를 사용하면 많은 인스턴스를 생성할 때 훨씬 편하게 코딩이 가능하다 public class Main { public static void main(String[] args) { dog dog1 = new dog(); dog1.nam..

IT 정보/Java 2022.05.10

Web Client & Web Server 란?

Web Client & Web Server 란? Web Client & Web Server는 2-Tier Architecture라고도 불린다. 예를 들어 쇼핑몰 앱을 이용하여 물건을 구매하고자 한다. 인터넷 연결 없이 쇼핑을 진행할 수 있을까!? 불가능하다!! 왜냐하면 서버와 상호작용이 있어야 실시간 물건의 유무를 알 수 있고 결제를 할 수 있다. 만약 Client 앱 안에 모든 서버의 정보를 담아둔다고 가정하면 실시간으로 변하는 상품에 변화에 따라 업데이트가 요구되기 때문에 많은 불편함을 호소하게 될 것이다. (물론 결제도 불가능) 따라서 위와 같은 구조를 가지게 되는데, 이를 Web Client & Web Server 혹은 2-Tier Architecture라고 부르는 것이다. Client Serve..

728x90
반응형