Linguaggi di query del database per query efficienti


9

Sembra che nei linguaggi di query popolari per i database relazionali sia possibile creare query che richiederanno molte risorse per rispondere. In pratica, gli amministratori del database gestiscono ciò limitando la quantità di memoria per query e verificando eventuali query di lunga durata in caso di rallentamento del database. Sembra piuttosto ad-hoc, esiste una soluzione TCS a questo?

Esistono linguaggi di query che possono implementare solo query efficienti?

Se non ci sono tali lingue, c'è una ragione teorica per questo?

Alcuni motivi per cui potrei aspettarmi che esistano cose del genere o almeno hanno senso:

  • abbiamo linguaggi di programmazione appositamente progettati per implementare solo calcoli efficienti (di solito con una logica restrittiva nel loro sistema di tipi)
  • i linguaggi di query popolari (come SQL) sono già ispirati dalla logica, quindi non sembra un tratto per gli utenti di database considerare logiche più restrittive.
  • un utente di database non dannoso tenta già di preparare query che vengono eseguite rapidamente, quindi dovremmo aspettarci che questi linguaggi di query più restrittivi ostacolino solo gli utenti malintenzionati.

Questa domanda si ispira all'intersezione di due domande precedenti:

Linguaggi di programmazione per un calcolo efficiente

Perché i database relazionali funzionano affatto, data la complessità esponenziale teorica della ricerca di risposte (nella dimensione della query)?


1
Non è esattamente questo l'argomento della complessità descrittiva? hanno caratterizzazioni linguistiche di query per varie classi di complessità.
Kaveh,

La complessità descrittiva è sicuramente una parte enorme e guida per i linguaggi di programmazione per un calcolo efficiente. Ma non credo sia semplice come dire "la complessità descrittiva usa la logica" e "le query ai database usano la logica". In particolare, per DC sembra che la dimensione della query sia fissa e che la 'n' provenga dalle dimensioni delle strutture finite accettate da quelle query. Nei database, è davvero la dimensione della query che è variabile e anche il database è variabile o forse un parametro fisso.
Artem Kaznatcheev

3
ci sono anche risultati per le query variabili, che non sono così sorprendenti come la corrispondenza tra il controllo del modello e le classi di complessità ben note. Anche il più ampio campo della teoria dei modelli finiti, di cui fa parte la complessità descrittiva, ha una serie di risultati di espressibilità direttamente correlati ai database. Dopo tutto, i database sono strutture teoriche modello quasi esattamente finite.
Marc Hamann,

1
Non ho pensato a questa corrispondenza. Ho aggiunto il tag della teoria dei modelli finita. Se tu o @Kaveh volete approfondire i vostri commenti e sapere come adottare risultati specifici dalla complessità descrittiva della teoria dei modelli finiti in generale per produrre tali linguaggi di query, mi piacerebbe davvero vedere quella risposta!
Artem Kaznatcheev

Risposte:


7

Un modo di esaminare i linguaggi di query del database è attraverso l'obiettivo di database deduttivi , in cui le query sono rappresentate come programmi logici. In questa impostazione, il lavoro più rilevante relativo alla tua domanda è l'analisi di complessità di Analisi statiche di McAllester , che ha osservato che puoi ragionare sul tempo di esecuzione di una query ragionando sul numero di "attivazioni prefisso" nelle regole del tuo programma. Che cosa sia un "fuoco prefisso" non è terribilmente complicato, ma ti riferirò al documento per quello.

Nel mondo della programmazione funzionale, questo genere di cose è chiamato semantica dei costi : non significa che puoi implementare solo query (programmi) efficienti, ma significa che puoi ragionare sulla complessità asintotica del tuo programma dichiarativo in modo ragionevole .

Alcuni lavori successivi sulle implementazioni delle idee di McAllester includono Da regole di registrazione dei dati a programmi efficienti con garanzie di tempo e spazio (Liu e Stoller) e Dedalus: Registrazione di dati nel tempo e nello spazio (Alvaro, Marczak, Conway, Hellerstein, Maier e Sears). Ammetto di non aver ancora letto l'ultimo di quei due articoli, comunque.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.