在 Cassandra 数据库中编写存储过程

Posted

技术标签:

【中文标题】在 Cassandra 数据库中编写存储过程【英文标题】:Writing a stored procedure in Cassandra database 【发布时间】:2016-03-16 18:46:13 【问题描述】:

我是一名高级数据库开发人员,对所有主要的关系数据库(Oracle、MS SQL Server、mysql...)都有丰富的经验,但我是 NoSQL 世界的新手。最近我公司决定使用 Apache Cassandra 数据库。我现在正在学习这个几个星期,并提出了以下问题:

Q> 我们可以在 Cassandra 数据库中创建存储过程或函数吗?如果是,Cassandra 是否提供自己的编程语言(如 Oralce 的 PL/SQL)?如果它没有自己的语言,我们可以使用什么语言?是Java吗?如果是Java,需要单独安装Java吗?还是与Cassandra一起安装并内置在其中,可以在存储过程中使用?

【问题讨论】:

【参考方案1】:

您可以编写user defined functions 或触发器(可能是物化视图)。 UDF 实际上只是为了简化阅读可能不是您想要的东西。这实际上取决于您想做什么,除非您是非常高级的 cassandra 用户,否则我建议您不要使用触发器。如果您尝试允许以多种方式查看数据,则物化视图可以提供您想要的。

真正采取的设计是将其移出数据库并进入您的应用程序。请记住,这个想法是非规范化,而不是规范化您的数据。通常,在为 Cassandra 设计模式时,您最终会为每个查询创建一个表,而不是在插入数据时,您会对所有相关表进行多次插入。有大量的free training 和视频可用于数据建模。我建议在构建您的数据模型之前花大量时间仔细研究它,以免以后出现误解和陷阱。

【讨论】:

好的,谢谢您的回答。还有一个问题,如果我们可以在 Cassandra 中编写 UDF 或触发器,我们使用什么语言来编写代码?如果是Java,我们是否可以像编写一个简单的Java函数一样编写,或者,我们必须创建一个Java类?我们如何编译代码? Cassandra 是否内置了对 Java 的支持以便它可以自己处理编译? 默认情况下,Cassandra 2.2 及更高版本支持在 java 和 javascript 中定义函数。可以通过将 JAR 添加到类路径来添加其他脚本语言,例如 Python、Ruby 和 Scala。对于触发器,您需要用 java 编写它并在类路径中包含一个 jar(我建议远离触发器!它们用于高级用例,一般使用它们可能意味着您设计的架构错误)。

以上是关于在 Cassandra 数据库中编写存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何提供存储在 cassandra 数据库中的图像? [关闭]

Cassandra 按计数排序结果

SQL- 基础知识梳理 - 存储过程

在 cassandra 中存储 TB 的统一时间序列

text 在Cassandra DB中存储邮件元数据。

灾备能力超强的大数据存储小天使——今天你用 Apache Cassandra 了吗?