해시 파일 구조 | 해시-해시테이블-해싱 5분만에 이해하기 – Gunny 답을 믿으세요

당신은 주제를 찾고 있습니까 “해시 파일 구조 – 해시-해시테이블-해싱 5분만에 이해하기 – Gunny“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코딩하는거니 이(가) 작성한 기사에는 조회수 45,456회 및 좋아요 916개 개의 좋아요가 있습니다.

해시 파일 구조 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 해시-해시테이블-해싱 5분만에 이해하기 – Gunny – 해시 파일 구조 주제에 대한 세부정보를 참조하세요

안녕하세요 거니입니다.
자료구조 파트에 해시테이블 5분만에 이해하기 동영상입니다. #거니 #알고리즘 #알고투게더

해시 파일 구조 주제에 대한 자세한 내용은 여기를 참조하세요.

Hash, Hashing, Hash Table(해시, 해싱 해시테이블) 자료구조의 …

0_HJVxQPQ-eW0Exx7M.jpeg DATA들이 사용하기 쉽게 정리되어 있다. 자료구조는 도대체 무엇일까? 자료구조(Data-Structure)는 데이터들의 모임, 관계, …

+ 여기에 보기

Source: velog.io

Date Published: 4/12/2021

View: 6550

파일의 조직 방법 – 네이버 블로그

인덱스 구조에서는 B-Tree, B+-tree 구조를 많이 쓴다. 해싱 방법 … 직접 파일에서는 레코드를 삽입하거나 검색할 때 이 해시 함수를 이용한다.

+ 여기에 표시

Source: m.blog.naver.com

Date Published: 9/18/2022

View: 9920

[DBMS] 파일의 구조(순차,인덱스,해싱) – Dhan의 학습 공간

[DBMS] 파일의 구조(순차,인덱스,해싱). DHan- 2020. 11. 25. 11:43. 320×100 …

+ 여기에 자세히 보기

Source: dhan-description.tistory.com

Date Published: 8/17/2021

View: 5021

파일의 구조화 – 개발자의 기억법

… 힙 파일, 순차 파일 구조 보다 블록 접근 측면에서 보면 검색 속도가 빠르다고 볼 수도 있겠으나,; 문제는 해시 함수가 어떤 구조를 …

+ 여기에 보기

Source: hiddenevent.github.io

Date Published: 3/9/2021

View: 5129

[자료구조] 해시테이블(HashTable)이란? – MangKyu’s Diary

그리고 array[index] = “521-1234” 로 전화번호를 저장하게 된다. 이러한 해싱 구조로 데이터를 저장하면 Key값으로 데이터를 찾을 때 해시 함수를 1번만 …

+ 더 읽기

Source: mangkyu.tistory.com

Date Published: 3/7/2021

View: 6083

1. 힙(heap) 파일 구조, 순차 파일 구조와 해시 파일 구조의 차이 …

1) 힙(heap) 파일 구조 비순서 구조로 레코드들은 파일 내 임의 공간에 저장되는 구조 방식으로 처리 속도가 빠른 장점을 가지고 있다.

+ 더 읽기

Source: www.happycampus.com

Date Published: 6/28/2022

View: 9278

데이터 구조 및 파일 구조 – IT RED OCEAN 에서 살아 남기

파일 구조는 데이터를 효율적으로 이용할 수 있도록 파일에 저장하는 … 에 레코드를 저장하는 파일 구조를 해싱 파일 구조라 함; 해싱 파일 구조를 …

+ 여기에 더 보기

Source: middleware.tistory.com

Date Published: 3/11/2021

View: 5314

해싱 기법 (1) – 공부싫어증

– 순차 파일은 레코드 수가 많으면 수에 비례해서 탐색 시간이 많이 걸린다. – 해싱은 반드시 그런 것 만은 아니다. ▫ 해쉬 구조 설계시 고려해야 하는 …

+ 자세한 내용은 여기를 클릭하십시오

Source: swin9333.tistory.com

Date Published: 6/18/2022

View: 2344

[데이터베이스] 파일과 색인 1편

1) 파일구조 : 파일구조는 파일을 구성하는 레코드들이 연결되는 방식에 … 순서 파일(Sequential file), 해시 파일(Hash file)로 나눌 수 있다.

+ 여기에 더 보기

Source: jhkang-tech.tistory.com

Date Published: 9/23/2021

View: 8948

주제와 관련된 이미지 해시 파일 구조

