首页 » 测绘 » Cassandra使用总结

Cassandra使用总结

Cassandra在很长一段时间内不会触发另外一个compaction。

具有灵活性,同时也避免了传统`heartbeat`的不可靠。

Index文件用于索引文件,保存Key和在Data文件中对应的位置。

,”

例如:CREATETABLEposts(useridtext,blog_titletext,posted_attimestamp,entry_titletext,contenttext,categoryint,PRIMARYKEY(userid,blog_title,posted_at))上面userid是分区主键,blog_title和posted_at是聚类主键下面的查询是允许的where后面id是按照顺序来的:SELECTentry_title,contentFROMpostsWHEREuserid=johndoeANDblog_title=JohnsBlogANDposted_at>=2012-01-01ANDposted_at<2012-01-31但是下面的sql不允许,因为它没有选择一组连续的行(假设blog_title没有创建二级索引)SELECTentry_title,contentFROMpostsWHEREuserid=johndoeANDposted_at>=2012-01-01ANDposted_at<2012-01-314.Group_by_clause**groupby字段只能是partitionkey或者聚类主键**5.Allowingfiltering默认情况下,我们所有的查询条件都是主键,也是nofiltering的;**当非主键使用allowfiltering查询时,查询结果和性能是不可预测的,请谨慎使用!**例如:如下birth_year字段带有二级索引CREATETABLEusers(usernametextPRIMARYKEY,firstnametext,lastnametext,birth_yearint,countrytext)CREATEINDEXONusers(birth_year);那么如下查询是有效的:SELECT*FROMusers;SELECT*FROMusersWHEREbirth_year=1981;这两个查询语句,Cassandra都保证性能和返回的数据量成正比。

Cassandra不是设定一个固定值来标记失败的节点,而是通过连续的计算单个节点的网络性能、工作量、以及其它条件来确定一个节点是否失败。

本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。

对于查询大量记录时尤为有用。

如果compaction的结果超过了L1的SSTables的10倍,多余的SSTables会被转移到L2级别。

Cassandra避免写之前读。

下表仅将简要介绍各自用途,详细用法及命令行选项可点击内置链接或者访问下列网址:SSTableTools|ApacheCassandraDocumentation这些对于数据库维护人员比较重要,其中和应用直接相关的几个简介如下:命令|用途—|—|将指定SSTable的内容以JSON格式导出(dump)到标准输出上用法:sstabledump|将指定目录中的sstable批量加载到所配置的集群中。

**SSTable索引摘要(SUMMARY.db)**保存在内存中的分区索引的示例。

其他基本类型类型|含义|描述—|—|—boolean|布尔类型|值只能为true/falseblob|二进制大对象|存储媒体或者其他二进制数据类型时很有用inet|IPv4或IPv6网络地址|cqlsh接受用于定义IPv4地址的任何合法格式,包括包含十进制,八进制或十六进制值的点或非点式表示CQL会输出为0.0.0.0这种地址形式。

介绍Cassandra中的压缩在《如何安装和配置Cassandra》中,我们可以在DataFileDirectories中配置数据的存放位置。

包含特性:1.CQL改进了几处,包括更改表和行的能力、支持计数和TTL、获取计数等2.压缩策略开始支持多种,提供了更快地读写速度支持3.压缩SSTable文件,基于表级别进行配置CQL改进了几处,包括更改表和行的能力、支持计数和TTL、获取计数等压缩策略开始支持多种,提供了更快地读写速度支持压缩SSTable文件,基于表级别进行配置**V1.1:**2011年4月,包含特性:1.CQL3增加timeuuid类型,支持采用组合主键方式创建表2.支持orderby进行数据排序3.支持通过cqlsh工具导入和导出CSV文件4.允许数据以表的形式存储在SSD或者磁盘上5.Schema以表的形式存储在system6.keyspace允许配置缓存大小7.引入基于行级别的隔离,防止在多个列被更新或写入的时候出现脏读现象CQL3增加timeuuid类型,支持采用组合主键方式创建表支持orderby进行数据排序支持通过cqlsh工具导入和导出CSV文件允许数据以表的形式存储在SSD或者磁盘上Schema以表的形式存储在systemkeyspace允许配置缓存大小引入基于行级别的隔离,防止在多个列被更新或写入的时候出现脏读现象**V1.2:**2013年1月,包含特性:1.CQL3新增集合类型(sets、lists、maps),新增二进制协议用于替换Thrift2.虚拟节点支持集群内跨节点分布数据,提升新增或替换节点时的性能3.增加追踪方式,允许客户端查看节点之间的读和写交互过程4.所有数据结构都被从JVM堆内存转移到了本地内存CQL3新增集合类型(sets、lists、maps),新增二进制协议用于替换Thrift虚拟节点支持集群内跨节点分布数据,提升新增或替换节点时的性能增加追踪方式,允许客户端查看节点之间的读和写交互过程所有数据结构都被从JVM堆内存转移到了本地内存**V2.0:**2015年6月,这个版本具有里程碑意义,它不仅大规模提升了性能,而且解决了很多长达5年的技术债。

