加入历史和流媒体数据

时间:2016-12-20 09:57:39

标签: google-cloud-dataflow

我正在寻求在Dataflow中实现流式搜索/过滤系统。系统本身非常复杂,所以我将用一个简单的例子来描述我的问题。

假设我想允许我的系统用户为新闻文章设置警报,匹配包含指定关键字的任何文章。与我的问题相关的是,当系统添加警报时,它需要返回并匹配包含该关键字的所有以前的文章。当然,它还需要开始匹配任何新文章。

我的想法是加入包含警报流的文章流,根据每个警报检查每篇文章。

我的问题是:如果能够根据警告检查过去文章的存档是一个好方法,有没有办法避免过多的复杂性和特殊的套管?理想情况下,我只是将所有文章保存在一个pcollection中,其中包含一个全局窗口和一个触发器,该触发器会发出所有新元素并加入一组警报。这可行吗?如果我的工作有问题,如何确保不丢失文章?

1 个答案:

答案 0 :(得分:1)

基本上,每次新文章到达时,您都希望扫描所有现有警报并找到匹配的警报;每次收到新警报时,您也希望扫描所有现有文章并找到匹配的文章。

我认为您有一种有效的方法来查找匹配文章以获取警报并匹配文章的警报,而不是扫描整个数据库,但如果没有(例如,如果数据库很小),那也很好

一个选项是这样的系统:

  • 当添加新文章时,1)将其写入索引存储系统(例如Bigtable,或Elasticsearch,或数据库,或类似的东西)2)发出一篇新文章"事件到PubSub主题
  • 添加新警报时,请执行相反操作:同时写入索引存储系统并发出事件
  • 让管道监听两个pubsub主题上的事件。获得"新文章"事件,它扫描警报数据库以查找匹配的警报(使用任何可用的索引)。当得到一个"新警报"事件,用于匹配文章。

这有意义吗?