본문 바로가기

[ Computer Science ]67

[Database] 데이터베이스 시스템에서 동시성을 제어하는 방법에 대해 간단하게 설명하기 데이터베이스 시스템에서 동시성을 제어하는 방법에는 다중 버전 동시성 제어 multi version concurrency control인 MVCC와 잠금 기반 방식인 lock based concurrency control이 있다.  MVCC는 데이터 여러 버전을 유지하면서 트랜잭션이 동시에 데이터를 R W 할 수 있도록 하는 방법이다. 각 트랜잭션은 각각 트랜잭션마다의 스냅샷을 기반으로 데이터를 읽기 때문에 다른 트랜잭션 변경 로그에 영향을 받지 않을 수 있다.  읽기를 수행할 때 lock을 사용하지 않기 때문에 동시 작업 처리 성능도 높다. 읽기 작업이 lock에 의해서 지연되는 시간이 없기 때문에 읽기 중심 애플리케이션에 적합하고 쓰기 작업과의 충돌이 적어진다. 하지만 여러 버전의 스냅샷을 모두 보관해.. 2024. 12. 31.
[Database] 트랜잭션 격리 수준에 대해 간단하게 설명하기 트랜잭션의 격리 수준이란 동시에 여러 트랜잭션이 실행될 때 한 트랜잭션이 다른 트랜잭션의 연산 영향을 받지 않도록 하는 정도를 의미한다. 격리 수준이 낮을 수록 동시 처리 능력을 높이지만 격리시켜 독립적인 작업을 보장하는 정도가 낮기 때문에 데이터 일관성 문제를 일으킬 수 있다. 반대로 격리 수준이 높다면 데이터 일관성을 보장할 수 있지만 동시에 작업을 처리하는 능력은 낮을 수 있다.  데이터의 정합성과 작업 처리 성능은 함께 보장되기 어려운 반비례 관계이다. 트랜잭션 격리 수준은 개발자가 트랜잭션 격리 수준을 설정할 수 있는 기능을 제공하는 것으로 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ가 있다. READ UNCOMMITTED는 커밋 되지 않은 트랜잭션의.. 2024. 12. 31.
[Data Structure] 스택에 대해 간단하게 설명하기 CS 이론 관련 면접 준비를 위해 랜덤으로 떠오르는 것에 대해 말해보는 연습을 하고 있다 스택은 후입 선출의 선형 자료구조이다. pop 작업은 스택의 최상단 top에서만 수행할 수 있고 가득찬 스택에 더 넣으려고 하면 stack overflow, 비어있는 스택에서 값을 추출하려고 하면 stack underflow가 발생한다.  자바에서는 stack 클래스를 사용할 수 있으나 stack 클래스 자체는 내부적으로 vector 를 상속받기 때문에 인덱스를 통한 접근이나 수정이 가능하기는 하다. 그래서 후입선출이라는 stack 특성에 위반되는 코드를 작성할 우려가 있으므로 deque 인터페이스 구현체를 사용하는 것을 더 권장한다.  vector 에 포함된 메소드들은 synchronized 방식으로 구현되어 있어.. 2024. 12. 31.
[소프트웨어공학] 소프트웨어 아키텍처 패턴 * 소프트웨어 아키텍처 = 소프트웨어의 내부적인 질을 높이기 위해 고려되는 소프트웨어의 구조 * 소프트웨어 아키텍처 패턴= 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대해 일반화된 솔루션을 제공하는 것= 세부 구현이 아닌 소프트웨어의 뼈대나 전체적인 고수준의 기반을 담당 * 아키텍처 스타일 = 아키텍처 유형 (시스템 분할, 전체 흐름 제어, 오류 처리 방침, 서브시스템 간 통신 프로토콜)  * 시스템 타입시스템 타입은 아키텍처 스타일을 결정할 때 영향을 준다* 대화형 시스템 interactive- 가장 보편적 시스템 유형- 사용자-사용자 인터렉션- 유스케이스 단위로 컴포넌트 설계- 온라인 쇼핑몰, 모바일 앱 * 이벤트 중심 event driven- 특정 이벤트 발생시 시스템 동작 - 상태 다이.. 2024. 11. 20.
[Database/MySQL] subquery 활용 연습 (2) from 조건에 중첩 0. 문제 공통 조건해당 테이블을 이용해서 소속 부서의 평균보다 급여가 높은 직원들을 출력하는 쿼리를 작성할 것 1. from을 활용하는 상호 연관 중첩 서브쿼리 (correlated nested subquery)1. subquery(SELECT 부서명, AVG(월급) 부서평균월급 FROM 직원 GROUP BY 부서명) A 서브쿼리에서는 직원 테이블에서 각 부서의 월급의 평균을 계산하고 부서명을 기준으로 그룹화해서 새로운 결고 테이블을 생선하다 부서 평균 원급 이라는 명칭의 열을 추가해서 결과를 보여두록한다  2. main and subSELECT 사번, 월급, 부서명FROM 직원 NATURAL JOIN (SELECT 부서명, AVG(월급) 부서평균월급 FROM 직원 GRO.. 2024. 11. 7.
[Database/MySQL] subquery 활용 연습 (1) where 조건에 중첩 0. 문제 공통 조건해당 테이블을 이용해서 소속 부서의 평균보다 급여가 높은 직원들을 출력하는 쿼리를 작성할 것  1. where을 활용하는 상호 연관 중첩 서브쿼리 (correlated nested subquery)SELECT 사번, 월급, 부서명 FROM 직원 E1WHERE E1.월급 > (SELECT AVG(월급) FROM 직원 WHERE 부서명 = E1.부서명); 쿼리는 두 가지로 구성되어 있다 메인 쿼리는 직원 테이블에서각 행이 월급에 대한 조건을 만족하는 경우각 행의 사번과 월급, 부서명이 출력하도록 한다 where문의 부등호 뒤에 있는 select문이 서브쿼리이다이 서브 쿼리는 부서의 평균 월급을 계산한다 메인 쿼리의 각 행과 연관되.. 2024. 11. 6.
728x90