Compania Google a lansat un nou limbaj declarativ de programare logică, Logica, destinat manipulării datelor și care transpune programele în SQL. Noul limbaj este orientat spre cei care doresc să utilizeze sintaxa programării logice pentru a scrie interogări la baze de date. În prezent, codul SQL rezultat poate fi executat în stocarea Google BigQuery sau în SGBD-urile PostgreSQL și SQLite, a căror suport este deocamdată experimental. În viitor, se preconizează extinderea numărului de dialecte SQL suportate. Codul proiectului este scris în Python și publicat sub licența Apache 2.0.
Logica continuă dezvoltarea altui limbaj de procesare a datelor dezvoltat de Google, Yedalog, și oferă un nivel de abstractizare indisponibil în SQL-ul standard. Interogările în Logica sunt programate sub formă de seturi de afirmații logice. Se suportă module, operațiuni de import și posibilitatea de a folosi Logica din consola interactivă Jupyter Notebook. De exemplu, pentru a genera un rezumat al persoanelor cele mai frecvent menționate în știri în anul 2020, se poate utiliza următorul program în Logica pentru a interoga baza de date 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 | +—————-+—————-+
Scrierea de interogări complexe în SQL duce la necesitatea creării de lanțuri voluminoase, pe mai multe rânduri, care nu sunt evidente pentru percepție, împiedicând reutilizarea părților interogării și îngreunând întreținerea. Pentru calculele tipice repetitive în SQL, se pot utiliza vizualizări și funcții, dar acestea nu susțin operațiuni de import și nu oferă flexibilitatea caracteristică limbajelor de nivel înalt (de exemplu, nu este posibil să transmiți o funcție într-o altă funcție). Logica permite compunerea programelor din blocuri logice mici, clare și accesibile pentru reutilizare, care pot fi testate, asociate cu nume specifice și grupate în pachete disponibile pentru utilizarea în alte proiecte.
Sursa: opennet.ro
