Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Apa? Memahami Indeks Hash

Indeks hash merupakan bagian integral dari database. Jika Anda pernah menggunakan database, kemungkinan besar Anda pernah melihatnya beraksi tanpa menyadarinya.

Indeks hash berbeda dalam pekerjaan dari jenis indeks lainnya karena mereka menyimpan nilai daripada penunjuk ke catatan yang terletak di disk. Ini memastikan pencarian dan penyisipan yang lebih cepat ke dalam indeks. Itulah mengapa indeks hash sering digunakan sebagai kunci utama atau pengenal unik.

Memahami Indeks Hash

Indeks hash adalah jenis indeks yang paling umum digunakan dalam manajemen data. Biasanya dibuat pada kolom yang berisi nilai unik, seperti kunci utama atau alamat email. Manfaat utama menggunakan indeks hash adalah kinerjanya yang cepat.

Konsep di balik indeks ini dapat menjadi rumit untuk dipahami oleh seseorang yang belum pernah mendengarnya sebelumnya. Namun, pemahaman indeks hash penting jika Anda perlu memahami cara kerja database. Hal ini diperlukan untuk memecahkan masalah umum yang terkait dengan database dan kecepatannya.

Kabar baiknya adalah dengan sedikit kesabaran dan ponsel dimatikan, Anda pasti bisa menguasai indeks hash! Jadi, mari kita lihat lebih baik.

Cepat dan Mudah

Indeks hash adalah struktur data yang dapat digunakan untuk mempercepat kueri basis data. Ia bekerja dengan mengubah catatan input menjadi array ember. Setiap bucket memiliki jumlah record yang sama dengan semua bucket lainnya dalam tabel. Jadi, tidak peduli berapa banyak nilai berbeda yang Anda miliki untuk kolom tertentu, setiap baris akan selalu dipetakan ke satu keranjang.

Indeks hash memungkinkan pencarian cepat pada data yang disimpan dalam tabel. Mereka bekerja dengan membuat kunci indeks dari nilai dan kemudian menempatkannya berdasarkan hash yang dihasilkan. Ini berguna ketika ada banyak input dengan nilai atau duplikat yang serupa, karena hanya perlu membandingkan kunci daripada melihat semua catatan.

Apakah ini tidak cepat atau mudah? Untuk memahami cara kerja indeks hash dan mengapa indeks tersebut begitu kuat, Anda perlu memahami apa yang dimaksud dengan hashing.

Hashing mengambil sepotong informasi (string) dan mengubahnya menjadi alamat atau penunjuk untuk akses cepat nanti.

Gagasan dengan hashing adalah bahwa data diberi sejumlah kecil. Saat Anda mencari data, Anda tidak harus benar-benar menyaring massa. Sebaliknya, cari saja satu nomor itu. Contoh paling sederhana adalah Ctrl+F-ing kata yang Anda cari dalam teks alih-alih membaca lusinan halaman sendiri.

Untuk apa indeks hash?

Indeks hash adalah cara untuk mempercepat proses pencarian. Dengan indeks tradisional, Anda harus memindai setiap baris untuk memastikan kueri Anda berhasil. Tetapi dengan indeks hash, ini tidak terjadi!

Setiap kunci indeks hanya berisi satu baris data tabel dan menggunakan algoritma pengindeksan yang disebut hashing yang memberi mereka lokasi unik di memori, menghilangkan semua kunci lain dengan nilai duplikat sebelum menemukan apa yang dicarinya.

Indeks hash adalah salah satu dari banyak cara untuk mengatur data dalam database. Mereka bekerja dengan mengambil input dan menggunakannya sebagai kunci untuk penyimpanan pada disk. Kunci ini, atau nilai hash , dapat berupa apa saja mulai dari panjang string hingga karakter dalam input.

Indeks hash paling sering digunakan saat menanyakan input tertentu dengan atribut tertentu. Misalnya, mungkin menemukan semua huruf A yang lebih tinggi dari 10 cm. Anda dapat melakukannya dengan cepat dengan membuat fungsi indeks hash.

Indeks hash adalah bagian dari sistem database PostgreSQL. Sistem ini dikembangkan untuk meningkatkan kecepatan dan kinerja. Indeks hash dapat digunakan bersama dengan jenis indeks lainnya, seperti B-tree atau GiST.

Indeks hash menyimpan kunci dengan membaginya menjadi potongan yang lebih kecil yang disebut ember, di mana setiap ember diberi nomor ID integer untuk mengambilnya dengan cepat saat mencari lokasi kunci di tabel hash. Bucket disimpan secara berurutan pada disk sehingga data yang dikandungnya dapat diakses dengan cepat.

