Проект PythonQL: встраивание языка запросов в язык программирования
Опыт разработки таких языков запросов, как XQuery [3] и JSONiq [4] показал, что при создании действительно удобного языка запросов для разнородных данных приходится сооружать и большую экосистему библиотек вокруг такого языка, а также расширять язык различными удобными для разработчиков конструкциями. А это, в свою очередь, ведет к серьезному барьеру входа для пользователей: помимо небольшого языка запросов, необходимо также держать в уме новый язык программирования и всевозможные функции и фреймворки.
Именно из-за этого авторы доклада считают развитие систем поддержки подобных языков запросов не очень перспективным, и предлагают другой подход - привнести все ключевые свойства языков запросов в основной язык программирования пользователя. Это минимизирует затраты времени на обучение, дает возможность сразу работать не только с базами данных, но и с собственными структурами в памяти. При этом сами базы данных рассматриваются просто как хранилище данных для прозрачного доступа из языка программирования, которое реализует эффективное выполнение некоторого подмножества языка. Но при этом считается, что базы данных не должны создавать какого-то уникального функционала, который не является реализацией существующей библиотеки основного языка. В мире известны подобные проекты (самый известный – LINQ [2]), которые по каким-то причинам не получили большого развития.
В качестве основного языка программирования авторы рассматривают Python, так как он очень популярен в сообществе data scientists, которые очень много работают с данными. В настоящее время проект находится в демо-стадии: авторы добавили минимальный синтаксис в Python и реализовали простой процессор запросов. На семинаре авторы приведут ряд примеров, когда PythonQL [1] намного удобнее, чем другие инструменты работы с данными и стратегию развития проекта, включая создание распределенного процессора запросов.
Слайды доклада.
Литература:
-
PythonQL Web Demo.
-
Проект LINQ.
-
W3C XML Query (XQuery).
-
The JSON Query Language.
|