Можно ли использовать Когнитивный поиск Azure в качестве основной базы данных для некоторых данных?

Microsoft продвигает поиск Azure как облачный поиск, но не обязательно говорит, что это база данных или хранилище данных. Он не говорит, что это большие данные.

Можно ли использовать поиск Azure в качестве основной базы данных для некоторых данных? Или всегда должно быть какое-то основное хранилище данных, которое дублируется в Поиске Azure для целей поиска?

Если да, то при каких обстоятельствах / в каких сценариях имеет смысл использовать поиск Azure в качестве первичной базы данных?


person richard    schedule 18.10.2016    source источник


Ответы (1)


Хотя мы обычно не рекомендуем это делать, вы можете рассмотреть возможность использования Поиска Azure в качестве основного хранилища, если:

  1. Your app can tolerate some data inconsistency. Azure Search is eventually consistent.
    • When you index data, it is not available for querying immediately.
    • В настоящее время нет механизма для управления одновременным обновлением одного и того же документа в индексе.
    • При чтении данных с помощью поисковых запросов разбиение на страницы не основывается на каких-либо снимках, поэтому вы можете получить отсутствующие или дублированные документы.
  2. Вам не нужно зачитывать все содержание вашего указателя. Пейджинг в Поиске Azure основан на параметре $skip, который в настоящее время ограничен максимумом 100000. Для индексов, превышающих 100000 документов, может быть очень сложно прочитать все ваши данные. Вам нужно будет выбрать какое-то поле для разделения, и ваши чтения не имеют гарантий согласованности.
  3. В случае случайного удаления вы можете потерять свои данные. Поиск Azure не поддерживает резервное копирование / восстановление на момент написания этой статьи. Если вы случайно удалите свои данные, вам нужно будет повторно проиндексировать их из исходного источника.
  4. Вам не нужно сильно менять определение индекса. Для изменения или удаления полей из индекса в настоящее время требуется повторная индексация всех ваших данных (вы можете добавлять новые поля без повторной индексации). Если поиск Azure является вашим основным хранилищем, единственным вариантом может быть попытка прочитать все данные из старого индекса в новый, на который распространяются все вышеупомянутые ограничения в отношении согласованности, $skip и т. Д.
  5. Запрос вашего приложения должен соответствовать функциям, предоставляемым Поиском Azure. Поиск Azure поддерживает полнотекстовый поиск, фасеты и подмножество языка фильтра OData, но не поддерживает такие вещи, как объединение индексов или произвольные скопления. Если вашему приложению требуются другие функции запросов, отличные от тех, что предоставляет служба поиска Azure, вам следует рассмотреть другое решение NoSQL, например Azure Cosmos DB.
  6. Ваше приложение может выдерживать большую задержку записи. Поскольку это поисковая система, а не база данных общего назначения, поиск Azure в значительной степени оптимизирован для выполнения запросов (особенно запросов полнотекстового поиска). Это происходит за счет более низкой производительности записи, поскольку каждая запись требует много работы для индексации данных. В частности, вы получите максимальную пропускную способность при записи путем группирования действий индексирования вместе (пакеты могут содержать до 1000 действий индексирования). Запись документов в индекс по одному приведет к гораздо более низкой пропускной способности.

Обратите внимание, что во многих из этих областей мы хотим улучшить поиск Azure в будущем ради управляемости и простоты использования, но мы никогда не ставили перед собой цель превратить поиск Azure в базу данных NoSQL общего назначения.

person Bruce Johnston    schedule 18.10.2016
comment
Брюс, большое спасибо за подробный ответ. В частности, я подумываю (уже реализовано в качестве прототипа) использовать его для резервного хранилища системы электронной почты, поэтому в основном храню там все электронные письма для всех пользователей. Обычно электронные письма все равно хранятся в файловой системе. Я думаю, что все ваши пункты полностью соответствуют потребностям электронной почты. Единственное, что меня беспокоит, это задержка под нагрузкой. Какую задержку мне следует ожидать? Что вы думаете об использовании вместо этого хранилища таблиц Azure в качестве основного хранилища данных (легкое получение данных по убыванию даты) ... - person richard; 19.10.2016
comment
... и просто используете Поиск Azure для поиска? - person richard; 19.10.2016
comment
Как человек, у которого накапливаются тысячи электронных писем, я могу представить, что мне нужны возможности для управления электронной почтой, которые не поддерживает служба поиска Azure, например удаление на основе запроса (в противном случае вам придется явно перечислить все идентификаторы, которые нужно удалить). Когда я открываю папку, нажимаю «Выбрать все», а затем «Удалить», я ожидаю, что это будет быстро. Что касается задержки индексации, она будет зависеть от топологии и нагрузки вашего сервиса. Я хочу сказать, что он не будет хорошо масштабироваться, если вы индексируете один документ за раз, что вам придется делать для электронной почты. Я бы управлял электронной почтой в другом месте. - person Bruce Johnston; 19.10.2016
comment
Спасибо, Брюс. А что вы думаете об их освоении в хранилище таблиц Azure? - person richard; 19.10.2016
comment
Только что понял, что у Table Storage есть ограничение в 1 МБ на запись, так что это не сработает! - person richard; 20.10.2016
comment
В итоге я освоил их в хранилище таблиц в формате json, с отсортированным по времени индексом в хранилище таблиц и индексом с возможностью поиска в лазурном поиске. - person richard; 04.03.2018
comment
Фактически закончил тем, что освоил их в хранилище BLOB-объектов как json-файлы BLOB-объектов, с краткой информацией о быстром доступе в хранилище таблиц (с сортировкой по убыванию времени) и индексированными с возможностью поиска в лазурном поиске. Работает удовольствие! Хотя мне нужно следить за тремя магазинами. - person richard; 14.11.2018
comment
В зависимости от вашего сценария поиска вы можете найти Cosmos как лучший основной магазин, который также может быстро выполнять большую часть поиска (2 к 1). Примерно год назад у нас был умеренно сложный сценарий поиска (более 80 полей, 10 аспектов, 5 текстовых полей), который мы успешно реализовали в Поиске Azure, и архитекторы MS рекомендовали нам использовать вместо него Cosmos. Мы протестировали оба продукта, и их производительность очень схожа, а Cosmos предлагает лучший контроль над согласованностью и избыточностью. - person Scott McNeany; 01.12.2020