주제와 관련된 더 많은 사진을 참조하십시오 해시-해시테이블-해싱 5분만에 이해하기 – Gunny. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

해시-해시테이블-해싱 5분만에 이해하기 - Gunny
해시-해시테이블-해싱 5분만에 이해하기 – Gunny

주제에 대한 기사 평가 해시 파일 구조

  • Author: 코딩하는거니
  • Views: 조회수 45,456회
  • Likes: 좋아요 916개
  • Date Published: 2018. 9. 19.
  • Video Url link: https://www.youtube.com/watch?v=xls6jEZNA7Y

파일의 조직 방법

데이터베이스는 궁극적으로 시스템 내부에서 파일(file)로 구현된다.

파일은 같은 타입의 레코드들의 집합을 말하는데,

파일 조직 (file organization)은 파일의 레코드들을 물리적 저장장치에 저장시키기 위한 배치 방법으로

데이터베이스의 물리적 저장 방법이 된다.

파일 조직 방법은 레코드의 저장과 접근 방법을 결정해 주기 때문에 아주 중요하다.

파일 조직은 기본적으로 저장된 레코드들에 대한 어떤 접근 방법(access method)을 제공하느냐에 따라

크게 순차 방법(sequential method), 인덱스 방법(index method), 해싱 방법(hashing method) 등으로 구분 된다.

순차 방법

순차방법은 레코드들의 물리적 순서가 그 레코드들의 논리적 순서와 같게 순차적으로 저장하는 방법이다.

이 방법으로 구성하는 파일에는 히프(heap), 파일(pile),

즉 레코드가 시스템에 삽입되는 순서대로 만들어지는 엔트리 순차파일(entry-sequence file)과

레코드들의 키 값의 크기 순으로 만들어지는 키 순차 파일(key-sequence file)이 있다.

순차파일이라고 하면 보통 키 순차 파일을 뜻한다.

순차 파일에서의 레코드 접근은 기본적으로 레코드가 저장되어 있는 물리적 순차(physical sequence)에 따른다.

어느 한 레코드를 접근하기 위해서는 물리적으로 이 레코드 앞에 저장되어 있는 모든 레코드들을 차례로 접근하지 않으면 안된다.

따라서 이 순차 파일은 파일을 복사하거나 레코드들을 순차적으로 일괄 처리(batch processing)하는 응용에서 많이 사용한다.

인덱스 방법

데이터 레코드를 접근하기 위해서 먼저 해당 인덱스를 찾아서,

그 인덱스가 가리키는 주소를 따라가 원하는 레코드를 접근할 수 있도록 하는 저장 방법이다.

인덱스된 파일은 인덱스 파일과 데이터 파일로 구성된다.

<키 값, 주소>의 쌍으로 구성된다.

인덱스를 사용하는 파일은

하나의 인덱스를 사용하는 인덱스된 순차파일과

여러 개의 인덱스를 동시에 사용하는 다중키 파일(multikey file)로 나누어 볼 수 있다.

인덱스 구조에서는 B-Tree, B+-tree 구조를 많이 쓴다.

해싱 방법

해싱 방법은 다른 어떤 레코드도 참조하지 않고,

원하는 목표 레코드를 직접 접근할 수 있게 하는 기법인데,

이 방법을 기초로 만들어진 파일을 직접 파일(direct file)이라고 한다.

직접 파일에서는 레코드를 식별하기 위한 키 값과, 저장 장치에 저장되어 있는 레코드 주소 사이에 사상,

즉 대응 관계가 성립되어 있어야 한다.

그러나 레코드의 논리적 순서와 물리적 순서가 특정 관계를 가지고 있어야 할 필요는 없다.

또, 레코드가 키 값에 따라 물리적으로 정렬되어 있을 필요도 없다.

키 값을 가지고 레코드를 직접 접근할 수 있기 위해서는

먼저 키 값과 물리적 주소 사이에 어떤 대응 관계를 정의해 두고,

어떤 키 값이 주어졌을 때 그 키 값으로부터

그 키 값을 가진 레코드가 저장되어 있는 주소를 계산해 낼 수 있는 기법이 필요한데,

이것이 해싱 함수(hashing function)이다.

따라서 이 해싱 함수는 주어진 키 값을 레코드의 물리적 주소로 사상시키는 사상 함수(mapping function)가 된다.

이 해싱 함수가 레코드 주소를 계산하기 위해 사용하는 레코드의 키 값을 해시 필드(hash field) 또는 해시 키 (hash key)라 하고,

