Перейти к основному содержимому

1.21. Языки запросов

Всем

Языки запросов

Отвлечёмся от поисковиков и акцентируем на запросах. В поиске выделяют термины запрос (способ выражения информационных потребностей) и объект запроса (сущность, хранимая в базе системы поиска).

Язык запросов – специфический язык, на котором выполняется запрос к базам данных (SQL) и информационно-поисковым системам (поисковикам).

Зачем нужен язык запросов? Вы можете, конечно, перебрать всю таблицу ручками и найти нужную позицию, допустим, запись в базе данных, даже если записей миллиарды. Но определённо – извлекать, изменять или анализировать данные без ручного перебора заметно быстрее.

Языки запросов бывают нескольких видов:

  • языки для реляционных БД (таблиц);
  • языки XML и JSON;
  • языки графовых БД;
  • языки для полнотекстового поиска.

SQL мы изучим отдельно, когда будем рассматривать базы данных, но этот язык (Structured Query Language) – стандарт для реляционных СУБД.

SQL-подобные языки отличаются некоторыми особенностиями:

Заголовок слеваЗаголовок по центру
SQL-подобный языкПрименение
MDXАнализ многомерных данных (OLAP)
CQLЗапросы к Cassandra (NoSQL)
N1QLJSON-документы в Couchbase
LINQЗапросы в .NET

Но на текущий момент углубляться нам в них не нужно.

Для поиска элементов в XML и JSON используют особые языки:

  • XPath – язык поиска элементов в XML-документе, который позволяет указать путь к элементу или атрибуту и получить значение;
  • XQuery – расширенный язык для работы с XML (аналог SQL для XML);
  • JSONPath – аналог XPath для JSON.

С этими языками можно столкнуться, когда речь идёт о работе с форматами обмена, когда требуется получать определённое значение, вычислять и выполнять маппинг данных.

Языки для графовых БД – SPARQL, Gremlin, Cypher применяются при работе с СУБД (к примеру Neo4j), и используются в качестве поиска элементов среди узлов и связей, к примеру, при работе с моделями социальных графов (социальных сетей), в биоинформатике или для семантической паутины. Это узкопрофильная часть.

Полнотекстовый поиск, к примеру, Elasticseartch и OpenSearch, Solr, использует Elasticsearch Query DSL и Lucene Syntax. Это свой язык для выполнения поиска.

Elasticsearch – написанная на Java поисковая система, использующая библиотеку Lucene, и позволяющая выполнять поиск на своих сервисах, к примеру, GitHub или Netflix. Это распределённая поисковая система, предназначенная для хранения, поиска и анализа больших объемов данных в реальном времени. Она поддерживает текстовый поиск, аналитические запросы и хранение структурированных данных.

Solr – другая поисковая платформа, которая тоже основана на Lucene, написана на Java и используется для поиска – к примеру. Разработчиком Solr, как и Lucene, является Apache Software Foundation.

Lucene – свободная библиотека для высокопроизводительного полнотекстового поиска, которая используется в разных языках:

Язык / фреймворкПорт Lucene
СиLucene4c
C++CLucene
C#Lucene.Net
Node.js, Go, DelphiMUTIS
RubyFerret, RubyLucene
PHPвстроен в Zend
PythonPyLucene

Язык запросов зависит от типа данных и системы, где они хранятся, SQL для реляционных, SQL-подобные для NoSQL, Xpath для XML, SPARQL для семантики, DSL для Elasticsearch. Но давайте остановим поток теории и вернёмся к оттачиванию навыков.