Presentation is loading. Please wait.

Presentation is loading. Please wait.

FALL 2004CENG 3511 Hashing Reference: Chapters: 11,12.

Similar presentations


Presentation on theme: "FALL 2004CENG 3511 Hashing Reference: Chapters: 11,12."— Presentation transcript:

1 FALL 2004CENG 3511 Hashing Reference: Chapters: 11,12

2 FALL 2004CENG 3512 Motivation The primary goal is to locate the desired record in a single access of disk. –Sequential search: O(N) –B+ trees: O(log k N) –Hashing: O(1) In hashing, the key of a record is transformed into an address and the record is stored at that address. Hash-based indexes are best for equality selections. Cannot support range searches. Static and dynamic hashing techniques exist.

3 FALL 2004CENG 3513 Hash-based Index Data entries are kept in buckets (an abstract term) Each bucket is a collection of one primary page and zero or more overflow pages. Given a search key value, k, we can find the bucket where the data entry k* is stored as follows: –Use a hash function, denoted by h –The value of h(k) is the address for the desired bucket. h(k) should distribute the search key values uniformly over the collection of buckets

4 FALL 2004CENG 3514 Design Factors Bucket size: the number of records that can be held at the same address. Loading factor: the ratio of the number of records put in the file to the total capacity of the buckets. Hash function: should evenly distribute the keys among the addresses. Overflow resolution technique.

5 FALL 2004CENG 3515 Hash Functions Key mod N: –N is the size of the table, better if it is prime. Folding: –e.g. 123|456|789: add them and take mod. Truncation: –e.g. 123456789 map to a table of 1000 addresses by picking 3 digits of the key. Squaring: –Square the key and then truncate Radix conversion: –e.g. 1 2 3 4 treat it to be base 11, truncate if necessary.

6 FALL 2004CENG 3516 Static Hashing Primary Area: # primary pages fixed, allocated sequentially, never de-allocated; (say M buckets). –A simple hash function: h(k) = f(k) mod M Overflow area: disjoint from the primary area. It keeps buckets which hold records whose key maps to a full bucket. –Adding the address of an overflow bucket to a primary area bucket is called chaining. Collision does not cause a problem as long as there is still room in the mapped bucket. Overflow occurs during insertion when a record is hashed to the bucket that is already full.

7 FALL 2004CENG 3517 Example Assume f(k) = k. Let M = 5. So, h(k) = k mod 5 Bucket factor = 3 records. 03560 1646 2125762 333 444 17 Primary areaoverflow

8 FALL 2004CENG 3518 Load Factor (Packing density) To limit the amount of overflow we allocate more space to the primary area than we need (i.e. the primary area will be, say, 70% full) Load Factor = => Lf = # of records in the file # of spaces in primary area n M * Bkfr

9 FALL 2004CENG 3519 Effects of Lf and Bkfr Performance can be enhanced by the choice of bucket size and load factor. In general, a smaller load factor means –less overflow and a faster fetch time; –but more wasted space. A larger Bkfr means –less overflow in general, –but slower fetch.

10 FALL 2004CENG 35110 Insertion and Deletion Insertion: New records are inserted at the end of the chain. Deletion: Two ways are possible: 1.Mark the record to be deleted 2.Consolidate sparse buckets when deleting records. –In the 2 nd approach: When a record is deleted, fill its place with the last record in the chain of the current bucket. Deallocate the last bucket when it becomes empty.

11 FALL 2004CENG 35111 Problem of Static Hashing The main problem with static hashing: the number of buckets is fixed: –Long overflow chains can develop and degrade performance. –On the other hand, if a file shrinks greatly, a lot of bucket space will be wasted. There are some other hashing techniques that allow dynamically growing and shrinking hash index. These include: –linear hashing –extendible hashing

12 FALL 2004CENG 35112 Linear Hashing It maintains a constant load factor. Thus avoids reorganization. It does so, by incrementally adding new buckets to the primary area. In linear hashing the last bits in the hash number are used for placing the records.

13 FALL 2004CENG 35113 Example 00081632 0011725 0103450 0111127 1002812 1015 11014 1115515 Last 3 bits e.g. 34: 100010 28: 011100 13: 001101 21: 010101 Insert: 13, 21, 37 Lf = 15/24 = 63%

14 FALL 2004CENG 35114 Insertion of records To expand the table: split an existing bucket denoted by k digits into two buckets using the last k+1 digits. e.g. 000 1000 0000

15 FALL 2004CENG 35115 Expanding the table 00001632 0011725 0103450 0111127 1002812 10151321 11014 1115515 10008 37 Boundary value

