Язык структурированных запросов гипертекста (HTSQL) — это язык запросов URI-to-SQL на основе схемы, который принимает запрос по HTTP , преобразует его в запрос SQL , выполняет запрос к базе данных и возвращает результаты в формате, наиболее подходящем для пользовательского агента (CSV, HTML и т. д.) [1] Язык HTSQL реализован на «серверах HTSQL», которые используют HTSQL для преобразования веб-запросов в эквивалентный SQL, выполняют запросы в базе данных на стороне сервера и возвращают результаты в форматах XML , HTML , CSV , JSON или YAML . Текущая реализация по состоянию на апрель 2010 года использует Python и работает с базами данных PostgreSQL , MySQL , SQLite , Oracle и Microsoft SQL Server .
Прототип HTSQL был создан и разработан Кларком Эвансом (который предложил YAML в 2001 году [2] ), а реализован Кириллом Симоновым [3] , оба из Prometheus Research.
Целевая аудитория HTSQL — это бизнес-пользователи, которые не являются программистами SQL. Он стремится упростить неинтуитивные реляционные запросы, такие как агрегаты и проекции. Целью является не полнота в репликации SQL, а простота и интуитивность. HTSQL позволяет пользователям, которые знакомы с данными, но не с синтаксисом SQL, напрямую обращаться к базе данных, не проходя через приложение. [4]
HTSQL использует синтаксис запросов на основе URI. Запросы обычно начинаются с одной таблицы, опционально с префиксом схемы и последующим выражением фильтра для ограничения количества возвращаемых строк. [5]
Объединения могут быть сделаны между таблицами путем ссылки на имя столбца, которому предшествует имя таблицы. В этом примере запрашивается название программы обучения из таблицы программ и название школы из таблицы школ:
/program{название.школы, название}
Результат этого запроса из системы командной строки HTSQL:
программа ~ ...название.школы | название--------------------------+----------------------- ------------Школа искусств и дизайна | Постбакалавриат по истории искусствШкола искусств и дизайна | Бакалавр искусств по истории искусствШкола искусств и дизайна | Бакалавр искусств в области студийного искусстваШкола бизнеса | Сертификат об окончании курса по бухгалтерскому учету...
Агрегатные выражения можно использовать, когда в базе данных имеются отношения «многие к одному».
/school{имя, количество(программа), количество(отдел)}
Результат показывает количество программ и отделений в каждой школе:
школа ~ ...имя | количество(программа) | количество(отдел)-------------------------+----------------+------- -----------Школа искусств и дизайна | 3 | 2Школа бизнеса | 5 | 3Педагогический колледж | 7 | 2Инженерная школа | 8 | 4
HTSQL может использоваться для специальных запросов к базе данных. Его разработчики считают его более кратким и интуитивно понятным, а потому менее подверженным ошибкам, чем SQL для нетехнических пользователей. [5]
HTSQL также может использоваться «случайными программистами», такими как аналитики данных и разработчики пользовательского интерфейса. Помимо более читаемых HTTP-запросов, разработчики HTSQL утверждают, что он помогает избегать распространенных ошибок SQL, таких как случайные объединения. [6]
HTSQL следует модели двойной лицензии. Программное обеспечение может использоваться бесплатно с реляционными базами данных с открытым исходным кодом, включая MySQL и PostgreSQL . [7] Исходный код доступен на сайте bitbucket . [8]
Также доступна коммерческая версия HTSQL, совместимая с коммерческими базами данных, такими как Oracle и Microsoft SQL Server . [1]