Verimli sorgular için veritabanı sorgu dilleri


9

İlişkisel veritabanları için popüler sorgu dillerinde, yanıtlanması için çok fazla kaynak gerektirecek sorgular oluşturmak mümkündür. Uygulamada, veritabanı yöneticileri bunu sorgu başına bellek miktarını sınırlayarak ve veritabanında yavaşlama olup olmadığını uzun süredir çalıştıran sorguları kontrol ederek yönetir . Bu oldukça geçici görünüyor, bunun için bir TCS çözümü var mı?

Yalnızca verimli sorgular uygulayabilen sorgu dilleri var mı?

Böyle bir dil yoksa bunun teorik bir nedeni var mı?

Bu tür şeylerin var olmasını ya da en azından anlamlı olmasını beklememin bazı nedenleri:

  • yalnızca etkili hesaplamaları uygulamak için özel olarak tasarlanmış programlama dilleri var (genellikle kendi tip sistemlerinde bazı kısıtlayıcı mantık oluşturarak)
  • popüler sorgu dilleri (SQL gibi) zaten mantıktan esinlenilmiştir, bu nedenle veritabanı kullanıcılarının daha kısıtlayıcı mantıkları dikkate alması bir streç gibi görünmemektedir.
  • kötü amaçlı olmayan bir veritabanı kullanıcısı zaten hızlı bir şekilde yürütülen sorgular hazırlamaya çalışır, bu nedenle bu daha kısıtlayıcı sorgu dillerinin yalnızca kötü niyetli kullanıcıları engellemesini beklemeliyiz.

Bu sorudan önceki iki sorunun kesişmesinden ilham alınmıştır:

Etkili hesaplama için programlama dilleri

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?


1
Bu tam olarak Açıklayıcı Karmaşıklık konusu değil mi? çeşitli karmaşıklık sınıfları için sorguların dil özelliklerine sahiptirler.
Kaveh

Açıklayıcı karmaşıklık, etkili hesaplama için dilleri programlamada kesinlikle büyük bir parçadır ve kılavuzdur. Ancak "açıklayıcı karmaşıklık mantık kullanıyor" ve "veritabanlarına yönelik sorgular mantık kullanıyor" demek kadar basit olduğunu düşünmüyorum. Özellikle DC için sorgu boyutu sabittir ve 'n', sorguların kabul ettiği sonlu yapıların boyutlarından gelir. Veritabanlarında, gerçekten değişken olan sorgu boyutu ve veritabanı da değişken veya sabit bir parametredir.
Artem Kaznatcheev

3
değişken sorgular için de sonuçlar vardır, bunlar sadece model kontrolü ve iyi bilinen karmaşıklık sınıfları arasındaki maç kadar şaşırtıcı değildir. Ayrıca, tanımlayıcı karmaşıklığının bir parçası olan sonlu model teorisinin daha geniş alanı, doğrudan veritabanlarıyla ilgili bir takım ifade edilebilirlik sonuçlarına sahiptir. Veritabanları sonuçta neredeyse sonlu model teorik yapılardır.
Marc Hamann

1
Bu yazışmayı düşünmedim. Sonlu model teorisi etiketini ekledim. Siz veya @Kaveh yorumlarınızı ayrıntılı olarak açıklamak ve bu tür sorgu dillerini üretmek için genel olarak sonlu model teorisinin açıklayıcı karmaşıklığından belirli sonuçların nasıl benimseneceğini bilmek istiyorsanız, o zaman gerçekten bu cevabı görmek istiyorum!
Artem Kaznatcheev

Yanıtlar:


7

Veritabanı sorgu dillerine bakmanın bir yolu, sorguların mantık programları olarak gösterildiği tümdengelimli veritabanlarının merceğidir . Bu ayarda, sorunuzla ilgili en alakalı çalışma, McAllester'ın Statik analizlerin karmaşıklık analizi hakkındadır. Bu, bir sorgunun kurallarındaki "önek tetikleme" sayısını sorgulayarak bir sorgunun çalışma süresi hakkında neden olabileceğinizi gözlemledi programı. Ne "önek ateşleme" çok karmaşık değil, ama ben bunun için gazeteye sevk edeceğim.

İşlevsel programlama dünyasında, bu tür şeylere maliyet semantiği denir : bu sadece etkili sorguları (programları) uygulayabileceğiniz anlamına gelmez, ancak bildirim programınızın asimptotik karmaşıklığını makul bir şekilde aklınıza getirebileceğiniz anlamına gelir. .

McAllester'ın fikirlerinin uygulamaları üzerinde daha sonra yapılan çalışmalar arasında, veri günlüğü kurallarından zaman ve mekan garantili verimli programlara (Liu ve Stoller) ve Dedalus: Zaman ve Uzaydaki Veri Günlüğü (Alvaro, Marczak, Conway, Hellerstein, Maier ve Sears) yer alır. Ancak, bu iki makalenin ikincisini henüz okumadığımı itiraf ediyorum.

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.