首页 » 测绘 » Cassandra学习笔记

Cassandra学习笔记

相对国内冷静的市场来说,Cassandra在国外发展的倒是如火如荼,国外这个专门对数据库进行评分的网站DB-Engines显示Cassandra排进了前十名,比Hbase的名次要高好几位,从2013年开始有了突飞猛进的增长,目前已有超过1500多家公司在使用Cassandra,可惜的是没有多少国内公司,只有一家做云存储的创业公司云诺名列榜单。

ReadPath

读的时候先读memtable,如果没有的话找SSTable,通过bloomfilter来加速查询,如果bloomfilter说没有,那就真没有,如果bloomfilter说有,就继续查。

创建二级索引如果我们想直接查example表的age和test表的name了么?方法是有的,那就是建索引:CREATEINDEXONexample(age);CREATEINDEXONtest(name);我们就能在descexample和desctest的时候看到下面的语句了:descexample:CREATEINDEXexample_age_idxONad.example(age);desctest:CREATEINDEXtest_name_idxONad.test(name);但是建的二级索引只能支持=查询,不支持范围查询。

Cassandra能否有能力应对这种具有多样性的数据流量?答案是肯定的,Cassandra是线性扩展,可以根据前台数据流量轻松确定集群规模,处理能力不够?加一台节点试试。

数据类型>CQL提供了一组丰富的内置数据类型,用户还可以创建自己的自定义数据类型。

但如果节点中断时间超过maxhintwindowinms(默认3小时)设定的值,这部分数据将会被丢弃,此时需要用nodetoolrepair在所有节点上手工执行数据修复,以保证数据的一致性。

这个配置项可以让我们能调整集群的负载均衡。

**5\\.被证明过,已经在企业应用程序和许多用例中取得成功已经有许多Cassandra被有效使用的例子。

实际上,90%的读,一个SSTable就可以满足。

当AutoBootstrap设为TRUE,第一次启动,并且没有配置为seed,Cassandra将会有一个漫长的启动过程,当然这个时间的长短和你的当前的集群的数据量有很大的关系。

Cassandra最近两年在大数据公司Datastax的大力培育下获得长足发展,功能和性能均大幅提升,Datastax的估值也达数亿美元。

当初始器从这个朋友收到ack信息,它会向这个朋友发送GossipDigestAck2Messae去完成一轮gossip。

注释掉initial_token或保留未设置状态。

需要有keyspace,keyspace相当于是tables的container,相当于relationaldatabase里的database,会定义replicationstrategy,replicationfactor。

Range:在Cassandra中,每一个节点负责处理hash环的一段数据,范围是从上一个节点的Token到本节点Token,这就是Range在健康的集群中,可以通过自带的工具nodetool查看集群的哈希环具体情况,命令为:nodetoolring。

扫描所有分区通常会导致过高的读取延迟,并且不允许。

去中心化这一事实意味着Cassandra不会存在单点失效。

在Windows上单机运行Cassandra大多数人使用的OS都是Windows,所以如果只是想简单地测试一下Cassandra,我们可以直接在安装好JDK1.6的Windows系统上安装Cassandra,并进行简单的测试。

将文件解压到某处,如在本示例为:`D:\\software\\apache-cassandra-3.10`,例如:>注:为了使用方便,可以将`D:\\software\\apache-cassandra-3.10\\bin`添加到环境变量中。

各选项每个都有默认值,可以根据需要自行调节,具体条目解释也可以参考官方文档:cqlsh:theCQLshell|ApacheCassandraDocumentation也可以参看DataStax公司的专业文档:COPYCOPYFROM通常用于小型数据集的导入。

旧版本默认为`/var/log/cassandra`和`/var/lib/cassandra`。

**索引是如何保存和更新的?**AbriefdescriptionofhowCassandrastoresanddistributesindexes.二级索引是用来过滤存储在一个表中的非主键的列的数据。

数据如何均匀分布Cassandra中,Token是用来分区数据的关键。

Cassandra为了减少没有必要的SSTable扫描,使用了BloomFilter,即通过多个hash函数将key映射到一个位图中,来快速判断这个key属于哪个SSTable。

Cassandra的表定义了分区集合的结构类型,表包含一系列分区,分区又包含了行与列。

可以通过以下方式添加SASI:createcustomindexXXXonX_table(XXX)using”org.apache.cassandra.index.sasi.SASIIndex”withoptions=;另外两种mode分别是(prefix和sparse),prefix就是prefix%如果这就是唯一的pattern,那么效率比contains要高。

如果只使用排序主键来查询的话,只能使用排序主键的第一个来查询,并且使用allowfiltering;或者使用排序主键的第一个、第二个一起来查询,就是说要排序主键要有第一个才能使用第二个,有第二个才能使用第三个。

为什么twitter在tweets系统中不使用cassandra?”这是一次战略上的变化。

5.Join查询:`select*fromEmpse,Depsdwheree.dep_id=d.dep_id`Join实际上是要建立不同实体之间的联系。

这个过程引入了同样的危险,当记录已经从集群剩下的节点删除了,但是重新插入的时候。

之后的Bloomfilter,compressionoffsetmap,partitionsummary都不放在Heap中了,只有partitionkeycache还放在Heap中。

发表评论