从现有数据库

时间:2016-12-13 00:40:33

标签: sql-server azure search azure-search

我有一个现有的SQL Server数据库,它使用全文搜索和语义搜索来获取UI的主要搜索功能。搜索中使用的表包含大约100万行数据。

我正在考虑使用Azure搜索替换它,但是我的数据库依赖于Full Text Enabled表来获取它的核心功能。我想使用Azure搜索进行“搜索”,但仍然有我当前的表结构,以便能够在找到内容时编辑记录并显示详细记录。

我实现这一点的想法是:

  1. 创建Azure索引
  2. 将所有可搜索的数据从SQL Server中的全文启用表推送到Azure搜索
  3. Azure搜索以返回与搜索条件匹配的文档的ID
  4. 查询现有数据库以获取包含要在前端显示的ID的行
  5. 当现有数据库中的某些数据发生更改时,请在Azure搜索中安排更新以确保数据保持同步
  6. 这是一个好方法吗?混合实现如何在现有数据位于本地数据库但您希望利用Azure搜索的哪个位置工作?

2 个答案:

答案 0 :(得分:3)

总的来说,您的方法似乎是合理的。一些可能有用的指针:

  1. Azure SQL现在支持全文搜索,因此如果您可以选择迁移到Azure SQL,并且仍想使用Azure搜索,则可以使用Azure SQL indexer。或者,您可以在IaaS VM上运行SQL Server,并使用说明here配置索引器。

  2. 使用本地SQL Server,您可以使用Azure Data Factory sink for Azure Search来同步数据。

答案 1 :(得分:1)

我实际上刚刚完成了这个过程。我们使用不同的后端数据存储而不是SQL Server。

最重要的是,我们编写了一个应用程序来同步所有现有数据。很简单。

对于要添加的新文档,我们选择同步而不是异步同步到Azure搜索。我们做出了这个选择,因为我们在添加和更新索引时测量了出色的性能。响应时间为50-200毫秒,数十万条记录无故障。我们无法证明构建和维护工作人员,持久队列等的额外成本。警告:我们的Web服务与Azure搜索实例位于同一Azure区域。如果您的SQL Server在本地,则可能会遇到更长的延迟。

我们最终在Azure Search中存储了大约80%的每条记录。显然,您在Azure搜索中存储的越多,您执行最坏情况串行“双重查询”的可能性就越小。