首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache本地存储- OrientDB / Neo4J图而不是KV存储

Apache本地存储- OrientDB / Neo4J图而不是KV存储
EN

Stack Overflow用户
提问于 2015-08-13 16:39:25
回答 2查看 580关注 0票数 3

Apache使用RocksDB作为本地存储的存储引擎。这允许有状态流处理和这里有一个很好的概述

我的用例:

  • 我希望处理从Apache这样的系统中获取的多个事件流。
  • 这些事件创建状态-我希望跟踪的状态是基于以前收到的消息。
  • 我希望根据计算的状态生成新的流事件。
  • 输入流事件是高度连接的,像OrientDB / Neo4J这样的图形是查询数据以创建新流事件的理想媒介。

我的问题是:

是否可以使用非KV存储作为Samza的本地存储?有人用OrientDB / Neo4J做过这样的事吗?有人知道一个例子吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-17 22:48:48

我一直在评估Samza,我绝不是一个专家,但我建议您阅读正式文件,甚至阅读源代码--除了它在Scala中,它是非常容易接近的。

在这个特殊的例子中,在关于国家管理的文件页的底部,您有以下内容:

其他存储引擎 Samza的容错机制(向复制的changelog发送本地存储的写入)与存储引擎的数据结构和查询API完全解耦。虽然键值存储引擎有利于通用处理,但通过实现StorageEngine接口,您可以轻松地为其他类型的查询添加自己的存储引擎。Samza的模型特别适合嵌入式存储引擎,它们作为库运行在与流任务相同的进程中。 对于其他可能有用的存储引擎来说,有些想法是有用的:持久堆(用于运行top-N查询)、类似的算法(如bloom过滤器和超级日志),或者全文索引(如Lucene )。(已接受补丁!)

实际上,我在大约两周前阅读了默认StorageEngine实现的代码,以便更好地了解它的工作原理。我当然不知道该怎么说,但我可以指给你看:

主要的执行关切似乎是:

  1. 记录对主题的所有更改,以便在任务失败时恢复存储的状态。
  2. 以行为方式恢复商店的状态
  3. 批处理、写入和缓存频繁读取,以节省到原始存储的旅行。
  4. 报告有关商店使用情况的指标。
票数 1
EN

Stack Overflow用户

发布于 2015-12-08 15:34:17

输入流事件是为每个匹配的Kafka/Samza分区定义一个全局图还是多个图?这一点很重要,因为Samza州是本地的,而不是全球的。

如果是一个全局图,则可以更新/查询Samza任务处理方法中的一个单独的图形系统。卡桑德拉号上的土卫六会有这样的图形系统。

如果是多个单独的图,则可以使用当前的RocksDB KV存储来模拟图形数据库操作。Titan on Cassandra就是这样做的--使用Cassandra商店来存储和查询图表。图被存储在矩阵(如果连接的话,集i,j到1)或边列表中。对于每个节点,使用它作为键,并将其邻居集存储为值。

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

https://stackoverflow.com/questions/31993909

复制
相关文章

相似问题

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