【问题标题】:Azure Search DataSource with on-premise SQL Server and best practices?Azure 搜索数据源与本地 SQL Server 和最佳做法?
【发布时间】:2015-08-08 01:41:16
【问题描述】:

Azure 搜索上的文档说我可以使用 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 服务器执行相同的操作吗?

我有一个典型的关系结构,比如

用户表 -> 地址表
用户表 -> UserDetails 表
等等。

所有都通过外键相互链接。我的搜索应该以 UserId 结尾,所以我可以链接到我的 UserDetailsPage.aspx?UserId=xxx

构建数据源的最佳建议方法是什么?我应该创建一个视图并对其应用更改跟踪吗?还是应该为每个表创建不同的数据源并同步相关索引?

请阐明典型关系数据库场景中的最佳实践。

【问题讨论】:

    标签: sql-server azure azure-cognitive-search


    【解决方案1】:

    您需要允许搜索服务的 IP 地址连接到您的本地数据库。 在视图与针对同一索引的多个索引器方面 - 两种方法都可能有效。您的用户将搜索哪些信息 - 地址、详细信息或两者兼而有之?如果它只是其中之一,那么您就不必为两个表建立索引。

    请记住,如果您决定为连接两个表的视图建立索引,您将无法使用 SQL 集成更改跟踪,并且必须依赖视图中的 rowversion 或 timestamp 列。

    HTH

    【讨论】:

    • 谢谢尤金。是的,我们想同时搜索两者。我在某些表上没有最后更新的时间戳。行版本是 sql server 自动生成和更新的东西吗?
    • 是的,如果你添加一个 rowversion 数据类型的列,SQL Server 会在你每次更新一行时自动更新它。但是,如果您设置两个数据源/索引器(一个用于 Address 表,一个用于 UserDetails 表)都写入单个搜索索引,您仍然可以依赖 SQL 集成更改跟踪。当索引器将文档插入索引时,它使用合并操作,这意味着您可以对文档进行部分更新。首先尝试这种方法,因为它不需要对表架构进行任何更改或创建额外的视图。
    • 我能否对所有同步的表设置更改跟踪,并对每个表使用不同的数据源来单独更新列?
    • @Avinash - 请不要在 cmets 中提出其他问题。问一个新问题。
    • @Avinash,是的。您需要在数据库级别和每个表上启用更改跟踪。有关详细说明,请参阅technet.microsoft.com/en-us/library/bb964713(v=sql.105).aspx
    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多