学习笔记整理-nosql复习2-Cassandra数据库

目录

一、Cassandra特点

二、Cassandra读写过程

三、Cassandra数据模型

1、集群

2、键空间

 四、Cassandra数据库的安装

 五、Cassandra的crud操作

六、python操作Cassandra

1、Cassandra依赖包和jupyter安装与验证

 2、python简单操作Cassandra


 

 

一、Cassandra特点

        是一个开源、分布式分散式/分布式存储系统(数据库),用于管理遍布世界各地的大量半结构化数据。提供高可用性服务,没有单点故障。
①高性能②高可用性③高可扩展性

二、Cassandra读写过程

①写操作:

        对于节点在同一个本地dataa center中的协调者(客户端连接到数据中心的第一个节点),它把写请求发给所有拥有这一行的副本节点。只要所有副本节点可用,他们会忽略客户端设置的一致性级别得到写请求。一致性级别决定了多少副本节点一定要写成功确认才表示这个写请求成功。

②读操作:

        协调者把这些请求送到当前回应最快的副本中。如果有多个节点连接,来自各个副本的数据将在内存比较看是否一致。如果不一致,那个有最新timestamp数据的副本请求,会被当作结果送给客户端。

三、Cassandra数据模型

1、集群

        Cassandra数据库分布在多个一起操作的计算机节点上。最外层容器被称为群集。对于故障处理,每个节点包含一个副本,如果发生故障,副本将复制Cassandra按照环形格式将节排列在集群中,并为它们分配数据。

2、键空间

        是Cassandra中数据的外层容器,是一个定义在节点上数据复制的命名空间。集群每个节点包含最少一个键空间

        键空间的基本属性:
①复制因子:是集群中将接受相同数据副本的计算机数。
②副本放置策略:只是把副本放在介质中的策略。
③列族:键空间是一个或者多个列族的列表容器。列族又是一个行集合的容器。每行包含有序列。列族表示数据的结构,每个键空间至少有一个,通常是许多列族。

71f9f48efabd472ab67caed2ee3386a0.png

1571241fe7b84d76b5ed1d64825d04fe.png

列:是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

9849a047c764414bba3aed24e719a9e8.png

 ②下载curl并且导入Cassandra公钥:

curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -

d94243ecc65e486589b1229f60296810.png

0c24a9b824464c41a52fcf4247f63eea.png

 ③更新本地库:
300c61dc3fdf42d8b9ef7ddfba51b881.png(报错了!!!)
解决:

是因为一开导入源有问题,先把源删了,重新再导入一个源

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

727ffeb463214c4a8b56cd5e55352f82.png

 ④下载Cassandra:

sudo apt install Cassandra

b0aa8cf2ec7149d2900aa23357deef80.png

 ⑤安装成功后,查看状态,并且用cqlsh检查:
7eb2e1e57190414792c792b20359707b.png(显示无法连接到!!!)
解决:原因好像是内存问题,不知道,反正困扰超级久,弄了好几天

进入root打开文件:

gedit /etc/cassandra/cassandra-env.shexit

c67822d755a645f9acf84320b4533906.png

修改一下文件!!
3f4e80fa0df243e386595a7e264df205.png

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

ebf6d733ca074b3287a8668841bfea21.png

再验证,可以连接上了~
e36c875fcd6a49ab9f32ae07a1423919.png

 五、Cassandra的crud操作

1、创建键空间(create):
289aa3b0def74c9cbfd603e1e6484bd3.png

 创建了一个名为sige的键空间,其中副本选择策略:SimpleStrategy简单策略,副本因子为3
使用describe命令查看所有的键空间检查:
cfd38dbb98484bc0b20a343857678424.png

2、修改键空间(alter):
f2157567d35d4135bcf4a9a64779bb10.png

 3、删除键空间(drop):
1344259f6db9406586702faebdc24008.png

 4、使用键空间(use),并且查看其键空间中的列族(表)(describe):
f56e993a739040e4858a8b156a4594c6.png

 5、创建列族(表)(create):
9b8cdd9ece9b43ddbcba44f96371a18c.png

类型

变量可用类型

