Transaction Management Overview
CS/데이터베이스2024. 4. 4. 19:42Transaction Management Overview

Transactions DBMS의 성능을 향상시키기 위해서는 사용자 프로그램의 동시 실행이 필수적이다. 디스크 액세스는 빈번하게 발생하며 비교적 느리기 때문에 CPU를 활용하여 여러 사용자 프로그램을 동시에 처리하는 것이 중요하다. 사용자 프로그램은 데이터베이스에서 검색한 데이터에 대해 많은 작업을 수행할 수 있지만, DBMS는 데이터베이스에서 읽거나 쓰는 데이터에만 관심이 있기 때문이다. DBMS는 사용자 프로그램을 추상화하여 트랜잭션(Transaction)이라는 개념으로 표현한다. 트랜잭션은 읽기와 쓰기의 연속으로 구성된 DBMS의 추상적인 사용자 프로그램이다. 트랜잭션은 일련의 데이터베이스 작업으로 구성됩니다. 일반적으로 트랜잭션은 다음과 같은 단계로 진행된다. 시작 (Begin) 트랜잭션이 시작되..

통계 DB의 보안(내용보완필요)
CS/데이터베이스2024. 4. 4. 19:35통계 DB의 보안(내용보완필요)

개론 앞에서는 DB외에도 일반적으로 사용하는 방법을 알아보았다. 이제는 통계 DB에서의 개인정보 유출을 배워본다. 통계 DB 통계 DB에서는 개인의 정보를 다룬다. 그러나 해당 DB에서는 집계 질의문만 처리해주기 때문에 특정 개인의 정보를 알 수 없다. 평균 나이, 최소 나이, 최고 나이 등등과 같은 집계 정보만 주기에 고라니의 나이나 고라니의 몸무게와 같이 특정 데이터는 얻을 수 없다. 추론 문제 그러나 추론이 가능하다. 예를 하나 들어보자. 나이와 등급이 연결되어있는 통계 DB가 있다고 해보자. 등급은 꽤나 민감한 정보로 아무도 모르지만 현재 노근은 대학 내의 학생 중 최고령자의 이름을 알고 있다. 그리고 이 최고령자가 유일무이하단 것도 알고 있다. 이 상황에서 노근은 해당 사람의 나이를 모름에도 등..

인터넷 응용프로그램의 보안
CS/데이터베이스2024. 3. 8. 19:08인터넷 응용프로그램의 보안

암호화 대칭적 암호화(Symmetric Encryption) 암호화에 필요한 키가 복호화 키로도 사용이 되는 암호화 방식을 말한다. 키가 하나만 있으면 되기에 간편한 방법이지만 키를 건네줄 때 부담이 생기게 된다. 암호화된 내용도 중간에서 가로챌 수 있는데 키라고 중간에 못 가로챌 일은 또 없다. 이렇게 하나의 키로 암호화와 복호화를 모두 하게 되면 키를 교환하는데에 부담이 생기게 된다. 공개키 암호화(Public-Key Encryption) 그래서 이런 부담을 줄이고자 나온게 공개키 암호화다. 각 사용자들은 모든 사람에게 알려진 공개 암호화 키와 자신만 알고 있는 비공개 복호화 키를 하나씩 갖고 있다. 사용자가 아마존에게 암호화된 주문 정보를 보내는 것을 예시로 보자.▼ 아마존은 암호화를 해주는 pub..

CPU Scheduling
CS/운영체제2024. 3. 4. 21:23CPU Scheduling

개요 운영체제는 항상 한정된 자원을 두고 자신과의 싸움을 한다. ▼ 자원은 계속해서 늘어나고 있지만 자원이 늘어나는 만큼 더 많이 사용하게 되어 자원은 항상 부족하다. 프로세스가 구동이 되려면 메모리 자원과 CPU자원이 필요하다. 모든 프로세스가 자원을 원하는 만큼 가져가면 좋겠지만 그렇게 다 주기엔 자원이 모자르기에 누구에게, 얼마나, 얼마동안 줄 지를 결정해야한다. 이렇게 프로세스에게 자원을 주는 일련의 행위를 Scheduling, 해당 행위를 맡고있는 OS의 일부분을 Scheduler라고 부른다. Q. Scheduler의 정체가 정확히 무엇인지? 하드웨어? 아니면 프로세스? A. 스케쥴러는 하드웨어나 별도의 프로세스가 아닌 OS의 기능중 하나이다. Term에 따른 종류 스케쥴러는 term을 단위로 ..

Process
CS/운영체제2024. 3. 4. 20:49Process

프로세스(Process)란? 프로세스란 지금 실행하는 프로그램을 의미하며, 프로그램의 가장 기본적인 단위를 의미하기도 한다. 프로세스의 문맥(Context) 현재 혹은 특정 지점을 놓고 봤을 때 프로세스가 어디까지 수행됐는지, 프로세스를 실행시키기 위해 어떤 메모리 공간을 만들었는지, Program Counter가 어디를 가리키고 있는지를 알려주는 정보를 프로세스의 문맥이라고 한다. 프로세스의 요소 각 프로세스는 크게 아래의 2가지를 갖는다. address space(core image) process table entry 여기서 entry는 해당 프로세스를 수행하기 위해 필요한 정보와 나중에 수행하기 위해 필요한 레지스터 값과 상태를 저장한다. Entry보다는 Process Control Block이라..

디스크와 파일
CS/데이터베이스2024. 3. 1. 15:21디스크와 파일