계산 결과로 나온 하나의 주소를 해시 주소(hash address)라 한다.

직접 파일에서는 레코드를 삽입하거나 검색할 때 이 해시 함수를 이용한다.

이 해시는 인덱스와 상당히 다르다.

하나의 저장 파일은 원하는 수만큼의 여러 인덱스를 가질 수 있지만,

해시 구조는 하나밖에 가질 수 없다.

하나의 파일은 여러 개의 인덱스 필드를 가질 수 있으나, 해시 필드는 하나만 가질 수 있다.

[DBMS] 파일의 구조(순차,인덱스,해싱)

[MySQL] B-tree, B+tree란? (인덱스와 연관지어서)

B-tree는 인덱스를 이루고 있는 자료구조의 일종이다. B-tree에서 ‘B’는 정확히 어떤 의미라고 밝혀진 바는 없다. 아마 ‘Balanced’를 의미하는 ‘B’가 아닐까라는 추측만 있다. MySQL의 DB engine인 InnoDB는 B+tr

zorba91.tistory.com

파일의 구조화

데이터베이스 바로가기

💼📝🔑⏰ 📙📓📘📒🎓

💼 파일구조화란?

파일 수준에서 레코드를 관리(순서 등) 하는 기법을 말한다

하나의 파일은 여러개의 물리적인 블록 단위가 저장

하나의 블록 단위는 여러개의 레코드로 저장 되어 있는 구조로 되어 있다.

새로운 레코드가 저장될 때 어떤식으로 블록에 저장시키는지 3가지 방법을 살펴보고 차이점을 비교해보자.

📝 힙 파일 구조

저장순서 고려 없이 파일 내 임의의 위치에 배치

장점 어느 특정 블록을 찾아서 레코드를 저장시키는 것이 아니라 저장할 크기가 있는 아무 블록에다가 저장하므로 저장의 속도는 가장 빠르다.

단점 어떤 특정 레코드를 검색해야 하는 경우 임의의 블록으로 저장되어 있어 하나씩 블록을 탐색해서 찾아야 하므로 검색 속도는 느리다.

📝 순차 파일 구조

레코드들이 탐색키 기준으로 정렬되어 블록에 저장하는 것을 말한다

장점 어떤 특정 레코드를 검색해야 하는 경우 모든 블록간 레코드의 저장 순서는 탐색키 기준으로 정렬되어 있기 때문에 이진 탐색을 사용하여 검색을 할 수 있으므로 힙 파일 구조처럼 하나씩 블록을 탐색해야 할 필요가 없다. 그렇기 때문에 검색 속도는 힙 파일 구조보다 더 빠르다.

단점 레코드를 저장해야 할 경우 레코드의 탐색키를 비교하고 어떤 블록에 넣을지 판단해야 하는 절차가 있으므로 바로바로 저장할 수 있는 힙 파일 구조의 저장 속도보다는 느리다.

📝 해시 파일 구조

해시 함수를 이용하는 방식으로, 해시 함수는 레코드 탐색키를 입력받아 레코드가 저장될 블록 주소를 반환하고 해당 주소에 레코드를 저장하는 방식이다.

특정 레코드를 검색해야 하는 경우 대부분의 경우 한번의 블록 접근으로 원하는 레코드를 찾을 수 있어

힙 파일, 순차 파일 구조 보다 블록 접근 측면에서 보면 검색 속도가 빠르다고 볼 수도 있겠으나,

문제는 해시 함수가 어떤 구조를 갖느냐에 따라 빠를 수도 있고, 느릴 수도 있다.

공간적인 측면에서 다른 파일 구조들과 비교 해본다면 블록 주소들을 저장해야하는 공간이 필요하므로

다른 파일 구조들에 비해 공간의 낭비가 있을 수 가 있다.

📝 B+-트리

[자료구조] 해시테이블(HashTable)이란?

반응형

1. 해시테이블(HashTable)이란?

[ HashTable(해시테이블)이란 ? ]

해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다. 해시 테이블이 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다. 여기서 실제 값이 저장되는 장소를 버킷 또는 슬롯이라고 한다.

예를 들어 우리가 (Key, Value)가 (“John Smith”, “521-1234”)인 데이터를 크기가 16인 해시 테이블에 저장한다고 하자. 그러면 먼저 index = hash_function(“John Smith”) % 16 연산을 통해 index 값을 계산한다. 그리고 array[index] = “521-1234” 로 전화번호를 저장하게 된다.

