Cassandra 中的用户定义函数和聚合

User Defined Functions and Aggregate in Cassandra

我正在测试 Cassandra 中的 UDF / UDA 功能,看起来不错。但是我在使用它的过程中几乎没有问题。

1) Cassandra.yaml中提到启用沙盒是为了避免恶意代码,那么我们是否违反了规则,启用此支持(flag)会有什么后果?

2) 与在客户端读取数据和编写聚合逻辑相比,在 Cassandra 中使用 UDF / UDA 有什么优势?

3) 另外,除了JAVA,是否有可用于nodejs 的语言支持,python 编写UDF / UDA?

谢谢, 哈利

以下是一些评论:

  1. 沙盒阻止执行 "dangerous" 代码 - 使用 files/sockets、启动线程等。This blog post 提供了一些关于它的额外细节。
  2. 可能有多个 - 您不会将数据从协调器节点移动到您的应用程序,而是将计算卸载到 cassandra 集群等。
  3. 支持 JSR 223 "Scripting for Java" 的语言 - JavaScript、Groovy、JRuby、Jython、...(在 Cassandra 配置中将 enable_scripted_user_defined_functions 设置为 true)。但是Java应该是最快的。

另请参阅 this presentation about UDF/UDA from author of this functionality (Robert Stupp) & this blog post,了解更多详细信息和示例。