심심해서 하는 블로그 :: 'Computer Science' 카테고리의 글 목록 (5 Page)

1. 인덱스(index)

사전에서 APPLE의 뜻을 찾고자 할 때 두 가지의 방법을 사용할 수 있다.

첫번째는 처음부터 하나하나씩 단어를 훑으면서 찾는 방법

두번째는 사전 옆에 붙어있는 A -> P ->.. 순서로 찾는 방법

둘 중에 탐색하는 속도는 두 번쨰의 경우가 더욱 빠르게 탐색이 가능하다.

이처럼 인덱스는 데이터 베이스에서 데이터 탐색 속도를 향상시켜주는 자료 구조이다.

만일 Search Key가 Primary Key를 포함한다면 Primary Index라고 하며, Unique Key를 포함한다면 

Unique Index라고 한다.


2. Clustered vs Unclustered Index



Clustered index와 Unclustered Index의 큰 차이점은 Sorting의 여부이다.

Clustered index는 Date Record가 Key 값을 기반으로 정렬하여 정렬하여 저장한다.

따라서 여러 개가 있으면 데이터 정렬의 순서가 꼬이므로 단 하나만 생성할 수 있다.

또한 정렬이 되어있는 특징 덕분에 전반적으로 불러오기 속도를 엄청나게 향상시키는 효과가 있다.


반면 Unclustered index의 경우 Date Record의 정렬을 하지 않고 저장한다. 

그리고 index 테이블에는 논리적으로 정렬하고 데이터가 있는 페이지 번호와 위치를 표기한다.

따라서 index 테이블은 논리적 정렬을 위해 여러 개가 존재해도 무관하고 덕분에 파일의 크기도 증가한다.


3. Hash-Based Index


해시 인덱스는 검색하고자하는 값을 해시함수에 입력한 후 그 결과와 Bucket의 내용과 비교하여

해당 데이터 레코드의 위치를 찾을 수 있는 인덱스 기법이다. 이 기법의 장점은 Equality 연산에는 좋은 성능을 보인다는 점, 그리고 해시 함수를 특징상 입력 값에 비해 출력 값의 크기는 줄여 Bucket에 저장한다는 점이다. 반면에 단점은 범위를 탐색하는 경우에 매우 비효율적인 성능을 보여준다는 점이다. 


4. B+ Tree Index


B+ Trees는 관계형 데이터 베이스에서 가장 일반적으로 사용되는 인덱스이다.

자료구조때 이진 트리처럼 가운데 키 값과 작거나 같으면 왼쪽 크면 오른쪽으로 트리를 구성한다.

다만 다른 점은 Leaf 노드 간 이동이 가능하다는 점이다. 

Leaf 단계에서 데이터 엔트리들이 포함되어 있기 때문에 B+ Tree의 성능은 트리의 깊이에 의하여 좌우된다.

범위 탐색의 경우에는 Root에서 시작하여 최소 경계값을 찾고 다음 리프 노드로 넘어가는 방식으로 연산을 수행한다. 삽입의 경우에는 필요에 따라 부모 노드가 조정될 수 있다. 마지막 리프 노드가 꽉 차있다면 다시 쪼개서 트리구조를 유지하기 떄문이다.




,

1. 등장 인물(아니 부품?)

   1) PC (Program Counter) : 다음 실행할 명령어의 주소를 저장

   2) 기억장치 주소 레지스터(MAR) : 다음에 읽거나 쓸 기억장소의 주소를 지정

   3) 기억장치 버퍼 레지스터(MBR) : 기억장치에 저장될 데이터 혹은 기억장치로 부터 읽은 데이터를 임시 저장

   4) 명령어 레지스터(IR) : 현재 수행중인 명령어 저장

   5) 산술 논리 장치(ALU) : 산술연산과 논리연산을 수행 


2. 명령어 패치(Fetch Cycle)

   1) PC에서 다음 수행할 명령어 주소를 MAR에 저장하고 PC에 저장된 주소는 +1


   2) MAR에 저장된 주소에 해당되는 값을 메모리에서 가져와 MBR에 저장

      이 때 메모리에서 받아온 값은 Data 또는 Opcode

  3) Opcode(명령어) 라면  IR에서 명령어를 Decode한다.

   4) 1)~2) 과정으로 Data(Operand)를 메모리로부터 읽어온 후 ALU에서 연산을 수행한다.(Excute Cycle)

       그리고 연산 결과는 MBR을 거쳐 메모리로 다시 저장한다



,

관계대수(Relation Algebra)

컴퓨터 과학의 관계형 데이터베이스의 관계 모델에서, 집합론과 1차 논리에 기반에여 관계로 표현된 데이터를 

취급하는 대수적인 연산체계이다(위키백과 : 관계대수)


2. 추가 연산자 : 기본 연산자들의 조합으로도 만들수 있지만 알고 있으면 편하자나!(내 맘은 불편..)

  1) Join(

    (1) Condition Join(=Theta-join) : Cross-product를 수행한 후 Selection을 한 결과

         

         



    (2) Equi-Join : 조인 대상이 되는 두 테이블에서 공통적으로 존재하는. 컬럼의 일치되는 행을 연결하여 

                              결과를 생성하는 조인 방법 

                              (공통적인 필드는 하나만 표기한다)

    (3) Natural Join : 모든 공통적인 필드에 대한 Equi-Join 


  2) Division( / 

     

    A에 존재하는 <x, y> 튜플에 대하여 B의 모든 튜플 <y>를 포함하는 튜플 <x>의 집합 

 3) Renamimg operator() : 연산 결과를 임시 테이블에 저장하거나 도메인을 변경하기 위한 연산자

     

    A - B 의 결과로 반환된 Relation명을 Temp라 하고 

     Temp의 첫번째 도메인은 userID 세번째 도메인은 result라고 변경한다.

    



,

관계대수(Relation Algebra)

컴퓨터 과학의 관계형 데이터베이스의 관계 모델에서, 집합론과 1차 논리에 기반에여 관계로 표현된 데이터를 

취급하는 대수적인 연산체계이다(위키백과 : 관계대수)


1. 기본 연산자

  1) Selection() : Relation에서 조건에 만족하고 중복 없는[각주:1] 튜플(tuple)들의 Relation을 반환 

     ex)  userTable에서  이름이 ssooni인 사람의 모든 정보를 구하기

           관계대수 > 

           SQL query >  Select * from userTable where name = 'ssooni' 

  

  2) Projection() : Relation에서 원하는 속성(attribute)에 해당하는 중복 없는 튜플(tuple)들로 

                            구성된 Relation을 반환

     ex)  userTable에서 이름이 ssooni인 사람의 전화번호를 구하기

           관계대수 > 

           SQL query > Selete phoneNum from userTable where name='ssooni'


  3) Cross-product() :  두 개의 Relation들을 조합하는 연산자 

      

  4) Set-difference( - ) : 차집합 연산,  연산하고자 하는 Relation들의 각각 대응하는 필드(field)들은 동일한 타입

  5) Union() : 합집합 연산,  연산하고자 하는 Relation들의 각각 대응하는 필드(field)들은 동일한 타입





  1. 집합에서 중복되는 원소는 같은 원소로 취급하기 때문에 중북되는 원소는 제거된다 [본문으로]
,