【问题标题】:Is it possible to update rows in Azure Data Explorer (Kusto)是否可以在 Azure 数据资源管理器 (Kusto) 中更新行
【发布时间】:2020-05-09 23:54:58
【问题描述】:
  1. 是否可以更新 Azure 数据资源管理器中的行?

  2. 对于存储频繁更新的大型库存(100M 项)或它主要针对仅附加数据场景进行优化是一个不错的选择吗?我的存储库全天候更新,我需要立即看到更改(近乎实时)。

  3. 假设我需要全文搜索、分面和基本项目查询/查找以及近乎实时的更新(全天候流动)。它与 ElasticSearch 相比如何?假设我将两者都作为托管服务使用。我最关心的是更新部分。

【问题讨论】:

    标签: azure-data-explorer


    【解决方案1】:
    1. 无法更新单个记录。您可以选择在摄取时通过tagging 批量更新数据,并在需要执行“更新”时使用分片级命令(例如.replace extents)。

    2. 虽然这可能不是“自然”的选择,但理论上您仍然可以实现这一点,方法是为每次更新获取一条新记录,并使用 arg_max() 始终获取每个项目的最新版本。

      • 有一个即将推出的功能,物化视图,它可以(在它可用之前,您可以使用ingests from a query 的任何调度程序定期编排该物化)
    3. 完整且有意义的比较不是单行的(有太多考虑因素要列出),并且在大多数情况下 - 这种比较的结果将非常具体到您的用例、预算、个人偏好、性能要求等。也就是说,ADX/Kusto 支持您列出的所有功能。

    【讨论】:

    • 谢谢你!我在问题中添加了更多细节。从您的回答来看,这听起来更像是一种解决方法,而不是正常的产品使用?这些解决方案在不断更新(多于插入)流入并需要即时(少于秒)可见性的情况下是否可行?
    • ADX/Kusto 作为一个仅追加存储,对于非常频繁更新的数据不一定是您的最佳选择。也就是说,我提到的技术在不同规模上被客户广泛使用,他们更喜欢将这部分数据与其他不太频繁(或根本不)更新的数据集一起保存在 ADX/Kusto 中,例如 - 由于出于方便的考虑(例如,将所有数据放在一个服务中,使用相同的查询语言等)。如果您的主要和唯一用例需要非常频繁的更新,我不确定您提到的技术是否最合适。
    【解决方案2】:

    如果我们谈论的是一个小表,您可以使用这种技术更新 Kusto 中的记录:

    .ingest inline into table temp_ABC <|
    01,John,Doe,21
    02,Jim,Brown,23
    
    .set-or-replace ABC <| temp_ABC
    
    .drop table temp_ABC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多