A Google bemutatta az új Logica deklaratív logikai programozási nyelvet, amely az adatok manipulálására szolgál, és a programokat SQL nyelvre fordítja. Az új nyelv azok számára készült, akik a logikai programozás szintaxisát szeretnék használni az adatbázis lekérdezések írásakor. Jelenleg az előállított SQL-kód a Google BigQuery tárolóban, valamint a PostgreSQL és SQLite adatbázis-kezelőkben futtatható, amelyek támogatása egyelőre kísérleti jellegű. A jövőben tervezzük a támogatott SQL-dialektusok számának bővítését. A projekt kódja Python nyelven íródott, és Apache 2.0 licenc alatt került közzétételre.
A Logica folytatja a Google által kifejlesztett Yedalog adatfeldolgozó nyelv fejlődését, és olyan absztrakciós szintet kínál, amely nem elérhető a hagyományos SQL-ben. A Logica lekérdezések logikai állítások halmazaként programozhatók. Támogatja a modulokat, az importálási műveleteket és a Logica interaktív Jupyter Notebook környezetből való használatát. Például, a 2020-ban a leggyakrabban említett személyek összefoglalásának létrehozásához a következő Logica nyelvű program használható a GDELT adatbázis lekérdezésére: @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 Mentions +—————-+—————-+ | person | 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 | +—————-+—————-+
Bonyolult SQL lekérdezések írása terjedelmes, sok sorból álló láncok megalkotását eredményezi, amelyek nem egyértelműek, megnehezítik az egyes részek újrahasználatát, és bonyolítják a karbantartást. Az SQL-ben gyakori számításokhoz nézetek és funkciók használhatók, de ezek nem támogatják az importálási műveleteket, és nem kínálnak olyan rugalmasságot, amely a magas szintű nyelvekre jellemző (például nem lehet egy funkciót funkcióba átadni). A Logica lehetővé teszi, hogy a programokat kis, érthető és újrahasználható logikai blokkokból állítsuk össze, amelyeket tesztelhetünk, meghatározott nevekkel láthatunk el, és csomagokba csoportosíthatunk, hogy más projektek keretein belül is használhatóak legyenek.
Forrás: opennet.ru
