본문 바로가기

CS(Computer Science)

(32)
CS Study 7주차 : 트랜잭션(Transaction) 트랜잭션(Transaction) 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야 할 일련의 연산들을 의미한다. 여기서 작업이라 하면 명령문 자체가 아닌 게시글 예시로 들면 게시글을 INSERT문으로 넣고, 업데이트 된 내용을 SELECT로 가져오는 일련의 과정을 통틀어 작업이라고 한다. 트랜잭션은 작업의 완전성을 보장해 준다. 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 트랜잭션은 SELECT, UPDATE, INSERT, DELETE와 같은 연산을 수행하여 데이터베이스의 상태를 변화시키는 작업의 단위이다. 트랜잭션의 특징(..
CS Study 7주차 : 정규화(Normalization) 정규화(Normalization) 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 단계별로 구분하여 정규형이 높아질수록 이상현상을 줄어들게 된다. 장점 데이터베이스 변경 시 이상 현상을 제거할 수 있다. 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다. 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용 프로그램의 생명을 연장시킨다. 단점 릴레이션의 분해로 인해 릴레이션 간의 JOIN 연산이 많아진다. 질의에 대한 응답 시간이 느려질 수도 있다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 ..
CS Study 6주차 : B - tree /B + tree B - tree B - tree는 인덱스를 이루고 있는 자료구조의 일종이다. 트리 구조의 우위성 트리 구조는 데이터를 유지하기 위해 자주 사용하는 구조인데 참색시 단시간 내에 실행할 수 있기 때문이다. 특징 B - tree의 핵심은 테이터가 정렬된 상태로 유지되어 있다는 점이다. 그림에 있는 사각형으로 표시된 한개의 데이터를 노트(Node)라고 한다. 가장 상단의 노드를 루트 노드(Root Node), 중간 노드들을 브랜치 노드(Branch Node), 가장 아래의 노드들을 리프 노드(Leaf Node)라고 한다. 위 그림처럼 B - tree는 Binary seach tree와 유사하지만, 한 노드당 자식 노드가 2개 이상 가능하다. B - tree는 균일성을 가지고 있어 어떤 값에 대해서도 같은 시간대..
CS Study 6주차 : Hashing / 해시 테이블(Hash Table) Hashing 주어진 키 값을 이용하여 목표 레코드 주소를 직접적으로 계산하는 방법 키 값에 연산(해시 함수)을 적용하여 도출된 결과 값이 찾고자 하는 레코드가 있는 위치 주소가 된다. 해시 함수 : 어떤 k에 대한 테이블 주소를 계산하기 위한 방법으로, 주어진 키 값으로부터 레코드가 저장되어 있는 주소를 산출해 낼 수 있는 수식 구성 요소 단점 오버플로우가 일어나면 별개의 버킷을 할당하여 처리할 수밖에 없다. -> 결국 또 한번의 디스크 입출력을 필요하게 만들기 때문에 해싱 기법에서는 이 충돌로 인한 오버플로우를 어떻게 처리하느냐가 중요하다. 단순히 버킷 크기를 크게 한다면 오버플로는 감소하지만, 저장 공간 효율 또한 감소하고, 버킷 내 레코드 탐색 시간이 증가한다. 어떤 키값이 들어오더라도 균일하게 ..
CS Study 5주차 : Primary Index vs Secondary Index / Composite Index Primary Index 특징 테이블당 하나만 가질 수 있다. Insert시 data가 정렬되고 Index는 data block의 첫 번째 레코드의 주소값을 갖게 된다. Index가 바로 data block에 접근해서 Secondary Index보다 동작이 빠른 편이다. data가 정렬되어 저장되기 때문에 Secondary Index에 비해 범위로 질의를 하는 것이 유리하다. 아래는 범위로 검색하는 예시이다. id=101~104번의 학생을 찾는다고 하면 Index block을 scan한 후에 data block 1을 가져오고 data block 2를 가져오면 범위를 검색할 수 있다. 이렇게 되면 총 3~4번의 I/O이 발생하게 된다. Secondary Index 특징 Primary Key 이외에 필요한 ..
CS Study 5주차 : Index(인덱스) Index(인덱스) 데이터베이스에서 데이터를 검색할 때 모든 데이터를 검색해서 원하는 결과를 찾으려면 시간이 오래 걸린다. 때문에 컬럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 두어 데이터 검색 속도를 향상시킨다. 즉, 데이블에 대한 동작속도를 높여주는 자료구조이다. 원리 Index를 해당 컬럼에 주게 되면 초기 Table 생성 시 FRM, MYD, MYI 3개의 파일이 만들어진다. FRM : 테이블 구조가 저장되어 있는 파일 MYD : 실제 데이터가 있는 파일 MYI : Index 정보가 들어있는 파일 Index를 사용하지 않는 경우에는 MYI 파일이 비어 있지만 Index를 해당 컬럼에 만들게 되면 해당 컬럼을 따로 인덱싱하여 MYI 파일에 입력한다. 이후 사용자가 Ind..
CS Study 4주차 : Blocking/Non-Blocking Blocking/Non-Blocking 블로킹과 논 블로킹은 처리되어야 하는 작업이 전체적인 작업 흐름을 막는지에 대한 관점이다. Blocking 블로킹(Blocking)은 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 자신의 작업을 멈추고 해당 작업을 기다렸다가 다시 자신의 작업을 시작한다. 위 과정을 정리하면 아래와 같다. 유저가 커널에게 read 작업을 요청 커널은 데이터가 입력될 때까지 무한정 대기한다(Blocking) -> 리소스가 일을 하지 않고 낭비된다. 데이터가 입력되면 커널이 유저에게 결과를 전달한다. Non-Blocking 논 블로킹(Non-Blocking)은 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것을 의미한다. 위 과정을 정리하면 아래와 같다. 유저가 커널에게 re..
CS Study 3주차 : 로드 밸런싱 로드 밸런싱 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 기기의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적 기존의 서버와 동일하거나 낮은 성능의 서버를 증설하는 Scale-out 방식에 반드시 필요 → Scale-out 방식을 통해 증가한 트래픽을 여러 대의 서버로 균등하게 분산해 주기 위해서 scale-out : 비슷한 성능의 서버를 여러대 증설하는 것(수평적 확장) 로드 밸런서 종류 로드 밸런서 - 클라이언트와 서버 사이에 위치해, 서버의 부하를 분산시키는 하드웨어 또는 소프트웨어 로드 밸런서는 OSI 7계층을 기준으로 부하를 어떻게 분산할지에 따라 종류가 나뉜다. 주로 ..