文章目录

  • 1、Cassandra 简介
    • 1.1、简述
    • 1.2、突出特点
  • 2、CentOS 操作 Cassandra
    • 2.1、下载 Cassandra
    • 2.2、检测是否安装了java环境
    • 2.3、修改配置文件 cassandra.yaml
    • 2.4、修改配置文件 cassandra-env.sh
    • 2.5、后台启动
    • 2.6、检测cassandra进程是否开启
  • 3、Python3 操作Cassandra
    • 3.1、安装 pycassa
    • 3.2、效果图
    • 3.3、简单的讲解
      • 3.3.1、创建会话(如果有该会话直接连接即可)
      • 3.3.2、创建表单(如果有该表单就没必要创建了)
      • 3.3.3、进行增、删、改、查
      • 3.3.4、关闭会话连接
    • 3.4、完整源码
  • 4、源码分享Github

1、Cassandra 简介

1.1、简述

Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra集群来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。

1.2、突出特点

  • 模式灵活
    使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。

  • 真正的可扩展性
    Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。

  • 多数据中心识别
    你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。

2、CentOS 操作 Cassandra

2.1、下载 Cassandra

官方下载地址:http://cassandra.apache.org/download/
地址列表:https://supergsego.com/apache/cassandra/

吐槽一下Cassandra安装包的下载速度太慢了,所以我上传了一份到csdn
csdn下载地址:https://download.csdn.net/download/u014597198/11252289

下载 2.2.14 版本

curl -O https://supergsego.com/apache/cassandra/2.2.14/apache-cassandra-2.2.14-bin.tar.gz

解压

tar -zxvf apache-cassandra-2.2.14-bin.tar.gz

移动文件夹

mv apache-cassandra-2.2.14 /usr/local/cassandra

效果

2.2、检测是否安装了java环境

如果没装,安装一个java环境即可,装了的话可以不用重复装

2.3、修改配置文件 cassandra.yaml

  • 配置文件
  • 集群名称,可以不改
  • 去除掉注释,数据文件存放路径
  • 去除掉注释,操作日志文件存放路径
  • 去除掉注释,缓存文件存放路径
  • 集群种子节点ip,新加入集群的节点从种子节点中同步数据。可配置多个,中间用逗号隔开
  • 需要监听的IP或主机名。改成本机IP
    这里解释一下 listen_address :该配置是为了告诉集群中其他节点如何连接到该节点上。永远不要指定0.0.0.0,总是错的。
    一个集群中该节点的 address 必须唯一,因为该地址就像一个独一无二的身份id,只有知道该连接,Cassandra集群才可以建立连接,可以设置为空。Cassandra 通过 InetAddress.getLocalHost() 可以从系统获取本地地址。
    如果 Cassandra 找不到正确的地址,你可以指定IP地址或者主机名称。
    如果是单节点集群,你可以使用默认配置( localhost )。
  • 修改 rpc_address(用于监听客户端连接的地址)
    解释一下 rpc_address :默认值localhost,Thrift RPC 服务和本地传输服务都会使用该地址,简单的可以理解为client与Cassandra服务端通信的地址。如果不设置该项,将会采用listen_address的设置。该配置可以设置为0.0.0.0,但是如果这样设置了,你必须设置broadcast_rpc_address为其他地址,broadcast_rpc_address不能被设置为0.0.0.0,broadcast_rpc_address是rpc地址广播到驱动和其他节点上的地址,默认值1.2.3.4。
  • 默认端口9160端口,可以不改

2.4、修改配置文件 cassandra-env.sh

  • 这里如果不更改,机器默认的是这样的

    这里可以按照我们的需要进行更改,我的更改如下

2.5、后台启动

nohup /usr/local/cassandra/bin/cassandra > /usr/local/cassandra/cassandra.log 2>&1 &

2.6、检测cassandra进程是否开启

ps aux|grep cassandra

刚打开:

过一段时间,已经初始化,再次查询进程

3、Python3 操作Cassandra

3.1、安装 pycassa

pip install cassandra-driver

github地址:https://github.com/datastax/python-driver

如果上述命令没成功,可以用以下命令直接从github上拉取

pip install git+https://github.com/datastax/python-driver.git

3.2、效果图