16 FALL 2004CENG 35116 00001632 000117 00103450 0111127 1002812 10151321 11014 1115515 10008 100125 101026 Boundary value 37 k = 3 Hash # 1000: uses last 4 digits Hash # 1101: uses last 3 digits

17 FALL 2004CENG 35117 Fetching a record Calculate the hash function. Look at the last k digits. –If it’s less than the boundary value, the location is in the bucket labeled with the last k+1 digits. –Otherwise it is in the bucket labeled with the last k digits. Follow overflow chains as with static hashing.

18 FALL 2004CENG 35118 Insertion Search for the correct bucket into which to place the new record. If the bucket is full, allocate a new overflow bucket. If there are now Lf*Bkfr records more than needed for the given Lf, –Add one more bucket to the primary area. –Distribute the records from the bucket chain at the boundary value between the original area and the new primary area buckets –Add 1 to the boundary value.

19 FALL 2004CENG 35119 Deletion Read in a chain of records. Replace the deleted record with the last record in the chain. –If the last overflow bucket becomes empty, deallocate it. When the number of records is Lf * Bkfr less than the number needed for Lf, contract the primary area by one bucket. Compressing the table is exact opposite of expanding it: Keep the total # of records in the file and buckets in primary area. When we have Lf * Bkfr fewer records than needed, consolidate the last bucket with the bucket which shares the same last k digits.

20 FALL 2004CENG 35120 Extendible Hashing Hash function returns b bits Only the prefix i bits are used to hash the item There are 2 i entries in the bucket address table Let i j be the length of the common hash prefix for data bucket j, there is 2 (i-i j ) entries in bucket address table points to j Extendable Hashing i i2 bucket2 i3 bucket3 i1 bucket1 Data bucket Bucket address table Length of common hash prefixHash prefix

21 FALL 2004CENG 35121 Splitting a bucket: Case 1 Splitting (Case 1: i j =i) –Only one entry in bucket address table points to data bucket j –i++; split data bucket j to j, z; i j =i z =i; rehash all items previously in j; Extendable Hashing 3 3 2 1 3 000 001 010 011 100 101 110 111 2 00 01 10 11 2 2 1

22 FALL 2004CENG 35122 Splitting: Case 2 Splitting (Case 2: i j < i) –More than one entry in bucket address table point to data bucket j –split data bucket j to j, z; i j = i z = i j +1; Adjust the pointers previously point to j to j and z; rehash all items previously in j; Extendable Hashing 2 2 1 3 000 001 010 011 100 101 110 111 2 2 2 3 000 001 010 011 100 101 110 111 2

23 FALL 2004CENG 35123 Example Suppose the hash function is h(x) = x mod 8 and each bucket can hold at most two records. Show the extendable hash structure after inserting 1, 4, 5, 7, 8, 2, 20. Extendable Hashing 14578220 001100101111000010100 1414 00 1 1 1 4545 1 0 100 01 10 11 1818 1 2 4545 2 7 2

24 FALL 2004CENG 35124 Example 3 000 001 010 011 100 101 110 111 1818 2 4 20 2 7 2 2 3 5 3 1818 2 2 2 2 4545 2 7 2 00 01 10 11 inserting 1, 4, 5, 7, 8, 2, 20 14578220 001100101111000010100 Extendable Hashing

25 FALL 2004CENG 35125 Comments on Extendible Hashing If directory fits in memory, equality search answered with one disk access. – A typical example: a100MB file with 100 bytes/entry and a page size of 4K contains 1,000,000 records (as data entries) but only about 25,000 directory elements  chances are high that directory will fit in memory. If the distribution of hash values is skewed (e.g., a large number of search key values all are hashed to the same bucket ), directory can grow large. –But this kind of skew can be avoided with a well-tuned hashing function

26 FALL 2004CENG 35126 Comments on Extendible Hashing Delete: If removal of data entry makes bucket empty, can be merged with a “ buddy ” bucket. If each directory element points to same bucket as its split image, can halve directory.

27 FALL 2004CENG 35127 Summary Hash-based indexes: best for equality searches, cannot support range searches. Static Hashing can lead to long overflow chains. Extendible Hashing avoids overflow pages by splitting a full bucket when a new data entry is to be added to it. – Directory to keep track of buckets, doubles periodically. – Can get large with skewed data; additional I/O if this does not fit in main memory.


Download ppt "FALL 2004CENG 3511 Hashing Reference: Chapters: 11,12."

Similar presentations


Ads by Google