2016-03-16 24 views
2

我是一位对所有主要关系数据库(Oracle,MS SQL Server,MySQL,...)有极高经验的高级数据库开发人员,但我是NoSQL世界的新手。最近我的公司决定使用Apache Cassandra数据库。我现在正在学习这几个星期,并且提出了以下问题:在Cassandra数据库中编写存储过程

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

回答

1

您可以编写user defined functions或触发器(可能是物化视图)。 UDF实际上只是为了简化阅读可能不是您想要的内容的事情。这真的取决于你想做什么,除非你是一个非常先进的cassandra用户,否则我会建议不要触发触发器。实体化视图可以提供你想要的,如果你试图允许多种方式来查看数据。

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

+0

好的,谢谢你的回答。还有一个问题,如果我们可以在Cassandra中编写UDF或触发器,我们使用什么语言来编写代码?如果它是Java,我们可以像一个简单的Java函数那样编写,或者,我们必须创建一个Java类?我们该如何编译代码? Cassandra是否已经构建了对Java的支持,以便它可以处理自己的编译? –

+1

默认情况下,Cassandra 2.2及更高版本支持在java和javascript中定义函数。其他脚本语言(如Python,Ruby和Scala)可以通过向类路径添加JAR来添加。对于触发器,你需要用java编写它,并在类路径中包含一个jar(我建议远离触发器!它们用于高级用例,它们的一般用法可能意味着你设计的模式错误)。 –