Apache使用RocksDB作为本地存储的存储引擎。这允许有状态流处理和这里有一个很好的概述。
我的用例:
我的问题是:
是否可以使用非KV存储作为Samza的本地存储?有人用OrientDB / Neo4J做过这样的事吗?有人知道一个例子吗?
发布于 2015-08-17 22:48:48
我一直在评估Samza,我绝不是一个专家,但我建议您阅读正式文件,甚至阅读源代码--除了它在Scala中,它是非常容易接近的。
在这个特殊的例子中,在关于国家管理的文件页的底部,您有以下内容:
其他存储引擎 Samza的容错机制(向复制的changelog发送本地存储的写入)与存储引擎的数据结构和查询API完全解耦。虽然键值存储引擎有利于通用处理,但通过实现StorageEngine接口,您可以轻松地为其他类型的查询添加自己的存储引擎。Samza的模型特别适合嵌入式存储引擎,它们作为库运行在与流任务相同的进程中。 对于其他可能有用的存储引擎来说,有些想法是有用的:持久堆(用于运行top-N查询)、类似的算法(如bloom过滤器和超级日志),或者全文索引(如Lucene )。(已接受补丁!)
实际上,我在大约两周前阅读了默认StorageEngine
实现的代码,以便更好地了解它的工作原理。我当然不知道该怎么说,但我可以指给你看:
主要的执行关切似乎是:
发布于 2015-12-08 15:34:17
输入流事件是为每个匹配的Kafka/Samza分区定义一个全局图还是多个图?这一点很重要,因为Samza州是本地的,而不是全球的。
如果是一个全局图,则可以更新/查询Samza任务处理方法中的一个单独的图形系统。卡桑德拉号上的土卫六会有这样的图形系统。
如果是多个单独的图,则可以使用当前的RocksDB KV存储来模拟图形数据库操作。Titan on Cassandra就是这样做的--使用Cassandra商店来存储和查询图表。图被存储在矩阵(如果连接的话,集i,j到1)或边列表中。对于每个节点,使用它作为键,并将其邻居集存储为值。
https://stackoverflow.com/questions/31993909
复制相似问题