【问题标题】:How does partial updates work in DataStax Solr部分更新如何在 DataStax Solr 中工作
【发布时间】:2016-11-02 16:50:10
【问题描述】:

Cassandra 是一个列族数据存储,这意味着每列都有自己的时间戳/版本,并且可以更新 Cassandra 行的特定列,这通常称为部分更新。

我正在尝试实现一个管道,使 Cassandra 列族中的数据也可以在 Solr 或 Elastic Search 等搜索引擎中搜索。

我知道 Datastax 企业版确实提供了开箱即用的 Cassandra Solr 集成。

鉴于 Solr 和 ElasticSearch 在文档级别而不是在字段级别维护版本控制,因此 Solr 和 Cassandra 的数据模型在概念上存在脱节。

Cassandra 中完成的部分更新如何写入 Solr?

换句话说,Cassandra 中完成的部分更新是否会写入 Solr 而不会相互影响?

【问题讨论】:

    标签: solr cassandra datastax-enterprise


    【解决方案1】:

    我可以看到您可能来自这里,但对于阅读本文的任何人来说,知道以下陈述不正确也很重要

    鉴于 Solr 和 ElasticSearch 在文档级别而非字段级别维护版本控制,因此 Solr 和 Cassandra 的数据模型在概念上存在脱节。

    要为此添加一些颜色,让我尝试解释一下。当更新写入 Cassandra 时,无论内容如何,​​新的变异都会进入此处概述的写入路径:

    https://docs.datastax.com/en/cassandra/3.x/cassandra/dml/dmlHowDataWritten.html

    DSE 搜索在表上使用“二级索引挂钩”,然后将传入的写入推送到索引队列中,该队列将写入文档并存储在 Lucene 索引中。该架构在这里给出了一个高层次的概述:

    https://docs.datastax.com/en/datastax_enterprise/5.0/datastax_enterprise/srch/searchArchitecture.html

    这篇博文现在有点老了,但仍然概述了这个的概念:

    http://www.datastax.com/dev/blog/datastax-enterprise-cassandra-with-solr-integration-details

    所以任何更新无论是单列还是整行都会同时被索引。

    【讨论】:

    • 我的问题更多是关于对同一列进行的并发更新。 Cassandra 通过查看写入时间戳来解决它,具有最新时间戳的那个获胜。如果将这 2 个更新复制到 Solr,那么哪一个会获胜? Solr没有字段级别的版本,Solr支持文档级别的Optimistic并发更新
    • DSE solr 会将更新放入其索引队列,但在构建文档时,它会在此时从 cassandra 请求行数据,因此它始终会获得最新数据。
    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 2011-07-10
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多