이러한 해싱 구조로 데이터를 저장하면 Key값으로 데이터를 찾을 때 해시 함수를 1번만 수행하면 되므로 매우 빠르게 데이터를 저장/삭제/조회할 수 있다. 해시테이블의 평균 시간복잡도는 O(1)이다.

[ Hash 함수(해시 함수) ]

해시 함수에서 중요한 것은 고유한 인덱스 값을 설정하는 것이다. 해시 테이블에 사용되는 대표적인 해시 함수로는 아래의 3가지가 있다.

Division Method: 나눗셈을 이용하는 방법으로 입력값을 테이블의 크기로 나누어 계산한다.( 주소 = 입력값 % 테이블의 크기) 테이블의 크기를 소수로 정하고 2의 제곱수와 먼 값을 사용해야 효과가 좋다고 알려져 있다. Digit Folding: 각 Key의 문자열을 ASCII 코드로 바꾸고 값을 합한 데이터를 테이블 내의 주소로 사용하는 방법이다. Multiplication Method: 숫자로 된 Key값 K와 0과 1사이의 실수 A, 보통 2의 제곱수인 m을 사용하여 다음과 같은 계산을 해준다. h(k)=(kAmod1) × m Univeral Hashing: 다수의 해시함수를 만들어 집합 H에 넣어두고, 무작위로 해시함수를 선택해 해시값을 만드는 기법이다.

2. 해시(Hash)값이 충돌하는 경우

[ 해시( Hash)값이 충돌하는 경우]

그런데 만약 “John Smith”를 해시 함수를 돌려 나온 값과 “Mang Kyu”를 해시 함수를 돌려 나온 값이 동일하다면 어떻게 해야 할까?

해시 테이블에서는 충돌에 의한 문제를 분리 연결법(Separate Chaining)과 개방 주소법(Open Addressing) 크게 2가지로 해결하고 있다.

[ 분리 연결법(Separate Chaining) ]

Separate Chaining이란 동일한 버킷의 데이터에 대해 자료구조를 활용해 추가 메모리를 사용하여 다음 데이터의 주소를 저장하는 것이다. 위의 그림과 같이 동일한 버킷으로 접근을 한다면 데이터들을 연결을 해서 관리해주고 있다. 실제로 Java8의 Hash테이블은 Self-Balancing Binary Search Tree 자료구조를 사용해 Chaining 방식을 구현하였다.

이러한 Chaining 방식은 해시 테이블의 확장이 필요없고 간단하게 구현이 가능하며, 손쉽게 삭제할 수 있다는 장점이 있다. 하지만 데이터의 수가 많아지면 동일한 버킷에 chaining되는 데이터가 많아지며 그에 따라 캐시의 효율성이 감소한다는 단점이 있다.

[ 개방 주소법(Open Addressing) ]

Open Addressing이란 추가적인 메모리를 사용하는 Chaining 방식과 다르게 비어있는 해시 테이블의 공간을 활용하는 방법이다. Open Addressing을 구현하기 위한 대표적인 방법으로는 3가지 방식이 존재한다.

Linear Probing: 현재의 버킷 index로부터 고정폭 만큼씩 이동하여 차례대로 검색해 비어 있는 버킷에 데이터를 저장한다. Quadratic Probing: 해시의 저장순서 폭을 제곱으로 저장하는 방식이다. 예를 들어 처음 충돌이 발생한 경우에는 1만큼 이동하고 그 다음 계속 충돌이 발생하면 2^2, 3^2 칸씩 옮기는 방식이다. Double Hashing Probing: 해시된 값을 한번 더 해싱하여 해시의 규칙성을 없애버리는 방식이다. 해시된 값을 한번 더 해싱하여 새로운 주소를 할당하기 때문에 다른 방법들보다 많은 연산을 하게 된다.

Open Addressing에서 데이터를 삭제하면 삭제된 공간은 Dummy Space로 활용되는데, 그렇기 때문에 Hash Table을 재정리 해주는 작업이 필요하다고 한다.

3. 해시테이블(HashTable) 시간복잡도

[ 해시테이블(HashTable) 시간복잡도 ]

각각의 Key값은 해시함수에 의해 고유한 index를 가지게 되어 바로 접근할 수 있으므로 평균 O(1)의 시간복잡도로 데이터를 조회할 수 있다. 하지만 데이터의 충돌이 발생한 경우 Chaining에 연결된 리스트들까지 검색을 해야 하므로 O(N)까지 시간복잡도가 증가할 수 있다.

