赞
踩
分布式系统。由节点组成,每个node都平等。共同构成一到多个ring 或者cluster
节点读写操作中的组成部分:
单个节点的写入操作:
单个节点的读取操作:
logical entities:tables and keyspaces
我们会在之后教程中详细说明tables和keyspaces的含义与操作。链接如下
Apache Cassandra:数据结构,keyspaces,table相关操作
执行create, drop, alter等操作,并不会影响在证运行的update 或者查询操作。
本部分说明的例子按照按照如下所示的代码创建。分别创建一个名字为intro_cassandra
的keyspace和groups
的table.
上图中最后一行我们需要解释一下:
PRIMARY KEY ((groupid), username)
其中
groupid
列被称为Patition key
username
column 被称作Clustering Key
primary key
插入操作的时候,必须将所有primary key指定col的value填写进去。
partition keys
数据写入的时候,需要按照partition分组进而分布到cluster上的nodes中。这就是partition key的作用。
partition key的hash值被用来决定哪个node来存储写入的数据。也就是说,它决定了数据在cluster中的分布。
partition key -> hash(token) -> Node
拥有相同的patition key的entries存储在唯一的相同的node中。
用图示范一下:
clustering key
用于确保data在partition key 找到的node中的插入位置(默认升序)
所以如果我们查询某个确定partition key下的数据,返回来的数据是按照clustering key 的data值升序排列好的。
作用:
举个例子说明clustering key的作用。
先create table:
clustering key 为age 和username,插入数据会按照age排序,age相同的再按照username排序。
插入如下数据:
当我们查询groupid=12,age为32的信息的时候,直接就能在这个node以及node内部相邻位置,返回查询结果。进而减少查询时间。
当我们想要插入新的entry时候:
插入之后,groupid为45的就和右边的node联系在一起。只要不发生node的增减打破整个cluster,以后都会直接在这个node中找到45号组的信息。
table的类型
table有两种类型: static和dynamic
static tables:
dynamic tables:
总结
data modeling 的原则:
选择合适的partition key,尽量能够将data平均分配到整个cluster中。
提高查询速度,可以通过clustering key的正确设置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。