Penjelasan teknis lebih lanjut dapat ditemukan di halaman ini (klik kanan mouse dan pilih “Terjemahkan ke Bahasa Inggris”).

Keuntungan

Keuntungan utama menggunakan indeks hash adalah mereka memungkinkan akses cepat saat mengambil catatan dengan nilai kunci. Ini sering berguna untuk kueri dengan kondisi kesetaraan. Selain itu, menggunakan benchmark hash tidak akan membutuhkan banyak ruang penyimpanan. Jadi, ini adalah alat yang efektif, tetapi bukan tanpa kekurangan.

Kekurangan

Indeks hash adalah struktur pengindeksan yang relatif baru dengan potensi memberikan manfaat kinerja yang signifikan. Anda dapat menganggapnya sebagai perpanjangan dari pohon pencarian biner (BST).

Indeks hash bekerja dengan menyimpan data dalam ember berdasarkan nilai hashnya, yang memungkinkan pengambilan data secara cepat dan efisien. Mereka dijamin rapi.

Namun, tidak mungkin menyimpan kunci duplikat di dalam ember. Oleh karena itu, akan selalu ada beberapa overhead. Namun sejauh ini, kelebihan penggunaan indeks hash lebih besar daripada kekurangannya.

Bagaimana Cara Kerjanya Sedikit Lebih Mendalam?

Mari lakukan demo aviasales database untuk mendapatkan pemahaman yang lebih mendalam tentang cara kerja indeks hash.

demo=# create index on flights using hash(flight_no);
WARNING:  hash indexes are not WAL-logged and their use is discouraged
CREATE INDEX

demo=# explain (costs off) select * from flights where flight_no = 'PG0001';
                     QUERY PLAN                    
----------------------------------------------------
 Bitmap Heap Scan on flights
   Recheck Cond: (flight_no = 'PG0001'::bpchar)
   ->  Bitmap Index Scan on flights_flight_no_idx
         Index Cond: (flight_no = 'PG0001'::bpchar)
(4 rows)

Di sini Anda dapat melihat bagaimana kami menerapkan indeks hash dengan mengompilasi data ke dalam kumpulan.

Ini adalah contoh yang mudah, tetapi perhatikan bahwa keterbatasan datang dengan infrastruktur kode yang lebih sedikit. Mungkin ada kekurangan akses log-WAL atau ketidakmampuan untuk memulihkan indeks (indeks?) setelah crash. Selain itu, indeks mungkin tidak berpartisipasi dalam replikasi – ini karena PostgreSQL sudah usang. Namun, seperti halnya Python, Anda mendapatkan peringatan yang sering kali memungkinkan Anda untuk mencegah kesalahan.

Anda dapat melihat lebih dalam di dalam indeks ini jika Anda cukup tertarik. Untuk itu, kami membuat pemeriksaan halaman contoh ekstensi.

demo=# create extension pageinspect;
CREATE EXTENSION

demo=# select hash_page_type(get_raw_page('flights_flight_no_idx',0));
 hash_page_type
----------------
 metapage
(1 row)
demo=# select ntuples, maxbucket from hash_metapage_info(get_raw_page('flights_flight_no_idx',0));
 ntuples | maxbucket
---------+-----------
   33121 |       127
(1 row)

demo=# select hash_page_type(get_raw_page('flights_flight_no_idx',1));
 hash_page_type
----------------
 bucket
(1 row)
demo=# select live_items, dead_items from hash_page_stats(get_raw_page('flights_flight_no_idx',1));
 live_items | dead_items
------------+------------
        407 |          0
(1 row)

Jika Anda ingin memeriksa kode secara menyeluruh, mulailah dengan README.

Ringkasan

Indeks hash adalah struktur data yang mempercepat proses pencarian informasi dalam database besar. Mereka bekerja dengan membagi data menjadi potongan-potongan yang lebih kecil dan kemudian menyortirnya. Jadi, saat Anda mencari sesuatu, Anda dapat menemukannya lebih cepat.

Jika Anda ingin mencari lebih banyak barang, ada sumber daya untuk DYOR. Juga, awasi artikel baru kami, yang keluar lebih cepat daripada yang Anda bisa Ctrl+F kata "hash" di halaman ini. Semoga ini bisa membantu!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu Basis Data Greenplum? Pengantar ke Basis Data Big Data

  2. Pengantar Model Data ER

  3. Apa itu Pengujian Basis Data dan Bagaimana Melakukannya?

  4. ScaleGrid Sekarang Tersedia di Wilayah AWS Sydney

  5. Migrasi Django:Sebuah Primer