Esiste una relazione tra algebra / calcolo relazionale e teoria delle categorie?


17

Sono a conoscenza di almeno due diversi approcci teorici per la comprensione dei database relazionali: l'algebra / calcolo relazionale di Codd e la teoria delle categorie.

C'è qualche relazione tra questi due approcci? Sono in qualche modo equivalenti? C'è qualche lavoro introduttivo che spiega come entrambi questi quadri spiegano i database relazionali?

Background: Qualche tempo fa ho letto la teoria delle categorie per scienziati di David Spivak, che ha trascorso parecchio tempo a discutere su come applicare la teoria delle categorie per comprendere la teoria dei database relazionali. Tuttavia, avendo poca esperienza personale su cosa siano i database relazionali o perché siano utili, al momento non apprezzavo appieno la profondità di intuizione trovata nel libro.

Tuttavia, recentemente ho imparato a conoscere le query SQL e due pacchetti R per la manipolazione dei dati: dplyr e data.table . Apparentemente SQL può esprimere molte delle idee dell'algebra / calcolo / modello relazionale di Codd, ma non tutte . Inoltre, l'autore di dplyr, Hadley Wickham, ha dichiarato esplicitamente che la sua filosofia alla base del pacchetto si basa sul lavoro di Codd sull'algebra relazionale e che i comandi di base di data.table mappano abbastanza bene i comandi in SQL e dplyr.

So anche che la teoria delle categorie influenza molti programmatori che usano linguaggi di programmazione funzionale come Haskell. Tuttavia, non sono a conoscenza del fatto che vi sia alcun uso della programmazione funzionale per la manipolazione o la scienza dei dati, oltre al pacchetto purrr di Hadley Wickham per R, il fatto che Apache Spark sia scritto in Scala e le tecnologie correlate a MapReduce .

Tutto questo mi suggerisce che dovrebbe esserci una sorta di relazione tra la teoria delle categorie e l'algebra / calcolo relazionale di Codd, ma non ho mai sentito parlare di qualcuno che espliciti tale connessione o spieghi come sia alla base delle decisioni di progettazione nella manipolazione popolare dei dati e tecnologie di database relazionali. Quindi sospetto anche che potrei sbagliarmi del tutto.

EDIT: Apparentemente David Spivak ha lavorato su un " linguaggio di query funzionale (FQL) ". Sembra che potrebbe essere un'applicazione di tale connessione teorica, a condizione che esista.

Nota: non sono sicuro che "strutture relazionali" sia il tag appropriato per la discussione di database relazionali o algebra / calcolo relazionale. Questo articolo di Wikipedia suggerisce che potrebbero essere collegati, ma alla fine non so cosa significhi la frase "struttura relazionale". Non esitate a ricodificare.


2
Hai visto lavori di Tannen e Buneman, ad esempio Un approccio strutturale al design del linguaggio delle query ?
reinierpost,

@reinierpost non l'ho fatto, ma lo guarderò.
Chill2Macht,

Risposte:


12

Gli approcci categorici per interrogare le lingue sono un po 'di interesse di nicchia, ma penso che sia una nicchia molto interessante!

Due delle figure chiave in quest'area sono Peter Buneman e Torsten Grust . Ovviamente, non hanno fatto tutto il lavoro, ma se inizi con i loro documenti e rintracci il grafico delle citazioni, otterrai una buona copertura dell'area.

L'osservazione centrale da cui lavorano è che, poiché una relazione può essere vista come un insieme di tuple, il funzione del powerset può essere interpretato nel prendere un tipo di tupla per il tipo di relazioni su quella tupla. Quindi, il fatto che il funzione del powerset formi una monade significa che puoi usare idee ispirate alla sintassi della comprensione della monade di Philip Wadler per dare un calcolo di ispirazione categorica per le query con una ricca teoria equazionale.

In effetti, il sistema di interrogazione di Buneman et al. Kleisli prende il nome dal fatto che le monadi sono talvolta chiamate "triple di Kleisli".

La tesi di dottorato di Grust, Comprehending Queries , elabora queste idee in dettaglio, incluso l'uso dei morfismi delle monadi per modellare gli operatori di aggregazione (come sume count). Grust e il suo gruppo hanno anche creato un sistema, Ferry , che ha studiato come integrare i database nei linguaggi di programmazione.

Uno dei problemi principali in questo lavoro (e anche in Kleisli, se la memoria serve), è che i linguaggi di query monadici tendono ad essere un po 'più espressivi dell'algebra relazionale: consentono alle query di gestire set di set. Compilare questo con SQL o l'algebra relazionale richiede un po 'di attenzione (ad esempio, vedi Una teoria pratica della query integrata nel linguaggio ) di Cheney et al. , Ma il problema di base ha una formulazione categorica molto bella. L'algebra relazionale utilizza solo la struttura monoidale del funzione powerset, ovvero l'esistenza di una trasformazione naturale del prodotto cartesiano():P(X)×P(Y)P(X×Y); e anche i linguaggi di query monadici richiedono l'unione,μ:P(P(X))P(X).

Questo è probabilmente il flusso principale di lavoro sugli approcci categorici per interrogare i linguaggi.

Una nuova idea (che sfortunatamente non ha ottenuto la stessa trazione che ritengo meriti) è il lavoro di David Spivak sull'utilizzo di set simpliciali per modellare database - vedi Database semplificati . L'innovazione centrale è che la struttura semplificata consente di modellare esplicitamente l'intero schema del database, comprese le relazioni tra le tabelle (ad esempio, il sistema di chiavi esterne), e ciò consente di fornire semantica alle operazioni di aggiornamento dello schema.

Un'altra deviazione dai linguaggi di query standard sono i linguaggi di programmazione a logica limitata come Datalog, che può essere inteso come algebra relazionale più un operatore a punto fisso. I punti fissi consentono di esprimere cose come le query di chiusura transitive, e quindi nuovi database come i linguaggi di query delle funzionalità Datomic basati su Datalog. Il mio dottorando, Michael Arntzenius , e io abbiamo studiato la semantica di Datalog, e abbiamo trovato un analogo funzionale che chiamiamo Datafun , che ha un'interpretazione piuttosto categorica in termini di categorie di poset e semilattici.

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.