Veri Jiangtang JOIN hızlı yabancı anahtar işaretçi türetme

Kaynak: Data Jiangtang

Yazar: Jiang steps Star

Bu makalenin uzunluğu 1320 kelime , Okumanız tavsiye edilir 3 dakika

Bu makale sizin için harici işaretçilerin türetilmesini açıklamaktadır.

Yabancı anahtar JOIN'i tartışmaya ve önceki örneği kullanmaya devam ediyoruz.

Veri miktarı belleğe sığmayacak kadar büyük olduğunda, yukarıda bahsedilen işaretçi yöntemi artık etkili değildir, çünkü önceden hesaplanan işaretçi harici bellekte saklanamaz.

Genel olarak konuşursak, yabancı anahtar tarafından işaret edilen boyut tablosunun kapasitesi daha küçükken, büyüyen olgu tablosu çok daha büyüktür. Bellek boyut tablosunu indirebilirse, yabancı anahtarlarla uğraşmak için geçici işaretleme yöntemini kullanabiliriz.

1. P = dosya ("products.txt"). İmport ()

Ürün bilgi sayfasını okuyun P

2. P.index (kimlik)

Aramayı kolaylaştırmak için P'nin birincil anahtar kimliği için bir dizin oluşturun

3. S = dosya ("sales.txt"). İmleç ()

Emtia satış kayıtları için imleci S oluşturun ve verileri kademeli olarak okuyun

4. S. anahtar (ürün kimliği, P: id)

Veri akışı yapıldığında, S'deki ürün kimliği alanı, P'nin birincil anahtarına göre P'nin kaydına dönüştürülür.

5. S.sum (miktar * ürün kimliği.price)

Satışları hesapla

İlk iki adım, dolu hafıza durumunda olduğu gibidir. 4. adımdaki işaretçi dönüşümü, okuma sırasında gerçekleştirilir ve dönüşüm sonucu saklanamaz ve tekrar kullanılamaz. HASH ve karşılaştırma, bir sonraki sefer ilişkilendirme yapıldığında hesaplanacaktır. Performans, tam hafızadan daha iyi Hafıza düzeni zayıf. Hesaplama miktarı açısından, boyut tablosunun HASH değeri hesaplaması, HASH bölümleme şemasından bir eksiktir.Bu boyut tablosu, sık sık yeniden kullanılırsa daha ucuz olacaktır, ancak boyut tablosu nispeten küçük olduğu için, genel avantaj büyük değildir. Bununla birlikte, bu algoritma aynı zamanda tüm yabancı anahtarları tek seferde ayrıştırabilen ve paralelleştirilmesi kolay bir tam bellek algoritmasının özelliklerine sahiptir.Gerçek senaryolarda, HASH segmentasyon algoritmasından daha büyük bir performans avantajına sahiptir.

Bu algoritmaya dayanarak bir varyant da yapabiliriz: Yabancı anahtar serileştirme .

Boyut tablosunun birincil anahtarını 1'den başlayarak doğal bir sayıya dönüştürebilirsek, tam belleğe benzer bir işaretçi elde edebilmemiz için HASH değerini hesaplamadan ve karşılaştırmadan, boyut tablosu kaydını seri numarasıyla doğrudan bulabiliriz. Verim.

1. P = dosya ("products.txt"). İmport ()

P ürün bilgi tablosunu okuyun, birincil anahtar kimliği seri numarasıdır

2. S = dosya ("sales.txt"). İmleç ()

Emtia satış kayıtları için imleci S oluşturun ve verileri kademeli olarak okuyun

