Spoločnosť Google predstavila nový deklaratívny jazyk logického programovania Logica, určený na manipuláciu s dátami a prevádzajúci programy do jazyka SQL. Nový jazyk je zameraný na tých, ktorí chcú použiť syntax logického programovania pri písaní dopytov na DB. V súčasnosti môže výsledný SQL kód bežať v úložisku Google BigQuery alebo v SDB PostgreSQL a SQLite, ktorých podpora je zatiaľ experimentálna. V budúcnosti sa plánuje rozšíriť počet podporovaných SQL dialektov. Kód projektu je napísaný v jazyku Python a je zverejnený pod licenciou Apache 2.0.
Logica pokračuje vo vývoji ďalšieho jazyka spracovania dát vyvinutého v Google, Yedalog, a poskytuje úroveň abstrakcie, ktorá nie je dostupná v štandardnom SQL. Dopyty v Logica sú programované vo forme súboru logických tvrdení. Podporujú sa moduly, operácie importu a možnosť používať Logica z interaktívneho prostredia Jupyter Notebook. Napríklad na vytvorenie súhrnu osôb, ktoré boli najčastejšie spomínané v správach za rok 2020, možno použiť nasledujúci program v jazyku Logica na prístup k DB 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 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 | +—————-+—————-+
Písanie zložitých dotazov v SQL vedie k potrebe písania neprehľadných, mnohostranných reťazcov, ktoré sťažujú znovupoužiteľnosť častí dotazu a komplikujú údržbu. Na typické opakujúce sa výpočty v SQL je možné použiť pohľady a funkcie, no nepodporujú operácie importu a neposkytujú flexibilitu, akú majú vysokoúrovňové jazyky (napríklad nie je možné preniesť funkciu do funkcie). Logica umožňuje zostavovať programy z malých, zrozumiteľných a znovu použiteľných logických blokov, ktoré môžu byť testované, spojené s určitými názvami a zoskupené do balíkov, ktoré sú dostupné pre použitie v iných projektoch.
Zdroj: opennet.ru
