目录
一、Cassandra特点
是一个开源、分布式和分散式/分布式存储系统(数据库),用于管理遍布世界各地的大量半结构化数据。提供高可用性服务,没有单点故障。
①高性能②高可用性③高可扩展性
二、Cassandra读写过程
①写操作:
对于节点在同一个本地dataa center中的协调者(客户端连接到数据中心的第一个节点),它把写请求发给所有拥有这一行的副本节点。只要所有副本节点可用,他们会忽略客户端设置的一致性级别得到写请求。一致性级别决定了多少副本节点一定要写成功确认才表示这个写请求成功。
②读操作:
协调者把这些请求送到当前回应最快的副本中。如果有多个节点连接,来自各个副本的数据将在内存比较看是否一致。如果不一致,那个有最新timestamp数据的副本请求,会被当作结果送给客户端。
三、Cassandra数据模型
1、集群
Cassandra数据库分布在多个一起操作的计算机节点上。最外层容器被称为群集。对于故障处理,每个节点包含一个副本,如果发生故障,副本将复制Cassandra按照环形格式将节排列在集群中,并为它们分配数据。
2、键空间
是Cassandra中数据的外层容器,是一个定义在节点上数据复制的命名空间。集群每个节点包含最少一个键空间。
键空间的基本属性:
①复制因子:是集群中将接受相同数据副本的计算机数。
②副本放置策略:只是把副本放在介质中的策略。
③列族:键空间是一个或者多个列族的列表容器。列族又是一个行集合的容器。每行包含有序列。列族表示数据的结构,每个键空间至少有一个,通常是许多列族。


列:是Cassandra的基本数据结构,具有三个值,即键或者列名称,值,时间戳
超级列:是一个特殊列,超级列存储了子列的map,即是存储了无限数量的列(但没有时间戳)
四、Cassandra数据库的安装
这里使用的是Ubuntu20版本!
①增加Cassandra源:
echo "deb https://downloads.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

②下载curl并且导入Cassandra公钥:
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -


③更新本地库:
(报错了!!!)
解决:
是因为一开导入源有问题,先把源删了,重新再导入一个源
sudo rm /etc/apt/sources.list.d/cassandra.sources.list
echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

④下载Cassandra:
sudo apt install Cassandra

⑤安装成功后,查看状态,并且用cqlsh检查:
(显示无法连接到!!!)
解决:原因好像是内存问题,不知道,反正困扰超级久,弄了好几天
进入root打开文件:
gedit /etc/cassandra/cassandra-env.shexit

修改一下文件!!
接着!!一定要输入Cassandra -R!!!!!!!一直没这一步一直连不上!!气死了

再验证,可以连接上了~
五、Cassandra的crud操作
1、创建键空间(create):
创建了一个名为sige的键空间,其中副本选择策略:SimpleStrategy简单策略,副本因子为3
使用describe命令查看所有的键空间检查:
2、修改键空间(alter):
3、删除键空间(drop):
4、使用键空间(use),并且查看其键空间中的列族(表)(describe):
5、创建列族(表)(create):
| 类型 | 变量可用类型 | 描述 |
| int | integer | 32位 有符号int |
| smallint | integer | 16位有符号int |
| text | string | UTF-8编码string |
| time | integer、string | 纳秒精度的时间 |
| timestamp | integer、string | 毫秒时间戳 |
| timeuuid | uuid | uuid |
| tinyint | integer | 8位有符号int |
| uuid | uuid | uuid |
| varchar | string | UTF8string |
| varint | integer | 任意精度证书 |
| 类型 | 变量可用类型 | 描述 |
| ascii | string | ASCII 字符串 |
| bigint | integer | 64位有符号long |
| blob | blob | 任意字节 |
| boolean | boolean | true、false |
| counter | integer | counter 列(64位有符号) |
| date | integer、string | 日期常量类型 |
| decimal | integer、float | 可变精度小数 |
| double | integer、float | 64位IEEE-754浮点 |
| duration | duratio | 纳秒精确度的持续时间 |
| float | integer、float | 32位IEEE-754浮点 |
| inet | string | IP地址、ipv4或者ipv6,因为没有ip类型,所以用string作为输入 |
6、Cassandra的主键
Cassandra的主键一般由分区键和集群键组成,有以下三个作用:
①唯一标识②确定数据在哪个分区③排序
(如果只有一列作为主键,那么这个主键也是分区键)

第一个是分区键,第二个是集群键,其中分区键是红色,集群键是蓝色,其他普通列是紫色。
例如:
7、删除表:
①drop table <tablename>
②截断表,永久删除truncate <tablename>
8、插入数据(insert into):

9、条件查询
注意事项:
①primary key只能用=查询
②第二主键支持= < > <= >=
③索引列只支持=
④非索引非主键字段过滤可以使用allow filtering(索引列就是紫色的)
虽然可以加allow filtering,但不建议,最好先写上第一主键(分区键 )
例如这里的a是分区键,bc是集群键:
分区键+集群键查询:
分区键查询:
集群键查询(会报错,需要加allow filtering):
10、排序(order by /desc)


11、删除数据(delete)

12、查看时间戳(writetime) :

其最后一行数字最大,是最新更新的数据。
六、python操作Cassandra
1、Cassandra依赖包和jupyter安装与验证
jupyter notebook是一个web应用程序,允许用户创建和共享包含实时代码,方程,可视化和说明文本的文档。用途包括:数据清洗和转换,数值模拟,统计建模,机器学习等等。
内核无需运行python,可以部署在互联网的服务器上,通过浏览器开发、部署和浏览项目。
jupyter的安装:
①本地资源库更新:
②下载python3-pip:

③安装jupyter:
④安装代码提示控件:

⑤启动:

⑥安装jupyter notebook主题:

⑦安装主题oceans16:

⑧安装Cassandra依赖包:
连接数据库Cassandra,必须确保有安装cluster模块,其是Cassandra--driver的中的子模块。
⑨验证:

⑩导入依赖,验证:
2、python简单操作Cassandra
1、导入Cassandra-driver依赖包中子模块cluster的cluster方法:
2、创建访问本地Cassandra例程的实例:
3、创建一个会话,连接实例:
4、创建一个键空间(session.execute):
5、查看所有键空间:
6、使用键空间:
7、创建表:
8、插入数据:
9、修改数据:
session.execute("update lab set c='aure' where a=31056 and b=21401")
10、查看所有数据:
rows=session.execute("select * from lab")
for row in rows:
print(row.a,row.b,row.c)
11、退出连接,关闭会话:
session.shutdown()
cluster.shutdown()

2130

被折叠的 条评论
为什么被折叠?



