Yanıt bulmanın (sorgu boyutunda) teorik üstel karmaşıklığı göz önüne alındığında, ilişkisel veritabanları neden işe yarıyor?


19

İlişkisel bir veritabanı üzerinden sorgusuna bir cevap bulmak için kişinin zamana olduğu ve bir.D | D | | S | | S |SD|D||S||S|

As çok büyük olabilir veritabanları pratikte hiç çalışmıyor neden merak ettik.D

Bu sadece gerçek sorgular gerçek dünya uygulamalarında hiç büyük değil midir? (Daha sonra ilişkisel veritabanı sistemlerine gönderilen sorguların normal boyutunun ne olduğunu ve pratikte bir DB sistemi tarafından etkin bir şekilde yanıtlanması beklenen sorguların "maksimum" boyutunun ne olduğunu bilmek ilginçtir .)

Üs ile ilgili notlarçıkarılabilir değil|S|

üssünün çıkarılabilir değilse , veritabanı tarafından verilen grafikte boyutunda bir klik olup olmadığını soran bir sorgu kullanılabilir . Bir grafiğin klikine sahip olup olmadığını kontrol etmek NP-tam bir sorundur. Ayrıca, parametresi ile sabit parametreli izlenebilir değildir . Ayrıntılar, örneğin, Libkin, L .: Sonlu Model Teorisinin Öğeleri'nde bulunabilir. Springer (2004) veya Papadimitriou, CH, Yannakakis, M .: Veritabanı sorgularının karmaşıklığı hakkında. J. Comput. Sist. Sci. 58 (3), 407–427 (1999)n n n|S|nnn



7
Sıradan sorgular (gibi SELECT * FROM users WHERE username="abc" AND passwrod="xyz"), O (| D |) 'nin çalıştırılmasını gerektiren basit aramalardır. İlgili veritabanı alanlarında bir dizin varsa O (log | D |) alacaktır. Veritabanlarına girmiyorum, ancak daha karmaşık sorguların üstel zaman alacağını düşünmüyorum.
MS Dousti

7
@imz: Örneğin, karmaşıklık hala polinom olan . Sorguda k birleşimleri varsa, karmaşıklık O ( | D | k + 1 ) gibi görünüyor . Bu sabit k için bir polinom, ama bence büyük k için, sorguyu çalıştırmak pratikte çok yavaş olacaktır. Bu yüzden her ne pahasına olursa olsun çok fazla birleşmeden kaçınmalıdır. Ö(|D|2)Ö(|D|k+1)
MS Dousti

7
Zaman karmaşıklığı en kötü durumda bir sorgunun uzunluğunda üsteldir . Bu, bazı uzun sorguların hızlı olduğu ile çelişmez. Veritabanı uygulayıcıları, tipik veritabanı motorlarında hangi sorguların hızlı çalıştığını bilirler ve yine de sorgunun uzunluğu açısından en kötü duruma güvenmezler.
Tsuyoshi Ito

2
@Kaveh: "Immerman'ın Betimsel Karmaşıklık kitabının son bölümde küçük bir tartışması vardı": Çok iyi bir öneri. Nitpicking: Sondan bir önceki bölümde tartışılmaktadır. @imz: SQL'in Etkileyici Gücü kağıdını da yararlı bulabilirsiniz .
MS Dousti

5
@imz: "Bu grafikte n-clique var mı?" pratikte yaygın bir sorgu değildir. Çoğu sorgu @Sadeq'in önerdiklerine benzer ve güçlü bir ağaç yapısına sahiptir. Dahası, gerçekten büyük veritabanları için tamamen doğrusal bir sorgu bile çok pahalıdır ve bir veritabanı taslağı ile çalışmak zorundadır.
András Salamon

Yanıtlar:


16

