본문 바로가기

전체 글111

[Spring] AOP(Aspect-Oriented Programming)란? '초보 웹 개발자를 위한 스프링 5 프로그래밍 입문' 챕터 7을 읽고 정리한 내용입니다.  🌊 AOP란? Aspect-Oriented Programming, 관점 지향 프로그래밍소스 코드의 비즈니스 로직과 부가적인 공통 관심사를 분리하여, 관점을 기준으로 각각 모듈화하여 코드의 모듈성과 가독성을 향상시키는 프로그래밍 패러다임.* ’관점’이라는 말이 너무 어색해서 알아봤더니, ‘초보 웹 개발자를 위한 스프링 5 프로그래밍 입문 158p’에서 ‘관점’이라는 말 대신 ‘기능’ 내지 ‘관심’이라고 표현하는 것이 더 알맞다고 한다.* 모듈화: 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것 즉, 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 Aspect로 모듈화하여 재사용성을 높여주는 기법이다. 핵심.. 2024. 12. 14.
[DB] Concurrency Control Techniques (Locking, MVCC..) 동시성 제어는 여러 프로세스나 스레드가 동시에 공유 자원에 접근할 때 발생할 수 있는 문제를 방지하기 위해 필요하다.  동시성을 허용하면 데이터 불일치, 경쟁 조건(Race Condition), 데드락(Deadlock), 정합성(Consistency) 및 무결성(Integrity) 문제가 발생할 수 있다. 반면, 동시성을 과도하게 제어하면 성능 저하 문제가 발생할 수 있어 적절한 균형이 필요하다. 동시성 제어의 방법에는 크게 아래와 같은 방법들이 존재한다. Concurrency Control Protocols- Optimistic Concurrency Control- Locking- MVCC (Muli-Version Concurrency Control)- Timestamps 1. Optimistic Co.. 2024. 12. 14.
[DB] Transactions & Serializability Transaction 이란? : DB 처리의 논리적 단위를 이루는 실행 프로그램이다.  특징은 다음과 같다. - 하나의 Transaction에는 하나 이상의 DB Access 작업이 포함된다. (삽입, 삭제, 수정, 검색) - 하나의 응용 Program에는 둘 이상의 Transaction이 포함 가능하다. - read-only transaction / read-write transaction이 존재한다.  Transaction이 만족해야 하는 ACID는 다음과 같다. - Atomicity (원자성): 트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 한다. 즉, "All or Nothing" 원칙을 따른다.즉, 트랜잭션을 구성하는 여러 작업 중 일부만 적용되는 일은 없어야 하며, 전부 실행되거나 아예 실행.. 2024. 12. 14.
[DB] Index Structures for files (Primary, Clustering, Secondary) Index란? : 파일에 저장된 레코드에 빠르게 접근하기 위해 추가적으로 생성되는 보조적인 접근 구조이다. 특정 검색 조건에 따라 레코드를 효율적으로 검색할 수 있도록 설계되었다.  Indexing Field(or Indexing Attribute)를 기반으로 record에 효율적으로 access할 수 있는 방법을 제공하는데, 이는 검색 시간을 대폭 단축 시킨다. 즉, 전체 파일을 순차적으로 검색해야 하는 비효율성을 줄여준다.  더불어, Secondary Access Path(보조 접근 경로)를 제공하여, 디스크에 저장된 레코드의 물리적 위치와 상관없이 데이터를 빠르게 검색할 수 있게 한다.  Index는 level에 따라 두 종류로 나뉘는데, 이는 다음과 같다. 1. Single-level ordere.. 2024. 12. 14.
[DB] Collision Management in Database Hashing Techniques 해싱(Hashing)이란 무엇일까?해싱은 다양한 분야에서 쓰이는데, 키(Key = Field)를 입력으로 받아, 이를 해시 함수(Hash Function)를 사용하여 데이터가 저장될 위치(주소)를 계산하는 기술이다. 해시 함수의 결과는 보통 고정된 크기의 숫자나 값으로 변환되며, 이를 해시 값(Hash Value)이라고 한다.  Hashing 기법이 DB에서 왜 필요할까? 데이터베이스에서는 방대한 양의 데이터를 다루는 경우가 많아, 특정 검색 조건에서 레코드에 빠르게 접근할 수 있는 효율적인 방법이 필요했다. 단순히 레코드가 정렬된 파일에서는 이진 탐색(Binary Search)을 사용하여 검색하며, 이는 O(log n)의 시간 복잡도를 가진다. 그러나 레코드 수가 크게 증가하면 이 방식의 성능은 점차 .. 2024. 12. 14.
[DB] Searching and Managing Records in Heap and Sorted Files 정렬되지 않은 레코드들로 이루어진 Heap Files과 정렬된 레코드들로 이루어진 Sorted Files에서 각각 어떻게 특정 Record를 Search할까?에 대한 내용을 다루려고 한다.  1. Files of Unordered Records (Heap Files)Heap 혹은 Pile File에서는 Record들이 삽입된 순서로 파일에 저장된다. 그래서 새로운 Record는 File의 끝에 저장되며,  Data Record를 수집하고 저장하는 용도로 사용되기도 한다.  record를 수정하기 위해서는 record가 담긴 block을 찾아 buffer에 기록한 후 수정해야 할 record를 삭제 후, file의 가장 마지막에 재작성한다. record를 삽입하기 위해서는 마지막 block을 buffer에.. 2024. 12. 14.