본문 바로가기

반응형

전체 글

1부 스토리지 엔진 :: 2장 - B-트리 개요 불변성: 저장 구조의 설계와 구현 방식을 결정하는 중요한 속성 가변 자료 구조는 인플레이스 업데이트 방식을 사용한다. 데이터 삽입 및 삭제, 업데이트 시 데이터 저장 위치에 새로운 데이터를 바로 쓰는 방식이다. 이진 탐색 트리 Binary Search Tree는 정렬된 인메모리 자료 구조로, 키-값 쌍 검색에 사용된다. BST는 키와 두 개의 자식 포인터가 저장된 여러 노드로 구성된다. 탐색은 루트 노드에서 시작하고 트리에는 단 한 개의 루트 노드만 있을 수 있다. 트리 밸런싱 노드 삽입 작업에는 특정 패턴이 없으며, 삽입하는 값에 따라 트리가 불균형해질 수 있다. 불균형 트리란 트리가 한쪽으로 길게 뻗은 최악의 상황을 나타낸다. 균형 트리란 노드 개수가 N일 때 높이가 log2N이고 두 서브트리의 높이.. 더보기
1부 스토리지 엔진 :: 1장 - 소개 및 개요 스토리지 엔진 DBMS에서 데이터를 메모리와 디스크에 저장하고 검색 및 관리하는 소프트웨어 컴포넌트 각 노드에 데이터를 영구 저장한다. 데이터베이스가 복잡한 쿼리를 수행할 수 있도록 API를 제공한다. 스토리지 엔진 위에서 스키마와 쿼리 언어, 인덱싱, 트랜잭션 등의 유용한 기능을 제공하는 애플리케이션이라고 볼 수 있다. 스토리지 엔진의 비교 스토리지 엔진을 비교할 때는 장점과 단점을 모두 살펴봐야한다. 모든 스토리지 엔진에는 유사한 문제와 제약 조건이 있다. 특정 인구수를 기준으로 도시를 설계한 뒤, 건물을 위로 높일지 또는 외곽 영역으로 확장할 지 결정하는 도시 계획 문제와 비교할 수 있다. 스토리지 엔진 개발자의 설계에 따라서 일부 엔진은 읽기와 쓰기 레이턴시를 최소화하고, 일부는 저장량을 극대화하.. 더보기
Oplog / Startup_log MongoDB는 HA(High Availability)를 위해 클러스터를 구축하는 개념이 Replica Set이다. 이 클러스터를 구축하기 위해서 각각의 데이터베이스 서버들은 Primary, Secondary, Arbiter라는 역할을 가질 수 있으며 P-S-S, P-S-A 구조를 통해 레플리카셋을 구축할 수 있다. Secondary는 Primary가 문제가 생겼을 때를 위해 존재하는 대타이다. 그렇기 때문에 데이터 변경을 처리할 수 있는 유일한 멤버는 Primary이며, Primary는 변경사항을 Oplog에 기록하여 나머지 멤버들이 Primary 와 동기화를 비동기적으로 진행할 수 있도록 하는 것이다. Oplog Oplog는 capped collection 이라는 특수한 컬렉션에 저장된다. 마스터 노.. 더보기
Azure SDK Keyvault Python CLI 로 사용해보기 라이브러리 사용을 위한 개발 환경 구성은 해당 문서를 참고하시면 됩니다. Python 가상환경 준비 Azure SDK Keyvault Client Python Library 을 사용하기 위해서는 파이썬 설치 및 가상환경이 준비되어야 합니다. 저는, 이미 구성되어 있어 해당 구성은 건너뛰고 시작하였습니다. 혹시, 가상환경 구축이 별도로 필요하신 분은 이 링크와 위 개발 환경 구성 문서를 참고하세요.(중요! Python >= 3.7) Azure SDK Keyvault Client Library 설치 및 사용 해당 도큐먼트 참고하여 라이브러리를 설치하고, CLI 환경에서 로그인, Azure 그룹 생성 Keyvault 생성까지 해보겠습니다. 1. azure-keyvault-certificates 설치 2. az.. 더보기
Azure SDK keyvault 테스트 실행해보기 테스트 실행을 위한 가이드 SDK test 실행 가이드 문서 Keyvault 의존 라이브러리 다운로드 참고 문서: https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/tests.md GitHub - Azure/azure-sdk-for-python: This repository is for active development of the Azure SDK for Python. For consumers of the This repository is for active development of the Azure SDK for Python. For consumers of the SDK we recommend visiting our public dev.. 더보기
Singletone pattern Singleton pattern 이란 Singleton pattern(싱글턴 패턴)이란 애플리케이션에서 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 커넥션 풀, 스레드 풀 등의 경우, 인스턴스를 여러 개 만들게 되면 자원을 낭비하게 되거나 버그를 발생시킬 수 있으므로 오직 하나만 생성하고 그 인스턴스를 사용하도록 하는 것이 이 패턴의 목적이다. public class Singleton { public static final Singleton INSTANCE = new Singleton(); private Singleton() { } ... } // 혹은 ... public class Singleton { private static final Singleton INSTANCE = new Singlet.. 더보기
DAO vs. Repository 영속성(Persistence) 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. 때문에 파일 시스템, 관계형 테이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구하게 저장하여 영속성 부여한다. Persistence Layer 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층을 말한다. JDBC를 이용하여 직접 구현할 수 있지만 Persistence framework를 이용한 개발이 많이 이루어진다. 계층 프레젠테이션 계층 (Presentation layer) - UI 계층 (UI layer) 이라고도 한다. 애플리케이션 계층 (Application la.. 더보기
Optimistic Locking vs. Pessimistic Locking Lock 데이터베이스에 접근해서 데이터를 수정할 때 동시에 수정이 일어나 충돌이 일어날 수 있습니다. 이러한 상황을 제어하기 위해서 트랜잭션의 격리 수준과 비즈니스 로직에 맞추어 Lock(잠금)이 필요합니다. Optimistic Lock 특징 낙관적인 : 기본적으로 데이터 갱신시 충돌이 발생하지 않을 것이라고 낙관적으로 보는 락 비선점적인: 데이터 갱신시 충돌이 발생하지 않을 것이라고 예상하기 때문에, 우선적으로 락을 걸지 않는다. 설명 DB가 제공하는 락 기능을 사용하지 않고, Application Level(JPA 등)에서 잡아주는 락입니다. version 등의 컬럼을 추가하여 여러 트랜잭션 내 하나의 데이터에 중복 업데이트를 확인합니다. DB 트랜잭션을 걸지 않기 때문에, 여러 트랜잭션이 동일 데이.. 더보기

반응형