충돌을 방지하는 방법들은 데이터의 규칙성(클러스터링)을 방지하기 위한 방식이지만 공간을 많이 사용한다는 치명적인 단점이 있다.

만약 테이블이 꽉 차있는 경우라면 테이블을 확장해주어야 하는데, 이는 매우 심각한 성능의 저하를 불러오기 때문에 가급적이면 확정을 하지 않도록 테이블을 설계해주어야 한다.

(통계적으로 해시 테이블의 공간 사용률이 70% ~ 80%정도가 되면 해시의 충돌이 빈번하게 발생하여 성능이 저하되기 시작한다고 한다.)

또한 해시 테이블에서 자주 사용하게 되는 데이터를 Cache에 적용하면 효율을 높일 수 있다. 자주 hit하게 되는 데이터를 캐시에서 바로 찾음으로써 해시 테이블의 성능을 향상시킬 수 있다.

4. Java의 HashMap(해시맵)과 HashTable(해시테이블) 차이

[ Java의 HashMap(해시맵) vs HashTable(해시테이블) ]

Java 개발자라면 (Key,Value)로 저장하는 익숙한 자료구조인 HashMap이 있다. 그렇다면 Java에서 HashTable과 HashMap의 차이가 당연히 있을 텐데, 그 차이는 동기화 지원 여부에 있다.

// 해시테이블의 put public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw new NullPointerException(); } // Makes sure the key is not already in the hashtable. Entry tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; @SuppressWarnings(“unchecked”) Entry entry = (Entry)tab[index]; for(; entry != null ; entry = entry.next) { if ((entry.hash == hash) && entry.key.equals(key)) { V old = entry.value; entry.value = value; return old; } } addEntry(hash, key, value, index); return null; } // 해시맵의 put public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }

위의 코드에서 첫번째 put은 해시테이블의 put이며, 두번째 put은 해시맵의 put이다. 첫번째 해시테이블의 put에는 synchronized 키워드가 붙어있는 것을 확인할 수 있는데, 이것은 병렬 프로그래밍을 할 때 동기화를 지원해준다는 것을 의미한다. 이것은 해당 함수를 처리하는 시간이 조금 지연됨을 의미힌다.

그렇기 때문에 우리는 병렬 처리를 하면서 자원의 동기화를 고려해야 하는 상황이라면 해시테이블(HashTable)을 사용해야 하며, 병렬 처리를 하지 않거나 자원의 동기화를 고려하지 않는 상황이라면 해시맵(HashMap)을 사용하면 된다.

참고자료

반응형

1. 힙(heap) 파일 구조, 순차 파일 구조와 해시 파일 구조의 차이, 2. 아래의 URL의 B+-트리 애니메이션을 참조하여 B+-트리의 구조와 B+-트리에서의 탐색키 검색, 삽입, 삭제의 과정 방송통신대

1. 힙(heap) 파일 구조, 순차 파일 구조와 해시 파일 구조의 차이, 2. 아래의 URL의 B+-트리 애니메이션을 참조하여 B+-트리의 구조와 B+-트리에서의 탐색키 검색, 삽입, 삭제의 과정

* 본 문서(hwp)가 작성된 한글 프로그램 버전보다 이용하시는 한글프로그램 버전이 낮은 경우에는 문서가 올바르게 표시되지 않을 수 있습니다. 이 경우에는 한글 뷰어 프로그램 또는 상위버전 으로 확인하여 주시기 바랍니다.

소개글 데이터베이스 만점 받은 과제물 입니다.

이론부터 어려운 과목이였네요, 🙂

자료를 많이 찾아서 했던 과제 물입니다.

참고하셔서 좋은 결과 받으세요~^^

목차 1. 힙(heap) 파일 구조, 순차 파일 구조와 해시 파일 구조의 차이점을 1000자 이내로 비교 설명하시오. (20점)

2. 아래의 URL의 B+-트리 애니메이션을 참조하여 B+-트리의 구조와 B+-트리에서의 탐색키 검색, 삽입, 삭제의 과정을 1500자 이내로 설명하시오(50점).

본문내용 1) 힙(heap) 파일 구조

비순서 구조로 레코드들은 파일 내 임의 공간에 저장되는 구조 방식으로 처리 속도가 빠른 장점을 가지고 있다. 그러나 원하는 파일을 검색하거나 삭제 하고 싶을 때는 순차적으로 모든 레코드들을 접근해야하기 때문에 많은 시간이 소요되는 단점을 가지고 있다.

