[Cassandra教程] 几个针对数据分析好用的功能

栏目: 数据库 · 发布时间: 6年前

内容简介:翻了一下以前写的Cassandra相关的教程, 发现最开始是2016年写的博客了.也没想到坚持了这么久. 经过这么长一段时间使用Cassandra作为基础数据承载的基础架构, 有一些实战获得的经验.总而言之, Cassandra并不适合类似金融方向这种需要高可靠性\事务性的业务. 但是对数据分析, 确实有一些功能比较好用.

引言

翻了一下以前写的Cassandra相关的教程, 发现最开始是2016年写的博客了.

也没想到坚持了这么久. 经过这么长一段时间使用Cassandra作为基础数据承载的基础架构, 有一些实战获得的经验.

总而言之, Cassandra并不适合类似金融方向这种需要高可靠性\事务性的业务. 但是对数据分析, 确实有一些功能比较好用.

省心的重复数据处理

在批量导入数据到数据库之中的时候, 难免有重复导入的时候. 如果使用 MySQL 等等, 就需要事先按照时间或者其他条件, 先把历史数据删除.

而Cassandra并不需要特殊处理. 在导入之前, 只要设计好相应的主键, 在导入的时候, Cassandra会自动覆盖相应的记录. 不会存在多一份数据的问题

Insert == Update

我们在插入数据的时候, 经常会这种需求: 如果存在, 就更新, 如果不存在就插入

如果使用MySQL, 就只能自己先select一把再相应的insert或者update.

当然, 也能通过一些Workaound来解决. 比如 on update XXX key 的方式.

但是在Cassandra之中, 虽然 insertupdate 的CQL长得完全不一样(都是标准SQL), 可是作用是一样的. 无论原来是否存在相应的数据, 使用 insert 或者 update 最后结果都是一样的.

直接塞入Json字符串

【个人认为, 这个feature非常非常的重要!】

这个feature跟MySQL 5.7 或者 MongoDB 直接塞入json不太一样.

在MySQL或者MongoDB之中, Json数据是某一个单元格的数据是json类型. 而Cassandra可以把一行的数据以JSON的方式直接插入, 让Cassandra自己相应的塞入对应的列之中.

举个例子:

cqlsh> INSERT INTO cycling.cyclist_category JSON '{
  "category" : "GC", 
  "points" : 780, 
  "id" : "829aa84a-4bba-411f-a4fb-38167a987cda",
  "lastname" : "SUTHERLAND" }';
 

结合上面提到的 insert == update , 如果在更新的时候, 也可以转成 insert 的方式进行.

另外, 这种方式还有一个好处: 可以做成通用的插入函数. 这样无论是什么数据, 在塞入的时候变成相应的json字符串即可. 他们使用的 SQL 都是相同的. 不再需要单独编写SQL

代价就是: 批量插入速度可能会降低25%这样

text == varchar == string

我们在设计MySQL schema的时候, 还得考虑是 char 还是 varchar 还是 longtext 之类的.

在Cassandra, 这个设计就简化很多了: 只有 text 也不需要你考虑长度.

我想, 虽然性能没有那么机制, 但是Cassandra在设计之初, 就考虑的是拥有足够的硬盘. 另外在性能上面, 可能也没有那么机制, 不过好在用起来非常简单.

结语:

如果你要处理的数据量在10G~1000G这个级别, 我相信Cassandra会是比较好用的.

如果只是非常小的数据库, 纯文件服务器或者MySQL也够用了.

如果是超过1T的级别, 目前笔者还没有经验, 可以尝试Cassandra集群, 也可以尝试HBase / Hive等解决方案.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Unity游戏设计与实现

Unity游戏设计与实现

[日]加藤政树 / 罗水东 / 人民邮电出版社 / 2015-2 / 79.00元

本书出自日本知名游戏公司万代南梦宫的资深开发人员之手,面向初级游戏开发人员,通过10个不同类型的游戏实例,展示了真正的游戏设计和实现过程。本书的重点并不在于讲解Unity的各种功能细节,而在于核心玩法的设计和实现思路。每个实例都从一个idea 开始,不断丰富,自然而然地推出各种概念,引导读者思考必要的数据结构和编程方法。掌握了这些思路,即便换成另外一种引擎,也可以轻松地开发出同类型的游戏。 ......一起来看看 《Unity游戏设计与实现》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具