β

Cassandra的触发器(Triggers )总结

邓的博客 1317 阅读

hbase中有coprocessor,基于coprocessor,很多公司开发了很多很有创意和实用的功能,例如二级索引,这令玩Cassandra的人着实羡慕。不过好消息来了,在Cassandra2.0中,有一项新特性,就是trigger,实现了类似功能(虽然没有那么强大),虽然姗姗来迟,但终究还是有了。

有关trigger我们需要了解的是:

1. trigger并未完全定型,如果要在production中使用该功能,最好做好在Cassandra版本升级的时候需要大修的准备(官方宣称会在2.1的时候最终定型)。

2. trigger主要作用的是对Cassandra的写,读是否支持,支持多少咱不知道。

3.trigger中可以执行任意的代码,但是这些代码并不在沙箱里面执行(至少目前是),因此,写这些代码一定要万分小心。

那么trigger能够实现啥功能呢,个人认为有以下几点:

1. CF全局计数器

CF的计数器在很多场景都可能用到,以前用write counter来做的话会有很大的性能问题,而表统计信息又会在节点重启的时候丢失。不过现在有个好思路了,可以用trigger在提交请求的时候来做这些额外的工作。

2. 输入验证和权限控制

在trigger中可以执行写入数据验证来保证数据的正确性。当然,也可以用trigger来做权限控制。

3. 二级索引和全文索引

Cassandra有二级索引,但是可能在某些场景下不尽如人意,这时,可以用trigger按照自己的想法来定制该功能。当然,如果想实现全局索引,那么可以利用trigger将数据在写入Cassandra的同时导入到其他的索引系统例如solr(lucene)或者elasticsearch等中。

4. 记录/报警某些指定操作

例如可以记录删除/更新记录的操作,以便日志分析追踪,甚至根据某些特殊需求维护自己的数据版本等。

5. 其他

反正可以执行任意代码,那么足够灵活,能够做的肯定很多。但是由于这种非沙箱内的执行,而且控制比较弱,这就会带来更多的风险,因此在使用的时候一定要足够小心再小心。

总结:

本文介绍了Cassandra的trigger的一些需要注意的地方以及可以用它实现的某些需求,欢迎补充和拍砖。

非特别说明,均为原创文章,转载请注明: 转载自邓的博客

本文链接地址: Cassandra的触发器(Triggers )总结

作者:邓的博客
关注Hadoop、NoSql和搜索相关开源技术
原文地址:Cassandra的触发器(Triggers )总结, 感谢原作者分享。

发表评论