<중 략>

2) 순차 파일 구조

레코드들을 물리적 연속 공간에 탐색키 기준의 순서로 정렬되어 저장되는 방식으로 급여 등 일괄처리에 적합하다. 순차 파일에는 엔트리 순차(레코드 삽입 순서)와 키 순차(레코드 키 값 순서) 파일로 나눠지며, 순서대로 레코드를 처리하기 때문에 속도가 매우 빠르고 기록 밀도가 높기 때문에 기억 공간을 효율적으로 사용할 수 있다.

<중 략>

3) 해시 파일 구조

해싱 기반의 직접 파일로 해시 함수(h)를 사용하여 레코드의 해시 필드 값에 적용하고 탐색키를 입력받아 블록주소를 반환하며 해당되는 주소의 레코드를 저장하는 방식이다. 원하는 레코드를 한 번의 블록 접근으로 효율적이게 검색할 수 있는 장점이 있으며,

참고 자료 정재화 저, 『데이터베이스 시스템』, 한국방송통신대학교 출판문화원, 2020.

강태원·정광식 공저, 『자료구조』, 한국방송통신대학교 출판문화원, 2017.

천인국·공용해·하상호 공저, 『C언어로 쉽게 풀어쓴 자료구조』, 생능출판, 2019

오병우 저, 『데이터베이스 및 설계-데이터베이스의 저장과 접근』, 금오공과대학교, 2014

데이터 구조 및 파일 구조

버퍼 관리

버퍼는 디스크 블록들을 저장하는데 사용되는 주기억 장치 공간

디스크 입.출력은 컴퓨터 시스템에서 가장 속도가 느린 작업이므로 입.출력 횟수를 줄이는 것이 DBMS의 성능을 향상하는데 매우 중요함

가능한 한 많은 블록들을 주기억 장치에 유지하거나 자주 참조되는 블록들을 주기억 장치에 유지하면 블록 전송 횟수를 줄일 수 있음

버퍼 관리자는 운영체제의 구성 요소로, 주기억 장치 내에서 버퍼 공간을 할당하고 관리하는 모듈

버퍼 교체 전략(Buffer Replacement Strategy) 버퍼에 남아 있는 블록 중에서 어느 블록을 새로운 블록으로 교체할 것인가를 결정하는 전략

대부분의 운영체제는 가장 오랫동안 사용되지 않은 블록을 교체하는 LRU(Least Recently Used)기법을 사용

ISAM 파일 – 데이터 파일에 레코드가 삽입되거나 삭제될 때 인덱스의 내용은 변하지만 인덱스의 구조 자체는 변경되지 않는 방법으로,정적 인덱스 방법이라 함

해싱 기법 (1)

[ 해싱 기법 ]

▪ 데이터를 잘게 나누어 보관하고, 보관한 방법 대로 찾는 기법이다.

▪레코드(주소)

– 기본키를 가지고 있는 애트리뷰트를 이용하여 파일 내의 레코드를 찾아 낸다.

– 가능한 주소 공간 >> 실제 주소 공간 > 레코드의 수

– 논리적-물리적 독립성을 가진다.

– 키 값들은 주소 공간에 독립적이고 키 값은 그대로 두고 해쉬 함수만 조정이 가능

▪ 해싱에서의 레코드 검색 방법

– 키를 가지고 -> 주소를 찾아가 -> 레코드에 접근 해서 -> data를 얻는다.

– 순차 파일은 레코드 수가 많으면 수에 비례해서 탐색 시간이 많이 걸린다.

– 해싱은 반드시 그런 것 만은 아니다

▪ 해쉬 구조 설계시 고려해야 하는 사항들

– 버켓 크기 : 파일에서 같은 주소에 포함 될 수 있는 레코드 수

– 적재율 : 저장된 파일의 레코드 수, 버켓의 총 용량

– 해싱 함수 : 주소 생성을 위한 변환 절차

– 오버플로 해결 기법 : 버켓의 오버플로우

[ 해싱 파일 ]

▪ 해싱을 기반으로 조직된 파일을 해시 파일 또는 직접 파일이라고 한다.

▪ 해싱을 사용하면 특정 탐색 조건을 만족하는 레코드들을 매우 빠르게 접근 할 수 있다. 이런 파일 조직을 해시 파일이라고 한다. 탐색 조건은 해시 필드라고 하는 단일 필드에 대한 동등 조건이어야 한다.

