Google ha introdotto Logica, un nuovo linguaggio di programmazione logica dichiarativa progettato per la manipolazione dei dati che traduce i programmi in SQL. Il nuovo linguaggio è rivolto a coloro che desiderano utilizzare la sintassi di programmazione logica nella scrittura di query di database. Attualmente, il codice SQL risultante può essere eseguito in Google BigQuery o nei database PostgreSQL e SQLite, sebbene il supporto per questi ultimi sia attualmente sperimentale. Sono previsti altri dialetti SQL in futuro. Il codice del progetto è scritto in Python e pubblicato con licenza Apache 2.0.
Logica si basa su Yedalog, un altro linguaggio di elaborazione dati sviluppato da Google, e offre un livello di astrazione non disponibile in SQL nativo. Le query in Logica sono programmate come un insieme di istruzioni logiche. Sono supportati moduli, operazioni di importazione e la possibilità di utilizzare Logica dall'interno della shell interattiva di Jupyter Notebook. Ad esempio, per generare un riepilogo delle persone menzionate più frequentemente nelle notizie del 2020, è possibile utilizzare il seguente programma Logica per accedere al database GDELT: @OrderBy(Mentions, "mentions desc"); @Limit(Mentions, 10); Mentions(person:, mentions? += 1) distinct :- gdelt-bq.gdeltv2.gkg(persons:, date:), Substr(ToString(date), 0, 4) == "2020", the_persons == Split(persons, ";"), person in the_persons; $ logica mentions.l run Menzioni +—————-+—————-+ | persona | mentions_count | +—————-+—————-+ | donald trump | 3077130 | | los angeles | 1078412 | | joe biden | 1054827 | | george floyd | 872919 | | boris johnson | 674786 | | Barack Obama | 438181 | | vladimir putin | 410587 | | bernie sanders | 387383 | | andrew cuomo | 345462 | | las vegas | 325487 | +—————-+—————-+
La scrittura di query SQL complesse richiede la scrittura di complesse catene multi-riga, difficili da comprendere, che ostacolano il riutilizzo di parti della query e ne complicano la manutenzione. Viste e funzioni possono essere utilizzate per calcoli tipici e ripetitivi in SQL, ma non supportano le operazioni di importazione e non hanno la flessibilità dei linguaggi di alto livello (ad esempio, non è possibile passare una funzione all'interno di un'altra funzione). Logica consente di comporre programmi a partire da blocchi logici piccoli, comprensibili e riutilizzabili, che possono essere testati, associati a nomi specifici e raggruppati in pacchetti disponibili per l'utilizzo in altri progetti.
Fonte: opennet.ru
