programming

    [spring] 캐시 추상화

    캐시란애플리케이션 개발시 자주 사용되는 데이터들을 '캐시 저장소'라는 곳에 넣어두고다음에 또 동일한 데이터를 요청시에 그 캐시 저장소에서 꺼내서 주는것spring의 캐시 추상화spring에서는 이런 캐시 기능을AOP 패러다임에 따라서추상화하여 사용하기 쉽게 해놓음  사용 방법원하는 메서드위에 어노테이션을 붙임으로 캐시기능을 사용할 수 있다클래스나 인터페이스 단위로도 캐시를 적용 할 수 있지만 드물다고 한다 스프링에서는 아래와 같은 캐싱을 위한 메서드 레벨 어노테이션이 존재한다(공식문서에 몇개 더 있음)@Cacheable@CachePut@CacheEvict @Cacheable@Cacheable("books")public Book findBook(ISBN isbn) {...}* isbn은 책의 고유 번호 같..

    데이터베이스 옵티마이저

    옵티마이저란?데이터베이스 옵티마이저(Database Optimizer)는데이터베이스에서 SQL 쿼리를 빠르고 효율적으로 실행하기 위해 최적의 실행 계획을 만들어준다옵티마이저의 목적은 쿼리 실행에 필요한 비용을 최소화하여 성능을 극대화하는 것이다이 비용에는 디스크 I/O, CPU 사용량, 네트워크 트래픽 등이 포함된다   옵티마이저의 종류규칙 기반 옵티마이저(Rule-Based Optimizer, RBO): 이 옵티마이저는 사전 정의된 규칙에 따라 쿼리를 최적화한다예를 들어, 특정한 형태의 쿼리에서는 항상 인덱스를 사용하는 방식으로 최적화하는 식이 방식은 상대적으로 간단하지만 최신 데이터베이스에서는 사용하지 않는다특정 우선순위비용 기반 옵티마이저(Cost-Based Optimizer, CBO): 대부분의 ..

    B+트리, B트리 비교

    B+트리란?B트리에서 확장된 개념으로, 리프 노드에만 실제 데이터를 담는다B+트리는 리프 노드에만 데이터를 저장하고, 내부 노드에는 데이터가 아닌 키만을 저장한다 키는 데이터를 찾기 위한 인덱스 역할을 하며, 실제 데이터는 리프 노드에서만 접근 가능이로 인해 모든 데이터 접근이 리프 노드에서 이루어지며, 데이터가 정렬된 형태로 연결되어 있다B+트리는 리프 노드를 순차적으로 연결하는 포인터 집합을 가지고 있다.인덱스된 순차 파일 처리시,포인터를 이용하여, `키 : 값`을 일일이 비교하지 않고 다음 데이터에 접근해서 빠르게 처리할 수 있다.(이부분 무슨 말인지 이해가 안된다, 다시 알아보자)   데이터 삽입처음 1,2가 노드에 들어있을때3을 추가하면 노드의 최대 키을 초과하여( 3차이기 때문에 키는 2개가 ..

    데이터베이스 Cluster

    클러스터란?데이터베이스 클러스터링은 여러 대의 데이터베이스 서버(노드)를 하나의 논리적인 데이터베이스처럼 동작하게 만드는것이를 통해 병렬처리, 고가용성 ,성능 향상을 구현할 수 있다고가용성데이터 베이스에서 가용성이란1년 동안 몇 분이 정지했음을 비율로 나타낸 것고가용성이란 데이터베이스 장비(서버나 스토리지 등)를 각 2대 이상으로 구성하여한쪽에 장애가 발생하면 동일한 데이터를 가진 복제 데이터베이스(이중화된 데이터베이스)로빠른 시간내에서비스를 재개할 수 있도록 하는 것을 의미병렬처리데이터가 많거나, 복잡한 SQL을 실행하게 될 경우 많은 시간이 걸리게 된다이때 동일한 데이터를 가지고 있는 여러 데이터베이스가복잡한 SQL을 나누어서 작업한뒤결과를 통합하여 넘겨준다면 훨씬 빠르게 결과를 얻을 수 있다병렬처리..

    데이터베이스 트랜잭션

    트랜잭션이란 무엇인가?트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위로 간주되는 일련의 연산보통 은행 이체 작업을 예로 들어 설명한다은행 계좌 이체 작업은 한쪽의 출금과 반대쪽의 입금 두 가지 연산이 함께 이루어져야만 올바른 결과를 가져온다트랜잭션은 이러한 일련의 작업들이 모두 성공하거나 모두 실패하도록 보장하여 데이터의 일관성을 유지합니다.ACID관계형 데이터 베이스에서 하나의 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질트랜잭션은 ACID라는 네 가지 기본 특성을 준수해야 한다원자성(Atomicity): 트랜잭션 내의 모든 연산은 하나의 단위로 처리되어야 함일부만 실행되거나 취소되는 일이 없어야 하며, 모두 성공하거나 모두 실패해야 함예)디비에서 A테이블에 insert를하고..

    이진트리, 이진탐색트리

    이진 트리 (Binary Tree): 이진 트리는 각 노드가 최대 두 개의 자식 노드를 가지는 트리 구조단순히 각 노드가 자식노드를 2개 이하로 가질 수 있다는 조건만 만족하면 그것은 이진트리라 할 수 있다이진 탐색 트리 (Binary Search Tree, BST):이진 탐색 트리는 이진 트리의 한 종류이지만, 추가적인 정렬 조건을 만족해야 한다각 노드의 왼쪽 자식에는 해당 노드보다 작은 값이, 오른쪽 자식에는 더 큰 값이 위치해야 한다이런 조건을 만족함으로써 탐색 속도를 빠르게 할 수 있습니다. 왼쪽으로 가면 항상 더 작은 값을 찾고, 오른쪽으로 가면 더 큰 값을 찾을 수 있어 탐색 과정이 효율적입니다.

    B-tree

    binary search tree 에서 파생된것으로BST에서 자식노드의 갯수에 제한을 없앤것이 b-tree이다자식노드의 갯수가 3개 이상이려면부모노드의 key도 하나 이상이어야한다부모노드의 key들을 오름차순으로 정렬한다정렬된 순서에 따라 자녀 노드들의 key값의 범위가 결정된다 [20 40] / | \ [10 15] [30 35] [50 60 70] / | / | | \ [5 7] [12] [25] [32] [45] [55 65 75]자식노드의 갯수에 따라 n차 b-tree로 불리는데위의 예시는 자식노드가 3개이므로 3차 B-tree이다key에 의해서 자식노드들..

    데이터베이스 파티셔닝

    디비 파티셔닝이란?큰 테이블을 파티션이라는 작은 단위로 나누어 관리하는것사용 이유하나의 DBMS에 너무 큰 table이 들어가면서 용량과 성능 측면에서 많은 이슈가 발생하게 되었고,이런 이슈를 해결하기 위한 방법으로 table을 ‘파티션(partition)’이라는 작은 단위로 나누어 관리하는 ‘파티셔닝(Partitioning)’기법 이 나타나게 되었다 파티션이라는 단위는 무엇인가?하나의 파티션은 데이터베이스 내에서 데이터가 물리적으로 분리되어 저장되는 단위를 말하며,주로 특정 조건에 따라 분리된다아래는 그 조건들의 예시  범위 단위 (Range)특정 값의 범위를 기준으로 데이터를 분리예를 들어, 날짜가 "2024-01-01"부터 "2024-12-31"까지인 데이터를 하나의 파티션으로 저장하고, 다른 연도..