▪ 해시 함수 또는 난수화 함수라고 하는 함수 h는 레코드의 해시 필드값에 적용하여 레코드를 저장하고 있 는 디스크 블록의 주소를 산출한다.

▪ 대부분의 레코드에 대해 한번의 블록 접근으로 원하는 레코드를 검색하는 매우 효율적인 방식이다.

▪ 대부분의 경우에 파일의 키 필드가 해시 필드로 사용되는데, 이 경우에 해시키라고 부른다.

▪ 해싱을 사용하면 특정 탐색 조건을 만족하는 레코드들을 매우 빠르게 접근할 수 있다. 이런 파일 조직을 해시 파일이라 한다.

▪ 한 프로그램에서 어던 필드값을 사용하여 레코드들의 그룹을 베타적으로 접근하고자 할 때, 내부 탐색 구조로서 해싱을 사용한다.

[ 내부 해싱 ]

▪ 내부 파일에서 해싱은 일반적으로 레코들의 배열을 이용하여 해시 테이블로 구현된다.

▪ 대부분의 해시 함수는 서로 다른 해시 필드값을 항상 서로 다른 주소로 사상하지는 못한다는 문제점을 가지고 있다. 그 이유는 해시 필드 공간(해시 필드가 취할 수 있는 가능한 값들의 개수)이 주소 공간(레 코드들에 대해 사용가능한 주소 개수)보다 매우 크기 때문이다.

▪ 해시 함수란 해시 필드 공간을 주소 공간으로 사상시키는 함수이다.

▪ 삽입하려는 레코드의 해시 필드 값이 이미 다른 레코드가 점유하고 있는 주소로 해싱될 때 충돌이 발생한 다. 이런 경우 새로운 레코드에 대한 해시 주소를 이미 다른 레코드가 사용하고 있으므로 새로운 레코드 를 다른 위치에 삽입해야 한다. 이렇게 다른 위치를 찾는 과정을 충돌 해결이라고 한다.

▪ 빈 공간이 많이 남지 않도록 하면서 충돌을 최소화하도록 레코드들을 주소 공간에 균등하게 분산시키는 것이 우수한 해시 함수의 목적이다.

▪ 해시 테이블을 70%~90% 정도 사용하도록 유지할 때 충돌 횟수도 줄이고, 공간낭비도 줄일 수 있다.

▪ 충돌 해결 기법

– 개방 주소 지정 : 해시 주소가 가리키고 있는 위치부터 시작하여 빈 위치를 찾을 때까지 순차적으로 그 이후의 위치들을 조사한다.

– 체인 : 충돌이 발생하면, 사용하지 않는 오버플로 영역에 새로운 레코드를 저장하고 다른 레코드가 이미 점유하고 있는 해시 주소 영역의 포인터에 오버플로 영역의 주소를 지정하여 충돌을 해 결한다.

– 다중 해싱 : 충돌이 발생하지 않을 때까지 여러 개의 해시 함수를 적용한다. 충돌 시 필요하면 개방 주소 지정 방법을 사용한다.

댓글이나 공감 남겨주는 사람 착한사람

[데이터베이스] 파일과 색인 1편

저장장치

저장 장치는 2가지로 나누어 진다.

1. 주 기억장치 : 전자회로로 구성된 전자장치이므로 자료 처리 속도가 빠르며, 중앙연산 처리장치(CPU)에서 1차적으로 접근하기 때문에 Primary storage라고 한다.

하지만 가격이 높기 때문에 용량을 크게 확장하기 어려워 보조 기억장치와 같이 쓴다. 그리고 전원이 꺼지면 기억된 정보가 소실된다.

2. 보조 저장장치 : 기계장치이기 때문에 전자장치인 주 저장장치보다 속도가 느리다. 보조 저장장치는 전원이 꺼져도 기억된 정보가 유지되는 특징이 있다.

3) 디스크 구조 : 디스크에서 자료는 물리 블록(Physical Block)이라는 단위로 저장된다. 디스크는 여러개의 원판(Platter)로 구성되어 축을 중심으로 고속 회전한다.

이때 자료를 읽고 쓰는 헤드는 회전하는 원반 위로 이동하면서 동심원의 트랙(Track)을 구성한다.

4) 버퍼관리기 : DBMS가 자료를 처리하려면 자료가 주기억 장치에 있어야함. 그러나 주기억 장치의 크기는 데이터베이스 자료의 크기에 비하면 매우 작아서 신속하게 자료를 접근하지 못하는 문제 발생.