3. S. anahtarı (ürün kimliği, P: #)

Veri akışı sırasında S'deki ürün kimliği alanını P'deki karşılık gelen seri numarasının kaydına dönüştürün

4. S.sum (miktar * ürün kimliği.price)

Satışları hesapla

Seri numarası birincil anahtarının boyut tablosunun artık HASH dizini oluşturmanın ikinci adımına ihtiyacı yoktur.

Yabancı anahtarların serileştirilmesi esasen harici bellekteki işaretçilerin gerçekleştirilmesine eşdeğerdir. Bu çözüm, olgu tablosundaki yabancı anahtar alanını, tam bellek işleminde bir işaretçi oluşturma işlemine benzer bir sıra numarasına dönüştürmelidir ve bu ön hesaplama da yeniden kullanılabilir. Boyut tablosu büyük değişikliklere uğradığında, olgu tablosunun yabancı anahtar alanlarının senkronize edilmesi gerektiğine dikkat edilmelidir, aksi takdirde yazışmalar yanlış hizalanabilir. Bununla birlikte, genel boyut tablosundaki değişikliklerin sıklığı düşüktür ve eylemlerin çoğu, silinmelerden ziyade eklemeler ve düzenlemelerdir. Olgu tablosunun yeniden düzenlenmesi gereken pek çok durum yoktur.

SQL, sırasız koleksiyon kavramını kullanır.Yabancı anahtarı önceden serileştirsek bile, veritabanı bu özellikten yararlanamaz.Sırasız koleksiyon üzerinde sıra numaraları ile hızlı konumlandırma için bir mekanizma sağlayamaz.Sadece indeks aramasını kullanabilir, veritabanı bunu yapmaz. Yabancı anahtarın serileştirildiğini bilerek, HASH değeri ve karşılaştırması yine de hesaplanacaktır.

Ya boyut tablosu belleğe sığmayacak kadar büyükse?

Yukarıdaki algoritmayı dikkatlice analiz ettiğimizde, süreçte olgu tablosuna erişimin sürekli olduğunu ancak boyut tablosuna erişimin rastgele olduğunu görürüz. Daha önce sabit disklerin performans özelliklerini tartışırken bahsettiğimiz gibi, harici depolama rastgele erişim için uygun değildir. Boyut tablosunu harici belleğe koyarsanız ve ardından yukarıdaki algoritmayı çalıştırırsanız, performans HASH segmentasyon algoritmasından çok daha kötü olacaktır ve birleştirmeden önce iki tabloyu sıralama performansına yetişemeyecektir.

Şu anda kümenin gücünden yararlanmak zorundayız.

Bir makinenin belleği sığamaz, onu kurmak için birkaç makine daha inşa edebilir, bir küme boyut tablosu oluşturmak için boyut tablosu bölümlemesini birden çok makineye yerleştirebilir ve ardından yukarıdaki algoritmayı kullanmaya devam edebilir ve bir seferde birden çok yabancı anahtar elde edebilirsiniz. Ve kolay paralelliğin faydaları. Benzer şekilde, küme boyut tablosu da serileştirme teknolojisini kullanabilir.

Belleğin sadece rastgele erişim için değil, aynı zamanda küçük sık erişimler için de uygun olduğu unutulmamalıdır. Küme boyut tablosu bellekte saklansa da, ortada daha fazla ağ iletimi vardır ve ağ küçük ve sık erişime uygun değildir. Şu anda, olgu tablosunu dolaşırken, bağımsız modda olduğu gibi bir seferde yalnızca bir kaydı işleyemezsiniz.Bunun yerine, bir grup kaydı toplu halde okumanız, bunları toplamanız ve boyut tablosunu elde etmek için hedef küme düğümüne göndermeniz gerekir. İlgili alanlar.

Boyut tablolarının hafızasını sağlamak, performansı artırmak için kilit bir faktördür. Modern bilgisayarların bellek kapasitesi için, çoğu boyut tablosu tek bir makinenin belleğine yerleştirilebilir ve az sayıda büyük boyut tablosu, boyut tablolarına yüksek performanslı rastgele erişim sağlayabilen küme boyut tabloları tarafından işlenir. Kümeye bile sığmayan bir boyut tablosu varsa, yine de verimsiz HASH segmentasyon algoritmasına geri dönmesi gerekebilir.

Köşe yazarı hakkında

Runqian Yazılımının Kurucusu ve Baş Bilimcisi

Tsinghua Üniversitesi'nden Bilgisayar Bilimleri Yüksek Lisansı, "Doğrusal Olmayan Raporlama Modellerinin İlkeleri", vb. Kitabının yazarı, 1989'da, Çin'in ilk uluslararası Olimpiyat matematik takımı şampiyonu üyesi, bireysel altın madalya; 2000, Runqian Company'yi kurdu; 2004, Runqian raporunda ilk Çin tarzı karmaşık rapor tabloları problemini mükemmel bir şekilde çözen doğrusal olmayan bir rapor modeli önerdi.Şu anda bu model raporlama endüstrisinde bir standart haline geldi; 2014 yılında 7 yıllık geliştirmenin ardından, Runqian Software ilişkisel cebir modellerine dayanmayan bir hesaplama motoru çıkardı. Hesap makinesi, karmaşık yapılandırılmış büyük veri hesaplamalarının geliştirme ve hesaplama verimliliğini etkili bir şekilde iyileştirir; Runqian Software, 2015 yılında Forbes Çin web sitesi tarafından "2015 Forbes China Top 100 Potansiyel Listelenmemiş Şirket" olarak adlandırıldı; 2016 yılında Çin Elektronik Bilgileri ödülünü aldı Endüstriyel Geliştirme Araştırma Enstitüsü tarafından seçilen "Çin Yazılım ve Bilgi Hizmetleri Sektöründe 2016 İlk On Önde Gelen Figür"; 2017'de yeni nesil veri ambarı, bulut veritabanı ve bağımsız inovasyon ve araştırmaya sahip diğer ürünler yakında piyasaya sürülecek.

Yumuşak ayak yengeci mi? Bayern forvet oyuncusu, Şampiyonlar Ligi nakavt maçında 7 ardışık maçta 0 gol attı ve Dünya Kupası da bir felaket
önceki
2 süperstar Real Madrid bırakmamalı, Ronaldo'nun yanı sıra o da var!
Sonraki
Dazhou Şehri, Dazhu İlçesi, sadece sakinlerin "iyi su" içmesi için su arıtmaya 1 milyar yuan'den fazla yatırım yaptı
İkiz yıldızlar parlıyor! Cristiano Ronaldo ve Messi Şampiyonlar Ligi'nde tam not aldılar, rakipsiz çifte gururun öldüğünü kim söyledi?
Özel Veri Analizi Aikeco - Hayatı Seviyor, Weibo'yu Çalıştırmak için Makine Öğrenimi Algoritmalarını Kullanıyor
"Yantai Yuedong Liman Şehrini Aydınlat" ışık gösterisi açıldı, Yantai halkı aydınlandı
Özel Sinir ağını oyun oynamak için eğitmek için Q öğrenme algoritmasını kullanmayı öğretin (kaynak kodu ile)
Sevimli evcil hayvanlar geliyor, Linyi Sevimli Hayvan Ebeveyn-Çocuk Cenneti'nin büyük bir deneme operasyonu var!
Özel Bayes sınıflandırma algoritmasını anlamak için bir makale (öğrenme kaynakları ile)
Alisson suskun kaldı! Liverpool Iron Guard, Şampiyonlar Ligi'nin ilk turunda kendi golünü atamadı, ancak ikinci turda barıştı!
Jin Yong'un cenazesi düzenlendi, Andy Lau, Ma Yun vb. Çelenkler gönderdi, Ni Kuang, Cai Lan, Zhang Jizhong, Huang Xiaoming vb. Gönderildi.
Huawei IoT stratejisini resmen duyurdu ve dünyanın en büyük IoT laboratuvarını açıkladı; Alipayin en son yüz yıkama ürünü "Dragonfly" ticari kullanım için piyasaya sürüldü Weekly Consumer News Vol
Taian Probu Su sayacını kaplayan çamur endişe vericidir. Su şirketi: tespit edilebilir
Süper tamamlandı! Java tabanlı makine öğrenimi projeleri, ortamları, kitaplıkları ...
To Top