3.3、简单的讲解

3.3.1、创建会话(如果有该会话直接连接即可)

# 创建会话
def create_key_space(keyspacename,ster):session = ster.connect()return session# 连接会话(获取指定keyspace的会话连接)
def connect_key_space(keyspacename,ster):session = ster.connect(keyspace=keyspacename)return session

3.3.2、创建表单(如果有该表单就没必要创建了)

    session.execute("create table stu(name text, id int primary key);")# 创建tableprint("创建table")

3.3.3、进行增、删、改、查

    # 增加sql = 'insert into stu(id,name) values(%s, %s)'session.execute(sql, (1, 'ShaShiDi'))session.execute(sql, (2, 'ShaShiDi'))print("增加id=1和2,name=ShaShiDi")# 更新sql='update stu set name=%s where id=%s'session.execute(sql, ('SHA SHI DI', 2))print("根据ID更新某项的字段,这里更新id=2的name为SHA SHI DI")# 查询所有sql = 'select * from stu'rs = session.execute(sql)print("查询所有:",rs.current_rows)# 主键id查询/条件查询sql = 'select * from stu where id=%s'rs = session.execute(sql, [2]) #另一种写法,其它类似print("查询(写法1):",rs.current_rows)rs = session.execute(sql, (2,))print("查询(写法2):",rs.current_rows)# 删除sql = 'delete from stu where id=%s 'session.execute(sql, (2,))print("按照ID删除某项")

3.3.4、关闭会话连接

    # 关键连接session.shutdown()

3.4、完整源码

注意以下源码是未创建会话,直接连接的会话,在未创建会话之前,要先创建会话哦~

# -*- coding:utf8 -*-
from cassandra.cluster import Cluster
from cassandra.policies import RoundRobinPolicy# 创建会话
def create_key_space(keyspacename,ster):session = ster.connect()return session# 连接会话(获取指定keyspace的会话连接)
def connect_key_space(keyspacename,ster):session = ster.connect(keyspace=keyspacename)return session# 打印会话连接key_spaces
def print_key_spaces(ster):print("-------打印会话连接key_spaces------")print(ster.metadata.keyspaces)print("-----------------------------------")# 打印表单tables
def print_tables(ster,keyspacename):print("------------打印表单tables---------")print(ster.metadata.keyspaces[keyspacename].tables)print("-----------------------------------")if __name__ == '__main__':# 获取集群ster = Cluster(contact_points=['127.0.0.1'],port=9042,load_balancing_policy=RoundRobinPolicy())# 会话连接名称keyspacename = "demoshashidi"session = connect_key_space(keyspacename, ster)print_key_spaces(ster)print_tables(ster, keyspacename)session.execute('drop table stu;')# 删除tableprint("删除table")session.execute("create table stu(name text, id int primary key);")# 创建tableprint("创建table")# 增加,和update类似sql = 'insert into stu(id,name) values(%s, %s)'session.execute(sql, (1, 'ShaShiDi'))session.execute(sql, (2, 'ShaShiDi'))print("增加id=1和2,name=ShaShiDi")# 更新,和insert类似sql='update stu set name=%s where id=%s'session.execute(sql, ('SHA SHI DI', 2))print("根据ID更新某项的字段,这里更新id=2的name为SHA SHI DI")# 查询所有sql = 'select * from stu'rs = session.execute(sql)print("查询所有:",rs.current_rows)# 主键id查询/条件查询sql = 'select * from stu where id=%s'rs = session.execute(sql, [2]) #另一种写法,其它类似print("查询(写法1):",rs.current_rows)rs = session.execute(sql, (2,))print("查询(写法2):",rs.current_rows)# 删除sql = 'delete from stu where id=%s 'session.execute(sql, (2,))print("按照ID删除某项")# 查询所有sql = 'select * from stu'rs = session.execute(sql)print("查询所有:",rs.current_rows)# 关键连接session.shutdown()

4、源码分享Github

https://github.com/ShaShiDiZhuanLan/Demo_SQL_Python

非关系型数据库 之 列数据库 Cassandra 的使用(Python3)相关推荐

  1. 2019年最受程序员欢迎的10大非关系型(NoSQL)数据库

    数据库是一组信息的集合,这些信息被组织起来以便于访问.管理和更新.在开始介绍最流行的NoSQL数据库之前.您必须了解NoSQL数据库.大多数程序员不知道它代表什么.它的全称是Not Only SQL. ...

  2. 行式数据库与列式数据库

    开发用了很久的Vertica,知道它是"列式数据库"但一直没有去研究过列式数据库的一些特性,现在来总结一下. 列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处 ...

  3. 数据库介绍与数据库安装

    一.课前介绍 数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件 ...

  4. 非关系型数据库-NoSQL(Redis)

    文章目录 一.什么是 NoSQL? 二.NoSQL 的特性? 三.什么是 Redis? 四.Redis 安装部署 4.1 下载安装包 4.2 编译安装 4.3 修改配置文件 4.4 启动服务 4.5 ...

  5. MongoDB非关系型数据库开发手册

    一:NoSql数据库 什么是NoSQL? NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称. NoSQL用于超 ...

  6. 关系型数据库(Relational Database)与非关系型数据库(NoSQL)的区别:(MySQL,Redis,Memcache,MongoDB)

    Table of Contents 关系型数据库(Relational Database) 什么是关系数据库 什么是SQL? 关系数据库的结构 关系模型 关系数据库的好处 数据一致性 隔离性和原子性 ...

  7. 简述关系型数据库和非关系型数据库

    当前数据库分为关系型数据库和非关系型数据库 关系型数据库 关系型数据库:指采用了关系模型来组织数据的数据库. 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据 ...

  8. 非关系型数据库之Redis【redis安装】

    这里写目录标题 写在前面 什么是 NoSql ? NoSql 的分类 键值 (Key-Value) 存储数据库 列存储数据库 文档型数据库 图形 (Graph) 数据库 1. Redis 1.1 什么 ...

  9. 关系型数据库和非关系型数据

    一.关系型数据库 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织 当今十大主流的关系型数据库 Oracle,Microsoft SQL Server,MySQL,Post ...

最新文章

  1. 基金委新规:填写论文成果,不再标注通讯和一作!影响有多大?
  2. 农产品加工进销存单_果蔬行业,用营销版在线进销存3秒开单收款!
  3. linux之ps命令
  4. 抓包分析arp攻击Linux,从抓包分析角度分析arp攻击
  5. kindeditor java上传_富文本编辑器kindeditor上传图片的配置方法
  6. [转载] python3 格式化字符串 f-string 介绍
  7. 46. 避免 CSS 表达式(7)
  8. [LeetCode]347. 前 K 个高频元素
  9. MyExcel 2.1.4 版本发布,多项功能增强
  10. Android四大组件——BroadcastReceiver普通广播、有序广播、拦截广播、本地广播、Sticky广播、系统广播
  11. WIN10-NVME硬盘-无U盘安装-Ubuntu22.04-双系统(非虚拟机)
  12. 海信JAVA开发笔试题_JAVA设计模式之【工厂方法模式】
  13. !!!Adb 抓不住Genymotion的解决方法
  14. 废旧HHD硬盘的使用-雕刻机/砂轮/3D打印机,超乎想象!
  15. iphone隐藏底条_iphone隐藏底部小横条,无需越狱
  16. 双目视觉集合框架详解
  17. XP SP3桌面IE图标不见了,如何找回?
  18. 机器学习的数学基础 矩阵论与概率论
  19. 【文献阅读】VQA能干啥?VQA相关现实应用和未来挑战(Silvio Barraa等人,ArXiv,2021)
  20. GameCanvas类

热门文章

  1. AndroidStudio模拟器无声
  2. mysql workbench 复制数据库/schema。sed: no input files
  3. SBT30100VCT-ASEMI肖特基二极管SBT30100VCT
  4. 通信模组中的常见术语
  5. 【转发】RDV/IDV/VDI三种模式
  6. 画西瓜图的html代码,西瓜图片卡通简笔画步骤
  7. iApp通知系统更新图库
  8. 【开源要闻】Canonical发布新OpenStack工具、Kubernetes访客引导方法
  9. 城市出行半径大数据报告:一线城市通勤压力大 境外游最爱去泰国
  10. (附源码)SSM校园食堂订餐系统JAVA计算机毕业设计项目