버퍼관리기(Buffer manager)는 DBMS가 원하는 페이지를 디스크에서 가져와 주기억장치의 버퍼 풀(Buffer Pool)에 저장하는 일을 한다.

파일 구성

파일은 레코드로 구성되며, 레코드들은 같은 형태를 가진 속성들로 구성된다.

1) 파일구조 : 파일구조는 파일을 구성하는 레코드들이 연결되는 방식에 따라서 다양하다. 파일 구조는 길이에 따라서, 레코드들의 순서에 따라서, 레코드들이 연결되는 방식에 따라서 다양하게 구성된다.

– 고정 길이 레코드 : 한 파일의 레코드들의 길이가 동일한 경우. 레코드를 구성하는 각 속성들의 길이가 고정되어 있고, 속성들의 수가 고정되어 있으면 고정길이 레코드.

– 가변 길이 레코드 :

– 레코드를 구성하는 속성의 길이가 다르면 레코드들의 길이가 다를 수 있다.

– 사용하는 속성의 수가 많아지면 가변 길이가 된다. 예를 들어 사원들의 경력 파일에서 경력이 많으면 레코드의 길이가 길어진다.

2) 블록 : 디스크에서 자료의 읽기/ 쓰기 단위와 주기억 장치 사이의 전송단위

레코드의 크기보다 블록의 크기가 일반적으로 크기 때문에 한 블록에 여러개의 레코드를 작성. 레코드를 블록에 저장하다보면 마지막 레코드는 중간만 저장하고 나머지는 다음 블록에 저장할 수 있다.

!! 하나의 레코드가 두 블록에 나뉘어 있는지, 한 블록에만 있는지에 따라서 신장 레코드와 비신장 레코드로 구분된다.

1. 비신장 레코드(Unspanned Record) :

– 레코드들을 블록에 저장할 수 있을만큼 저장하고 빈 공간을 남겨둔다.

– 레코드가 들어갈 수 없으면 다음 블록에 저장하므로 블록 공간의 낭비

2. 신장 레코드(Spanned Record)

– 남는 여분의 공간이 있으면 레코드를 적당한 크기로 잘라서 저장.

– 디스크 공간을 낭비하지 않는다.

파일의 종류

파일의 종류는 구성에 따라서 히프 파일(Heap file), 순서 파일(Sequential file), 해시 파일(Hash file)로 나눌 수 있다.

[히프 파일]

– 순서가 없는 가장 간단한 파일.

– 레코드들이 어떤 형태로든 정렬되지 않으며, 파일의 레코드들을 검색하려면 다음 레코드를 읽어야 함.

– 추가할 때는 마지막 페이지를 읽어서 새로운 코드를 추가한 다음에 다시 기록한다.

– 검색의 경우 모든 페이지들을 읽어서 원하는 레코드인지 확인해야 하기 때문에 비효율적이다.

[순서 파일]

– 한 필드의 자료 값을 기준으로 레코드들을 정렬한 파일

– 순서필드 : 정렬의 기준이 되는 필드 ex) 순서 필드가 파일의 키라면 순서 키가 된다.

– 장점 : 레코드를 읽을 때, 부가적인 연산이 필요 없다, 검색처리가 신속하다.

[해시 파일]

– 탐색 키값을 이용하여 원하는 레코드를 신속하게 찾을 수 있도록 구성된 파일.

– 특징 : 키 값을 알면 다른 레코드 거치지 않고 직접 원하는 레코드를 찾을 수 있다.

–> 히프 파일, 순서 파일은 처음부터 다른 레코드를 검색해야 한다.

키워드에 대한 정보 해시 파일 구조

다음은 Bing에서 해시 파일 구조 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 해시-해시테이블-해싱 5분만에 이해하기 – Gunny

  • 해시
  • 해싱
  • 해시 테이블
  • 해시맵
  • 벡터
  • 탐색
  • 알고리즘
  • 거니
  • 자료구조
  • C언어
  • 자바
  • 고지식
  • 알고투게더
  • 알고리즘 투게더
  • 투게더
  • Gunny
  • Java
  • Algorithm
  • Hash
  • Hashing
  • Hash Table
  • Hash Map
  • Map
  • Vector
  • Coding in c
  • Coding in java
  • data structure

해시-해시테이블-해싱 #5분만에 #이해하기 #- #Gunny


YouTube에서 해시 파일 구조 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 해시-해시테이블-해싱 5분만에 이해하기 – Gunny | 해시 파일 구조, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment