본문 바로가기

전체 글

(54)
[Architecture of a Database System] Relational Query Processor Relational Query Processor는 declarative SQL statement (a type of SQL statement that specifies what data is required, but not how to obtain it)를 받아서 validate하고, 절차적인 데이터 플로우 execution plan으로 optimize하고, 데이터 플로우를 실행한다. 클라이언트는 결과 튜플을 한번에 하나씩, 혹은 작은 배치로 fetch (pull) 한다. 이번 장에서는 DML에 대해 공부한다. DDL은 쿼리 옵티마이저에 의해 실행되지 않는다. DDL 문은 스토리지 엔진 및 카탈로그 관리자에 대한 명시적 호출을 통해 static DBMS 로직에 의해 절차적으로 구현된다. 4.1 Query..
[Real MySQL] 인덱스 (1) 8.1 디스크 읽기 방식 Random I/O 3개의 페이지를 디스크에 기록 하기 위해 3번의 시스템 콜 요청 → 디스크 헤더 3번 움직임 인덱스 레인지 스캔에서 Random I/O 사용 OLTP (On-Line Transaction Processing) 성격의 웹 서비스에서 자주 사용 일반적으로 쿼리를 튜닝한다 함은 Random I/O → Sequential I/O 가 아닌 Random I/O 를 줄이는 것 Sequencial I/O 3개의 페이지를 디스크에 기록하기 위해 1번의 시스템 콜 요청 → 디스크 헤더 1번 움직임 풀 테이블 스캔에서 Sequential I/O 사용 데이터웨어하우스나 통계 작업에서 자주 사용 (많은 레코드를 더 빨리 읽어올 수 있으므로) 8.2 인덱스 데이터가 저장 될 때 마다 ..
[Architecture of a Database System] Parallel Architecture: Processes and Memory Coordination 이번 장에서는 DBMS 용어를 정리하고 각각의 process models에서 메모리를 어떻게 사용하는지 알아본다. 3.1 Shared Memory Shared-Memory Parallel Systemd은 모든 프로세서가 같은 RAM과 디스크에 비슷한 퍼포먼스로 사용할 수 있다. 3가지 프로세스 모델 모두 이 아키텍처 위에서 잘 동작한다. Shared-memory의 프로세스 모델은 uniprocessor에서도 잘 동작한다. 대부분의 데이터베이스 시스템은 초기에 uniprocessor에서 동작되도록 만들어졌기 때문이다. Shared-memory 머신에서는 OS가 transparent하게 동작하도록 보장한다. 이 아키텍처의 주요 문제인 쿼리 실행 계층(Query Execution Layer)에서 단일 쿼리를 ..
[Architecture of a Database System] Process Models multi-user 서버를 디자인할 때, concurrent 유저의 요청과 이 요청이 어떻게 OS의 프로세스 또는 쓰레드에 매핑될지에 대해 고려해야한다. 이것은 퍼포먼스와 확장 가능성, 그리고 이식성에 영향을 끼친다. 이 장에서는 availability of operating system support for threads와 uniprocessor를 가정한다. 앞으로의 모든 설명은 다음 정의를 따른다. Operating System Process는 private한 address space를 가진 OS의 프로그램 실행 단위(thread of control)이다. 프로세스에는 OS resource handles와 security context가 포함된다. 프로세스 실행은 커널 스케쥴러에 의해 스케쥴링 된다...
[Architecture of a Database System] Introduction Relational Systems: The Life of a Query 전형적인 RDMBS에는 5개의 메인 컴포넌트가 있다. 승객의 리스트를 달라는 클라이언트의 요청을 예로 들어보자. 이는 하나의 쿼리 트랜잭션이 된다. 그리고 다음과 같이 동작한다. 클라이언트의 API 요청은 네트워크를 타고 Client Communication Manager 의 커넥션이 된다. 이 커넥션은 ODBC 또는 JDBC를 통해 만들어진다. Client Communication Manager가 하는 일은 다음과 같다. connection state를 만들고 기억한다. SQL commands에 응답하고 데이터와 컨트롤 메세지 (result codes, errors, etc)를 반환한다. 이 예제에서 Communication Man..
SQL 관계형 데이터베이스 개요 SQL 문장의 종류 명령어 종류 명령어 DML (Data Manipulation Language) SELECT, INSERT, UPDATE, DELETE DDL (Data Definition Language) CREATE, ALTER, DROP, RENAME DCL (Data Control Language) GRANT, REVOKE TCL (Transaction Control Language) COMMIT, ROLLBACK STANDARD SQL 현재 SQL의 많은 기능이 관계형 데이터베이스의 이론을 수립한 E.F.Codd 박사의 논문에 언급돼 있다. 논문에 언급된 8가지 관계형 대수는 4개의 일반 집합 연산자와 순수 관계 연산자로 나눌 수 있다. 일반 집합 연산자를 현재의 SQ..
Session vs JWT 가장 많이 사용하는 인증의 방식으로 Session을 사용하는 방식과 JWT를 사용하는 방식이 있습니다. Session 브라우저와 서버가 연결되어, 브라우저의 종료 시점까지를 세션이라고 합니다. 브라우저가 최초로 요청을 보내면, 서버에서는 클라이언트를 식별하기 위한 Session Id를 발급해 Response와 함께 보냅니다. 이후 클라이언트는 Session Id를 포함해 요청을 보내면 서버가 해당 유저를 Session Id로 식별하는 방식입니다. JWT 구성 . 을 기준으로 구분되어 heaer, payload, signature로 구성 되어 있습니다. header: typ와 alg라는 정보가 존재하는데 typ의 값은 JWT이고 alg signature를 해싱하기위한 알고리즘입니다. { "alg": "HS..
[Algorithm] RAM Model과 Big Oh Notation 2. Algorithm Analysis Created: October 22, 2022 10:25 PM Our two most important tools are (1) the RAM model of computation and (2) the asymptotic(점근선의) analysis of worst-case complexity. 2.1 The RAM Model of Computation Machine-indepenent 알고리즘 디자인은 RAM(Random Access Machine)이라고 하는 가상의 컴퓨터에 의존적이다. 이 컴퓨테이션 모델에서의 컴퓨터는 다음과 같다. simple operation (+, *, –, =, if, call) 은 one time step이 걸린다. Loops 와 sub..