В 2021 году корпорация Alphabet Inc., владеющая поисковой системой Google, анонсировала новый open source язык программирования Logica, который предназначен для манипулирования данными и транслирующий программы в язык SQL (Structured Query Language — «Язык структурированных запросов»). Logica фактически является декларативным языком логического программирования.
Новый SQL-язык Logica предназначен тем программистам, кто планирует использовать синтаксис логического программирования при написании запросов к современным базам данных. SQL-запросы в языке Logica программируются в форме набора логических утверждений.
Уже сейчас результирующий SQL-код (создаваемый Logica) может быть исполнен в хранилищах Google BigQuery, а также в БД PostgreSQL и SQLite, хотя поддержка этих двух СУБД еще экспериментальная. Google в будущем планирует расширить число поддерживаемых «Логикой» SQL-диалектов для работы с самыми популярными базами данных.
Код нового open source проекта Logica написан на языке Python и опубликован под лицензией Apache 2.0. (в соответствии с которой производные продукты не обязаны использовать атрибуцию в своих рекламных материалах, необходимо лишь указывать лицензию Apache 2.0. в своей документации, при этом упрощена совместимость данной лицензии с GPL, то есть введена возможность использовать ссылку на описание самой лицензии вместо того, чтобы описывать её в каждом файле проекта).
Новый SQL-язык Logica является логическим продолжением языка обработки данных Yedalog, созданного ранее Гуглом, и представляет более высокий уровень абстракции, недоступный в штатном SQL. При этом новинка поддерживает модули, операции импорта и возможность использования Logica из интерактивной оболочки Jupyter Notebook (открытый исходный код, стандарты и сервисы для интерактивных вычислений на разных языках программирования).
Одним из примеров прикладной задачи, решенной с помощью нового языка Logica, можно назвать формирование сводки персон, наиболее часто упоминаемых в онлайн новостях за 2020 год, для чего достаточно следующего программного кода для обращения к БД 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 |
| boris johnson | 674786 |
| vladimir putin | 410587 |
| bernie sanders | 387383 |
| las vegas | 325487 |
+—————-+—————-+
Google Logica компенсирует написание сложных SQL-запросов к базам данных, приводящих к необходимости написания громоздких многострочных цепочек, которые чаще всего не очевидны для восприятия (даже автором кода, спустя время), соответственно мешающих повторному использованию частей SQL-запроса и затрудняющих сопровождение кода другими разработчиками.
Новый язык Logica позволяет разработчикам компоновать программы для работы с СУБД из коротких, простых и доступных для повторного использования логических блоков, которые могут быть использованы в составе других проектов обработки данных.
Если этот язык позволит желающим научиться работать с базами данных быстрее влиться в работу и начать получать хорошую зарплату — отлично! Сейчас вообще кадровый голод на хороших программистов, и не только в России, но и по миру тоже!!!
Уже от нескольких знакомых бухгалтеров и финансовых аналитиков / экономистов слышу, что они начинают изучать основы работы с языками взаимодействия с базами данных, учат, в том числе, и SQL!
Скоро знания языков работы с БД станет нормой в требованиях к вакансиям игроков, работающих с большими массивами данных