기억장치 계층 구조 컴퓨터 시스템에서의 기억장치는 아래의 그림과 같이 계층구조로 구성이 되어있다.▼ 이 중에서 CPU(DBMS)가 다루는 데이터는 메인 메모리, 즉 RAM에 해당하는 데이터이다. "그렇다면 왜 컴퓨터 시스템은 CPU가 다루기 편하지 않게 RAM에 정보를 다 저장하지 않을까?" 메인 메모리에 다 저장하지 않는 이유 비용 첫번째 이유는 비용이다. 같은 용량에 대해 주 기억장치의 비용은 디스크보다 약 100배 정도가 높다. ▼ HDD는 1GB 당 36원인 반면 RAM은 1GB당 4000원 꼴이다. 소멸성 또 다른 이유는 데이터를 유지하기 위함이다. 프로그램이 아무리 오래 돌아가봐야 한 번은 컴퓨터를 종료시키는 때에 같이 종료된다. 그러나 메인 메모리는 소멸성 메모리이기 때문에 프로그램이 종료되..

B+ Tree
CS/데이터베이스2024. 3. 1. 15:05B+ Tree

개론 전에 배운 B트리는 구조 변경이 자주 일어난다는 점에서 한계가 보였다. 조회는 빠른 편이지만, 삽입과 삭제와 같이 DB에 변경이 자주 일어나게 되면 연산량이 많아진다는 단점이 있었다. 그래서 이를 보완하고자 나온 것이 B+트리이다. 특징 B 트리와 다른 점. 모든 데이터가 리프노드에 모여있다. 모든 리프노드는 연결리스트 형태를 띄고 있다. 리프노드의 부모 key는 리프노드의 첫번째 key보다 작거나 같다. B트리와 같은 점. 노드에는 최대 $M-1$개 부터 $\lceil \frac{M}{2} \rceil - 1$개의 데이터가 포함된다. 특정 노드의 데이터(key)가 $K$개라면, 자식 노드의 개수는 $K+1$개여야 한다. 특정 노드의 왼쪽 서브 트리는 특정 노드의 데이터보다 작은 값, 오른쪽 서브 ..

B Tree
CS/데이터베이스2024. 2. 20. 15:24B Tree

개론 인덱싱의 기본적인 방법들, heap, hash, sorted file 들은 일장일단의 성격을 지니고 있다. 그런데 모든 부분에서 두루두루 성능이 좋게 나오는 인덱싱 기법은 없는걸까? 모든 면에서 성능이 좋은 인덱싱 기법은 없지만 적절한 성능을 내는 기법은 있다. 바로 B+ Tree이다. 하지만 이번 포스트에선 B+ Tree가 무엇인지 알아보기 전에 B+ Tree의 이전 형태인 B Tree를 보자. 특징 1. 노드에는 2개 이상의 데이터(key)가 들어갈 수 있고, 이들은 항상 정렬된 상태로 구성된다.▼ 2. 내부 노드(루트노드와 리프노드 제외 노드들)는 최소$\lceil \frac{M}{2} \rceil$, 최대 $M$개의 자식을 가질 수 있다. 최대 $M$개의 자식을 갖는 B 트리를 $M$차 B ..

인덱싱개론
CS/데이터베이스2024. 2. 19. 20:42인덱싱개론

개론 "인덱싱(indexing)이란 무엇일까?" 뉴스 기사를 수집한다고 해보자.▼ 수집한 뉴스 기사를 조회한다고 할 때, 수집한 뉴스 기사의 개수가 많으면 원하는 기사를 찾는게 쉽지 않을 것이다.▼ 그런데 뉴스 기사를 기사 주제에 따라 쪽수로 표시하면 찾기가 훨씬 쉬워질 것이다. 곰 주제는 266쪽 부터 369쪽, 고라니 주제는 370쪽부터 500쪽 등등…▼ 그런데 이렇게 크게 나눠버리면 찾기 쉬워진 것은 맞으나 세부적인 기사를 찾기가 힘들다. 예를 들어 곰 주제에서 ‘곰돌이 푸가 성공한 이유’라는 주제를 찾으려면 266쪽으로 가서 369쪽까지 쭉 훑어봐야한다.▼ 그렇기에 대분류로 한 번 나누고 다시 소분류로 ‘곰돌이 푸가 성공한 이유’라는 뉴스 기사를 다시 한 번 쪽수를 분류 해야한다.▼ 이런 과정을 ..

정규화
CS/데이터베이스2024. 2. 19. 20:25정규화

개론 관계형 모델의 고안자인 에드거 F. 커드가 1970년에 처음으로 정규화의 개념을 도입하였다. 제 1 정규화를 발표한 이후에 이어서 제 2 정규화와 제 3 정규화를 정의하였고, 이후에는 레이먼드 F.보이스와 함께 보이스-코드 정규화(BCNF)를 정의하였다. 4 정규화 이후에는 다른 이론가들에 의해서 정의가 되었다고 한다. 위에가 간단한 정규화에 대한 역사였고, 본론인 정규화의 목적을 이야기하면, 정규화(Normalization)의 기본 목표는 불필요한 중복을 제거하는 것이다. 중복이 언제나 나쁜 것은 아니다. 때로는 설계상 중복이 필요할 때도 있다. 하지만 나쁜 것은 불필요한 중복이다. 이런 불필요한 중복은 데이터 베이스를 모호하게 만들고 각종 오류를 야기한다. 그렇기에 이런 불필요한 중복을 줄이기 ..

image