NoSQL 用户定义函数 (UDF) 和触发器是在应用程序级别还是数据库级别执行?

问题描述 投票:0回答:1

我正在尝试了解 NoSQL 的内部结构,特别是 Apache Cassandra,并且我有一个对象执行问题。

据我所知,NoSQL 本身不支持存储过程,但支持用户定义函数 (UDF) 和触发器,但必须通过客户端驱动程序来实现,其中这些对象是在 JVM 中创建的,而 JVM 本质上存储在 Cassandra 库中/触发目录类型并在集群启动期间加载到数据库集群中。

根据 Apache Cassandra 文档,他们声明如下:

构成触发器的实际逻辑可以用任何 Java (JVM) 语言编写,并且存在于数据库外部。您将触发器代码放置在 Cassandra 安装目录的 lib/triggers 子目录中,它在集群启动期间加载,并存在于参与集群的每个节点上。

这些对象的实际执行是在服务器/应用程序端执行,然后将结果传递到 Cassandra,还是 Cassandra 是否有能力解释这些对象并在数据库端执行它们?

我问的原因是因为我的目标是减少服务器端调用,让服务器/应用程序尽可能自由地运行,并将更多的数据操作职责放在数据库上。从某种意义上说,这是泵和转储类型的流,其中服务器将数据发送到数据库,然后忘记它并返回到应用程序以侦听更多请求,而不需要额外的时间来处理数据。

database cassandra
1个回答
0
投票

NoSQL 本身不支持存储过程

总的来说,我认为这可能是正确的。然而,NoSQL 数据库有很多,并且它们的功能集差异很大。

这些对象的实际执行是在服务器/应用程序端执行,然后将结果传递到 Cassandra,还是 Cassandra 是否有能力解释这些对象并在数据库端执行它们?

在 Cassandra 中,UDF 和触发器 100% 在数据库端执行。这就是为什么自定义触发器的 JAR 位于集群中所有节点上的

lib/
目录中非常重要。同样,UDF 是架构的一部分,并且依赖于同一架构版本上的所有节点。

© www.soinside.com 2019 - 2024. All rights reserved.