Společnost Google představila nový deklarativní jazyk logického programování Logica, určený pro manipulaci s daty a převádějící programy do jazyka SQL. Nový jazyk je zaměřen na ty, kteří chtějí používat syntaxi logického programování při psaní dotazů na databáze. V současnosti může být výsledný SQL kód vykonáván ve skladu Google BigQuery nebo v databázových systémech PostgreSQL a SQLite, jejichž podpora je zatím experimentální. V budoucnu se plánuje rozšíření počtu podporovaných SQL dialektů. Kód projektu je napsán v Pythonu a publikován pod licencí Apache 2.0.
Logica pokračuje ve vývoji jiného jazyka zpracování dat Yedalog, vyvinutého ve společnosti Google, a poskytuje úroveň abstrakce, která není dostupná v běžném SQL. Dotazy v Logica jsou programovány ve formě souboru logických tvrzení. Podporují se moduly, operace importu a možnost použití Logica z interaktivního prostředí Jupyter Notebook. Například pro vytvoření shrnutí osob, které byly nejčastěji zmiňovány v novinkách za rok 2020, lze použít následující program v Logica pro přístup k databázi 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 | +—————-+—————-+
Psání složitých dotazů v SQL vede k potřebě psát objemné vícetransové řetězce, které nejsou zřejmě čitelné, brání opětovnému použití částí dotazu a ztěžují údržbu. Pro typické opakující se výpočty v SQL lze použít pohledy a funkce, ale ty nepodporují importní operace a neposkytují flexibilitu vlastní vysokohladinovým jazykům (například není možné předat funkci do funkce). Logica umožňuje skládat programy z malých, srozumitelných a pro opětovné použití dostupných logických bloků, které mohou být testovány, spojeny s určitými názvy a seskupeny do balíčků, které jsou dostupné pro použití v rámci jiných projektů.
Zdroj: opennet.ru
