2015-08-07 3 views
0

Документация по Azure Search говорит, что я могу использовать сервер Azure Sql в качестве источника данных (https://azure.microsoft.com/en-us/documentation/articles/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers-2015-02-28/). Могу ли я сделать то же самое с локальным SQL-сервером?Azure Search DataSource с локальным SQL Server и лучшими практиками?

У меня есть типичная реляционная структура, как

User Table -> Address Table Таблица
пользователя -> UserDetails стол
и т.д ..

Все связаны друг с другом с помощью внешних ключей. Мой поиск должен заканчиваться на UserId, поэтому я могу ссылаться на свой UserDetailsPage.aspx? UserId = xxx

Каким будет лучший предложенный способ создания источника данных? Должен ли я создать представление и применить отслеживание изменений на нем? или Должен ли я создать другой источник данных для каждой таблицы и синхронизировать соответствующий индекс?

Просьба пролить свет на лучшие практики в типичном сценарии реляционных баз данных.

ответ

2

вам необходимо разрешить IP-адрес службы поиска для подключения к вашей промежуточной базе данных. С точки зрения зрения и нескольких индексаторов, нацеленных на один и тот же индекс - оба подхода могут работать. Какую информацию будут искать ваши пользователи по адресу, реквизитам или и тому и другому? Если это только один из них, вам не нужно индексировать обе таблицы.

Имейте в виду, что если вы решите индексировать представление, соединяющее обе таблицы, вы не сможете использовать интегрированное отслеживание изменений SQL и должны полагаться на столбец rowversion или timestamp в представлении.

HTH

+0

Thanks Eugene. Да, мы хотим искать на обоих. У некоторых таблиц нет обновленных временных меток. Является ли строка Version тем, что SQL Server автоматически генерирует и обновляет на chages? –

+1

Да, если вы добавите столбец с типом данных rowversion, SQL Server будет автоматически обновлять его каждый раз, когда вы обновляете строку. Однако, если вы настроили два источника данных/индексаторы (один для таблицы адресов, один для таблицы UserDetails), которые оба записывают в один индекс поиска, вы все равно можете полагаться на интегрированное отслеживание изменений SQL. Когда индексщик вставляет документ в индекс, он использует операцию слияния, что означает, что вы можете выполнять частичные обновления документов. Сначала попробуйте этот подход, так как он не требует каких-либо изменений в вашей схеме таблиц или создания дополнительных представлений. –

+0

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