描述

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的主键一般由分区键和集群键组成,有以下三个作用:
①唯一标识②确定数据在哪个分区③排序
(如果只有一列作为主键,那么这个主键也是分区键)

dfa2a52ad0af4f6b8f6a7b3b01523a4e.png

 第一个是分区键,第二个是集群键,其中分区键是红色,集群键是蓝色,其他普通列是紫色。
例如:
c061ce5a73584aa1805836a259b04872.png

ea7ff19a621e4885a9781cf5225dbe1c.png 

7、删除表:
①drop table <tablename>
②截断表,永久删除truncate <tablename>

8、插入数据(insert into): 

ba7eda3e8cf94d7e9c45a742d773d0b8.png

 9、条件查询

注意事项:
①primary key只能用=查询
②第二主键支持= < > <= >=
③索引列只支持=
④非索引非主键字段过滤可以使用allow filtering(索引列就是紫色的)
虽然可以加allow filtering,但不建议,最好先写上第一主键(分区键 )
例如这里的a是分区键,bc是集群键:
分区键+集群键查询:
028040a603954a33830941479b37765b.png

 分区键查询:
b9074bc106094f66990395128533c146.png

 集群键查询(会报错,需要加allow filtering):
9cef5c772e8240b7a25f2704d8cb73c9.png

 10、排序(order by /desc)

bf48f8828baf42aa87c44b04385fdfcf.png

7572d472c32e43038ebb8c0ca4c1c3c0.png

 11、删除数据(delete) 

1832f6ed90844a1384a07288add6b611.png

12、查看时间戳(writetime) :

964b224aac3c4d90a93fa7c9d837de0d.png

 其最后一行数字最大,是最新更新的数据。

六、python操作Cassandra

1、Cassandra依赖包和jupyter安装与验证

        jupyter notebook是一个web应用程序,允许用户创建和共享包含实时代码,方程,可视化和说明文本的文档。用途包括:数据清洗和转换,数值模拟,统计建模,机器学习等等。

        内核无需运行python,可以部署在互联网的服务器上,通过浏览器开发、部署和浏览项目。

jupyter的安装:
①本地资源库更新:
13361b2b21a041c690508d274dc85cec.png

 ②下载python3-pip:
25b97b5822cb44d4b3ea6aacf18ec5fd.png

1af69009f3be45bab7e0062fdaa33242.png

 ③安装jupyter:
8f4436ad1c8b4ce0bf37ff1e3e4f2179.png

 ④安装代码提示控件:
288b320a3a9a4f8b97bcce6ed7b4ecdd.png

4700355ae5f34c5195b8c5c14d39652e.png

 ⑤启动:
ce1952c39ea54e82b5ca5dc489cf2a46.png

d685b70b3b774690a0cc1ba03b5e98cc.png

 ⑥安装jupyter notebook主题:
ac31c415a44c483197c39e2170d331d3.png

b65f6257f7564cdf98678f9b7fc791d5.png 8dc1441495da4f5fa364679da9f08020.png

⑦安装主题oceans16:
 0c7455a0de664fbd92bf0ebe0c0a751f.png

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

b4f3332a3e0f49ffa0224ec87d427725.png

 ⑩导入依赖,验证:
ffa91c523fbb46148484849dfd249b0a.png

 2、python简单操作Cassandra

 1、导入Cassandra-driver依赖包中子模块cluster的cluster方法:
036a51c499d84d32bb2302db266b0756.png

2、创建访问本地Cassandra例程的实例:
bd644979b81c482dac23ca6388ebea38.png 

3、创建一个会话,连接实例:
6219892bbd99430c9865de45c92e82e6.png

4、创建一个键空间(session.execute):
a85cb6f941d64ca88134d838307826bb.png

5、查看所有键空间:
eb72a7e847534ab3838fa849d8a5fa76.png

 6、使用键空间:
7de678ffb43a49579b1d19b4f38edb79.png

 7、创建表:
325b0560509847498cfc4c5d626ea9d4.png

8、插入数据:
798e3dd5eb0347a69582c1acdba2c8fd.png

 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()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aure_xl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值