DBMS'de Hashing: Statik ve Dinamik Hashing Teknikleri

⚡ Akıllı Özet

Veritabanı yönetim sistemlerinde (DBMS) karma (hashing), bir kaydın disk konumunu dizin taraması yapmadan doğrudan anahtarından hesaplayan bir tekniktir. Karma fonksiyonu, arama anahtarlarını veri kovalarına eşler ve statik veya dinamik karma, bu kovaların nasıl büyüyeceğini yönetir.

  • ⚡ Ana düşünce: Karma fonksiyonu, bir anahtarı bir kova adresine dönüştürür; böylece bir kayıt, dizin taraması yerine tek bir adımda bulunur.
  • 🪣 Veri Kovası: Aynı karma değerine sahip kayıtların yerleştirildiği bellek konumu veya depolama birimi.
  • 📌 Statik Karma Fonksiyonu: Kova sayısı sabittir, bu nedenle belirli bir anahtar her zaman aynı adrese eşlenir.
  • 📈 Dinamik Karma Fonksiyonu: Veri hacmi değiştikçe, talep üzerine kovalar eklenir ve kaldırılır.
  • 💥 Çarpışma: İki anahtar haritasıping Aynı kovaya, sorgulama, yeniden karma oluşturma veya zincirleme yoluyla çözümlenir.
  • 🔍 En: Arama anahtarında tam eşleşme aramaları, burada karma algoritması sıralı indekslemeye göre daha iyi performans gösterir.
  • 📊 Değiş tokuş: Aralık sorguları için sıralı indeksleme, sabit değer ekleme ve nokta arama işlemleri için ise karma fonksiyonlar daha avantajlıdır.

Veritabanı Yönetim Sistemlerinde Statik ve Dinamik Karma Fonksiyonları

DBMS'de Hashing nedir?

Veritabanı yönetim sistemlerinde (DBMS), karma (hashing), indeks yapısı kullanmadan disk üzerindeki istenen verinin konumunu doğrudan arama tekniğidir. Karma yöntemi, veritabanındaki öğeleri indekslemek ve almak için kullanılır, çünkü belirli bir öğeyi orijinal değerinden ziyade daha kısa karma anahtar kullanarak aramak daha hızlıdır. Veriler, adresleri bir karma fonksiyonu uygulanarak oluşturulan veri blokları şeklinde saklanır; bu kayıtların saklandığı bellek konumu, dizin olarak bilinir. veri bloğu veya veri kümesi.

Karma fonksiyonlara neden ihtiyacımız var?

Veritabanı yönetim sistemlerinde (DBMS) karma (hashing) yöntemini uygulamanız gereken durumlar şunlardır:

  • Büyük bir veritabanı yapısında, tüm indeks değerlerini tüm seviyeler boyunca aramak ve ardından istenen veriye ulaşmak için hedef veri bloğuna erişmek zordur.
  • Veritabanındaki öğeleri indekslemek ve almak için karma (hashing) yöntemi kullanılır, çünkü belirli bir öğeyi aramak için orijinal değerden daha kısa olan karma anahtar kullanmak daha hızlıdır.
  • Karma algoritması, indeks yapısı kullanmadan disk üzerindeki bir veri kaydının doğrudan konumunu hesaplamak için ideal bir yöntemdir.
  • Aynı zamanda sözlüklerin uygulanmasında da yararlı bir tekniktir.

Hashing'de Önemli Terminolojiler

