首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka.net持久化查询-Events的标签流顺序保证

Akka.net持久化查询-Events的标签流顺序保证
EN

Stack Overflow用户
提问于 2022-07-24 16:16:48
回答 1查看 57关注 0票数 0

我正在使用Akka.net构建一个解决方案,该解决方案将允许查询多个标记的持久性查询。我认为这样做的方法之一是简单地为每个标记物化一个流,然后使用akka.net流抽象将流与顺序合并。

但是,Getakka.net (https://getakka.net/articles/persistence/persistence-query.html#eventsbytag-and-currenteventsbytag)关于日志可能提供的预定义查询的指南表明,获取多个PersistenceIds的查询没有排序保证。我想知道,这是因为akka.net leaves会阅读日志实现到单个插件,还是排序和akka.net流本身就有问题呢?

如果我使用基于SQL的事件存储,它看起来就像基本的抽象QueryExecutor允许创建一个有序流:

代码语言:javascript
复制
ByTagSql =
          $@"
          SELECT {allEventColumnNames}, e.{Configuration.OrderingColumnName} as Ordering
          FROM {Configuration.FullJournalTableName} e
          WHERE e.{Configuration.OrderingColumnName} > @Ordering AND e. 
          {Configuration.TagsColumnName} LIKE @Tag

          ***ORDER BY {Configuration.OrderingColumnName} ASC";***

谁能确认"SelectByTag“查询订单保证的缺失是否与底层的akka.net流媒体平台有关,还是每个日志插件是由akka.net团队以外的人独立创建的(或者其他我没有想到的东西)?

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-29 18:20:46

,我想知道这是否是因为akka.net leaves阅读了日志实现,直到单个插件,还是存在着排序和akka.net流的内在问题?

对于大多数日志实现,我们都非常努力地通过使用单独的“排序”列来确保在所有持久性in中都保留全局顺序,这通常是在Offset in Akka.Persistence.Query中使用的。但是,我们不能保证DatabaseWeHaveNeverHeardOf在内部产生读/写的方式上必然会遵守这一点。

这意味着,Akka.Persistence.Query并不在其C#代码中强制执行排序保证--而是依赖数据库来完成。有些人在这方面比其他人更加一致。

能否确认"SelectByTag“查询订单保证的缺失是否与底层的akka.net流媒体平台有关,还是每个日志插件都是由akka.net团队以外的人独立创建的(或者其他我没有想到的东西)?

如果大多数SelectByTag查询是由Akka.NET团队开发的,并且在底层数据库中支持这些查询,那么大多数查询都会被排序。Akka.Persistence.Azure / Akka.Persistence.*SQL / Akka.Persistence.Linq2Db都是保存orering的好例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73100071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档