如果查询:`select*fromEmpswhereBirthdate=’25/04/1975′`为了支持该查询,我们需要添加一个`Birthdate_Emps`的CF,其中date为key,name为出生在该天的employee的ID,value可以是一个空的byte数组(用-代替。

在QConBeijing上@nk也提到Cassandra在Twitter的内部测试中曾经暴露出不少严重的问题。

你可以通过nodetoolcompact命令手动的启动compaction。

cassandra还支持org.apache.cassandra.dht.OrderPreservingPartitioner分区器,这个分区器就是按key的顺序来分区,且物理存储也是按key的字母表顺序来存储,这就与Hbase的分区规则一样了,对key的设计非常重要,也就是把本该由系统来处理的数据倾斜问题上升为业务自己来处理,确实需要丰富的业务知识才能完成这一任务。

在各数据中心副本数量的总和应等于Keyspace的副本数量。

,”

基本数据类型:类型|描述—|—text|UTF-8编码varchar与text相同int|有符号型32位timestamp|64位整型存储从1970-01-0100:00:00的秒数UUID和TIMEUUID类型用来替代整型id(由于Cassandra是分布式数据库)UUID全称:UniversallyUniqueIdentifier例如:52b11d6d-16e2-4ee2-b2a9-5ef1e9589328通过uuid()生成TIMEUUID:将timestamp嵌入UUID值中例如:1be43390-9fe4-11e3-8d05-425861b86ab6可排序的,通过now()生成INSERT语法:类似于关系型语法INSERTINTOusers(user_id,first_name,last_name)VALUES(uuid(),Joseph,Chu);SELECT语法:类似于关系型语法SELECT*FROMusers;SELECTfirst_name,last_nameFROMusers;SELECT*FROMusersWHEREuser_id=4b516be3-ddf0-4c43-bab6-b91d674b64a5;其他语法:后续数据模型课程,会介绍更多。

写的时候会几乎同时向commitlog和memtable写数据。

从apachecassandra首页来看,大概有超过1500个公司在使用cassandra。

Cassandra已经显示出了高负载下的良好表现,在一个非常普通的工作站上,Cassandra也可以提供非常高的写吞吐量。

为集群指定简单的副本因子(有几个副本)NetworkTopologyStrategy|网络拓扑策略|推荐方式,因为可以扩展到多数据中心,可以单独为每个数据中心设置复制因子Durable_writes否对当前KeySpace的更新使用commitlog,默认为true副本(Replication)>副本就是把数据存储到多个节点,来提高容错性节点(Node)>存储数据的机器集群(Cluster)Cassandra数据库是为跨越多条主机共同工作,对用户呈现为一个整体的分布式系统设计的。

CommitLogSync、CommitLogSyncPeriodInMS和CommitLogSyncBatchWindowInMS我们知道Cassandra是先写到CommitLog中再写到Memtable和磁盘中。

对于每个用户的索引,这是非常方便的。

银行和其他金融机构正在使用C*存储大量金融数据。

**图:经过很多次插入后的分级compaction**在每一个L0以上的级别,LCS创建大小大概相同的SSTables。

发表评论