İşte karma algoritmalarında kullanılan önemli terimler:

  • Veri kovası: Veri kovaları, kayıtların depolandığı bellek konumlarıdır. Aynı zamanda depolama birimi olarak da bilinir.
  • anahtar: a DBMS anahtarı Bir ilişkideki (tablodaki) bir satırı (kayıtı) tanımlamanıza yardımcı olan bir özellik veya özellikler kümesidir.
  • Karma işlevi: bir haritaping Arama anahtarlarının tümünü, gerçek kayıtların bulunduğu adrese eşleyen fonksiyon.
  • Doğrusal Sondalama: Sorgulamalar arasında sabit bir aralık bulunur. Bu yöntemde, eski kaydın üzerine yazmak yerine, yeni kaydı girmek için bir sonraki kullanılabilir veri bloğu kullanılır.
  • İkinci Dereceden Sondalama: Orijinal hesaplamayla elde edilen başlangıç ​​değerine ikinci dereceden bir polinomun ardışık çıktısını ekleyerek yeni kova adresini belirlemeye yardımcı olur.
  • Karma indeks: Veri bloğunun adresi. Bir karma fonksiyonu basit bir matematiksel fonksiyon veya karmaşık bir fonksiyon olabilir.
  • Double Karma: Karma tablolarında çakışmaları gidermek için ikinci bir karma fonksiyonu uygulayarak kullanılan bir yöntem.
  • Kova Taşması: Kova taşması durumuna çarpışma denir. Bu, herhangi bir statik karma fonksiyonu için ölümcül bir aşamadır.

Hashing Tekniklerinin Türleri

Veritabanı yönetim sistemlerinde (DBMS) temel olarak iki tür karma algoritması tekniği vardır:

  1. Statik Karma
  2. Dinamik Karma

İki yöntem arasındaki temel fark, kova sayısının sabit olup olmamasıdır; bu durum sonraki iki bölümde açıklanmaktadır.

Statik Karma

Statik karma işleminde, elde edilen veri kovası adresi her zaman aynı kalır.

Dolayısıyla, örneğin, bir adres oluşturursanız, Öğrenci_ID = 10 karma fonksiyonunu kullanarak mod(3), sonuçta ortaya çıkan paket adresi her zaman olacaktır 1Dolayısıyla kova adresinde herhangi bir değişiklik görmeyeceksiniz.

Bu nedenle, statik karma yönteminde bellekteki veri kovalarının sayısı her zaman sabit kalır.

Statik Karma İşlevleri

  • Kayıt ekleme: Tabloya yeni bir kayıt eklenmesi gerektiğinde, bu kayıt için karma anahtarını kullanarak bir adres oluşturulur. Adres oluşturulduktan sonra, kayıt o konumda saklanır.
  • Aranıyor: Kaydı almak gerektiğinde, verinin saklandığı kovanın adresini almak için aynı karma işlevi kullanılır.
  • Bir kaydı silme: Karma fonksiyonunu kullanarak, önce silmek istediğiniz kaydı alırsınız, ardından o adresi bellekten kaldırırsınız.

Statik karma algoritması ayrıca şu alt kategorilere ayrılır:

  1. Açık karma
  2. Kapalı karma algoritması

Hashing'i aç

Açık karma yönteminde, eski kaydın üzerine yazmak yerine, yeni kaydı girmek için bir sonraki kullanılabilir veri bloğu kullanılır. Bu yöntem aynı zamanda doğrusal sorgulama olarak da bilinir.

Örneğin, A2 eklemek istediğiniz yeni bir kayıttır. Karma fonksiyonu 222 adresini oluşturur, ancak bu adres zaten başka bir değer tarafından kullanılmaktadır. Bu nedenle sistem bir sonraki veri kovasını, 501'i arar ve A2'yi ona atar.

Açık karma algoritmasının doğrusal sorgulama ile nasıl çalıştığı
Açık Karma Nasıl Çalışır?

Kapalı Karma

Kapalı karma yönteminde, kovalar dolduğunda aynı karma için yeni bir kova tahsis edilir ve sonuç bir öncekine bağlanır.

Dinamik Karma

Dinamik karma algoritması, veri gruplarının dinamik olarak ve isteğe bağlı olarak eklenip çıkarıldığı bir mekanizma sunar. Bu karma yönteminde, karma fonksiyonu çok sayıda değer oluşturmanıza yardımcı olur ve yapı verilerle birlikte büyür veya küçülür. Bu da, statik karma algoritmasının ya yer israfına yol açacağı ya da taşmaya neden olacağı, boyutu önceden tahmin edilemeyen tablolar için ideal bir çözüm olmasını sağlar.