En kötü durumda bile "kolay" olan büyük sorgu sınıfları vardır. Özellikle, sorgu sınıfı yalnızca bağlayıcı sorgular içeriyorsa ve her bir sorgu sınırlı genişliğe sahipse (örneğin, treewidth, insidans grafiğinin treewthth'i, fraksiyonel hipertree genişliği veya submodular genişliği), sorgu birleştirme ağacı gibi bir şey kullanılarak yanıtlanabilir , sorgunun ağaçtan sapan yerel kısımları için kaba kuvvet sayımı ile birlikte. Bu, polinom derecesi ile width parametresi tarafından belirlenen polinom zamanı gerektirir.

Uygulamada karşılaşılan birçok sorgunun hem konjonktif hem de küçük genişliği olduğu görülmektedir. Bu nedenle polinom çalışma zamanı bu durumda düşük dereceye sahiptir.

Dániel Marx, kısa bir süre önce STOC 2010'da submodüler genişlik üzerine bir makale sundu, tam sürümü çeşitli genişlik kavramlarının güzel bir özetini ve CSP formülasyonunun veritabanı biçimciliği ile nasıl bir ilişkisini içerdiğini (konferans sürümü bundan yoksundur).

  • Dániel Marx, Kısıt memnuniyeti ve konjonktif sorgular için izlenebilir hipergraf özellikleri , 2010. arxiv: 0911.0801

Bu tam bir yanıt değildir, çünkü veritabanı sorgularının "tipik" karmaşıklığıyla ilgilenmez, ancak en kötü durum analizinde bile kolay sorgular vardır.


6

Veritabanı olarak gösterilen bir grafiğin n öğeli bir kırpma içerip içermediğini kontrol etmek için Q_n sorguları kullanılabilir. Bir grafiğin klik olup olmadığını kontrol etmek NP-tam bir sorundur. Ayrıca, n parametresi ile sabit parametre izlenebilir değildir (D ^ n anlamına gelir).


Lütfen sorunun arka planıyla ilgili ek açıklamaları "yorum" ("yanıt" değil) - sorunun altındaki "Yorum Ekle" düğmesi ile veya düzenleme önerisi olarak - aşağıdaki "düzenle" bağlantısıyla gönderin soru. "Yanıtlar", soruya yapılacak tartışmalar ve eklemeler için değildir. (Anonim olmayan bir kullanıcı olarak kaydolursanız buraya katılmak daha uygun olmalıdır; o zaman tartışmalarda kimin söylediğini izlemek daha kolaydır.)
imz - Ivan Zakharyaschev

@imz: Bir cevap olarak koydu çünkü yorum yapma ayrıcalığı yok. En az 50 temsilci olması gerekiyor. her yere yorum yapabilmek.
Tomek Tarczynski

@Tomek, @imz, evet, cevapları kullanarak yorum yapmaya izin verip vermememiz şu anda meta üzerinde tartışılıyor .
Kaveh

5

Bu soruya cevap vermenin başka bir yolu da, "yapmıyorlar!"

Tipik bir DBMS uygulamasına çok sayıda birleşim içeren bir sorgu verirseniz, sorgu döngüsel olmasa veya başka bir şekilde çok basit bir yapıya sahip olsa bile, bunu planlama / optimizasyon aşamasından (değerlendirme değil) geçemez. András yukarıdakileri ima eder.

Ancak, "tipik" DBMS iş yükleri için bu tür sorgular ortaya çıkmış gibi görünmemektedir.


1
Karmaşık sorgular için optimizasyon aşamasının sonucu rastgele seçilen plantır. Bu göründüğü kadar kötü değil, çünkü yürütme yolu hala "yeterince iyi" olabilir ve optimizasyonun birleştirme sayısının birleştiricilerinin ötesinde zor olmasının daha birçok nedeni vardır.
Tegiri Nenashi

4

İşte tigreen'in cevabının (ilişkisel) veritabanlarını gerçekten yoğun kullanan bir kişi açısından daha gerçeklikle ilgili bir versiyonu: Uygulamalarının bütün amacı ve karmaşıklığı, bunları az miktarda ihtiyaç duyacakları şekilde yapılandırmaktır. her ihtiyaç duyulan her sorgu için mümkün olduğunca bir araya gelir ve bu yüzden aslında İş Yaparlar . Başka bir deyişle, veritabanlarının sizin için karmaşık sorunları kendi başlarına çözmesini beklemeyin - yapmazlar, ancak akıllıca kullanılırlarsa gerçekten kullanışlı ve uygulanabilir bir araçtır.


0

Birleşimler yalnızca çoktan çoğa ilişkilerde ikinci derecedir. Bunlar nispeten nadirdir: pratikte, çoğu ilişki ve birleşim 1'den çoğa kadardır, bu nedenle dizinler / anahtarlar tanımlanırsa doğrusal zaman alır. Birçok çoğa katılır birkaç sahip sorgular olan ciddi bir sorun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.