Sıralı İndeksleme ve Karma Fonksiyonu Arasındaki Fark

Aşağıda indeksleme ve karma algoritmaları arasındaki temel farklar yer almaktadır:

Parametreler Sıralı İndeksleme Çırpı
Adresin saklanması Bellekteki adresler, birincil anahtar adı verilen bir anahtar değerine göre sıralanır. Adresler her zaman anahtar değer üzerinde bir karma işlevi kullanılarak oluşturulur.
Performans Veri sayısı arttıkça bu değer azalabilir, çünkü veriler sıralı olarak saklanır ve her ekleme, silme veya güncelleme işlemi verilerin sırasını değiştirir. Verilerin sürekli eklenmesi ve silinmesi durumunda performans en üst düzeye çıkar. Çok büyük veritabanları için hash dosyasının bakımı daha maliyetli hale gelir.
İçin kullanmak Belirli bir aralık için veri alınması gereken aralık alma işlemleri için tercih edilir. Arama anahtarına göre belirli bir kaydı almak için idealdir ve yalnızca karma işlevi arama anahtarında olduğunda iyi performans gösterir.
Bellek yönetimi Silme ve güncelleme işlemlerinden kaynaklanan ve yeniden kullanım için serbest bırakılamayan birçok kullanılmayan veri bloğu vardır, bu nedenle düzenli bakım gereklidir. Statik ve dinamik karma algoritmalarında, bellek her zaman yönetilir ve kova taşması statik karma algoritmasını genişletmek için ele alınır.

Özetle, sıralı olanı seçin. indeksleme Aralık sorguları için ve anahtar üzerinde tam eşleşme aramaları için karma fonksiyonlar kullanılır.

Çarpışma Nedir?

Karma çakışması, veri kümesindeki iki veya daha fazla öğenin sonuçtaki karma değerlerinin yanlışlıkla aynı yere eşlenmesi durumudur. karma tablo.

Karma Çarpışmasıyla Nasıl Başa Çıkılır?

Karma çakışmasını önlemek için kullanabileceğiniz iki teknik vardır:

  1. Tekrar ele almak: Bu yöntem, boş bir kayıt yuvası bulunana kadar sürekli olarak uygulanan ikincil bir karma işlevini çağırır.
  2. Zincirleme: Zincirleme yöntemi, anahtarları aynı karma değere sahip öğelerden oluşan bağlantılı bir liste oluşturur. Bu yöntem, tablonun her konumunda fazladan bir bağlantı alanı gerektirir.

SSS

Statik karma algoritması sabit sayıda kova tutar, bu nedenle veri miktarı arttıkça taşma riski vardır. Dinamik karma algoritması ise isteğe bağlı olarak kova ekler ve kaldırır, bu nedenle tam bir yeniden yapılandırmaya gerek kalmadan değişen veri boyutuna uyum sağlar.

Aralık sorguları için. Karma algoritması anahtarları gruplara dağıtır, bu nedenle "arasında" veya "büyüktür" sorguları bunları sırayla gezemez. Sıralı indeks anahtarları sıralı tutar ve bu nedenle daha uygundur.

Bir kova, tutabileceğinden daha fazla kayıt karma işlemine tabi tutulduğunda taşar. Statik karma işleminde, veriler büyüdükçe bu durum sıkça yaşanır ve açık adresleme, zincirleme veya taşma kovaları ile ele alınır.

Yapay zekâ sistemleri, hızlı özellik araması ve yüksek kardinaliteli kategorileri sabit bir vektöre eşleyen karma algoritması (hashing trick) için karma algoritmasını kullanır. Benzerlik karma algoritması ayrıca birbirine çok benzeyen kayıtları verimli bir şekilde gruplandırır.

Yeniden karma işlemi, ikinci bir fonksiyon kullanarak aynı tabloda başka bir boş yer bulur. Zincirleme işlemi, çakışan kayıtları kovaya bağlı bağlantılı bir listede tutar, böylece tablo hiçbir zaman bir yeri iki kez doldurmaz.

Bu yazıyı şu şekilde özetleyin: