重庆sem网站推广,电子商城系统平台,青岛济南网站制作,招一个程序员可以做网站吗目录 一#xff0e;数据库的部署与配置 二#xff0e;使用命令访问数据库 三#xff0e;数据库的设计 四#xff0e;编程实现数据库的访问 一#xff0e;数据库的部署与配置 1.在单个节点上对进行数据库的单机部署
#xff08;1#xff09;下载apache-cassandra-4.1.7-… 目录 一数据库的部署与配置 二使用命令访问数据库 三数据库的设计 四编程实现数据库的访问 一数据库的部署与配置 1.在单个节点上对进行数据库的单机部署
1下载apache-cassandra-4.1.7-bin.tar.gz上传到hadoop1 的/export/software目录
2使用解压缩命令tar -xzf /export/software/apache-cassandra-4.1.7-bin.tar.gz -C /export/servers/ 进行解压缩到/export/servers目录
3使用cd /export/servers命令进入/export/servers目录
4将Cassandra目录进行重命名mv apache-cassandra-4.1.7 apache-cassandra-4.1.7-standalone
5启动Cassandrabin/cassandra -R
6查看Cassandra启动信息tail -f logs/system.log
7检查状态bin/nodetool status
8连接数据库bin/cqlsh
9关闭Cassandrabin/nodetool stopdaemon
2.在多个节点上实现数据库的分布式部署
1在Hadoop1、Hadoop2和Hadoop3上分别执行systemctl stop firewalld和systemctldisable firewalld命令关闭防火墙
2在Hadoop1、Hadoop2、Hadoop3上分别执行ssh-keygenssh-copy-id hadoop1ssh-copy-id hadoop2ssh-copy-id hadoop3使各个节点可以免密登录
注在Hadoop2和Hadoop3上的执行结果与Hadoop1几乎相同故不再展示。
3进行免密登录测试在Hadoop1、Hadoop2和Hadoop3上分别执行ssh hadoop1ssh hadoop2ssh hadoop3可以免密登录即可
注在Hadoop2和Hadoop3上的执行结果与Hadoop1几乎相同故不再展示。
4在Hadoop1、Hadoop2和Hadoop3上分别上传压缩安装包
5在Hadoop1、Hadoop2和Hadoop3上分别解压缩apache-cassandra-4.1.7-bin.tar.gztar -xzf /export/software/apache-cassandra-4.1.7-bin.tar.gz -C /export/servers/
6分别修改Hadoop1、Hadoop2和Hadoop3的cassandra.yaml文件中的seeds、listen_address和rpc_address具体修改如下
Hadoop1seeds192.168.121.160listen_address192.168.121.160rpc_address192.168.121.160
Hadoop1seeds192.168.121.160listen_address192.168.121.161rpc_address192.168.121.161
Hadoop1seeds192.168.121.160listen_address192.168.121.162rpc_address192.168.121.162
注因修改过程类似此处只展示Hadoop1节点上的修改结果。
7在Hadoop1、Hadoop2和Hadoop3上使用命令分别启动Cassandra
bin/cassandra -R
8查看运行状态bin/nodetool status
9连接任一服务器均可bin/cqlsh hadoop1bin/cqlsh hadoop2bin/cqlsh hadoop3
二使用命令访问数据库
练习Cassandra的相关命令。
1.键空间创建、删除和查看键空间
1创建并查看键空间
CREATE KEYSPACE IF NOT EXISTS library_system
WITH REPLICATION { class : SimpleStrategy, replication_factor : 1
};
DESCRIBE KEYSPACES;
2删除并再次查看键空间
DROP KEYSPACE IF EXISTS library_system;
DESCRIBE KEYSPACES;
2.表创建表、设置复合型主键、修改表结构要求复合主键要包括分区键和分簇键数据类型要包含两种以上的集合类型和一种以上的自定义类型
以图书管理系统为例进行如下操作
1创建表包含复合型主键
在图书管理系统中我们设计一个图书借阅记录表复合主键由 book_id 和 borrower_id 组成分区键使用 book_id集群键使用 borrower_id。还使用了集合类型SET存储借阅的日期以及自定义类型user_info来存储借阅人的信息。
语句如下
CREATE TYPE IF NOT EXISTS library_system.user_info ( name TEXT, email TEXT, phone_number TEXT
); CREATE TABLE IF NOT EXISTS library_system.book_borrowing ( book_id UUID, -- 分区键 borrower_id UUID, -- 集群键 borrow_date DATE, -- 借阅日期 return_date DATE, -- 归还日期 status TEXT, -- 状态如 已借出、已归还 tags SETTEXT, -- 标签如 热门、推荐等 borrower_info FROZENuser_info, -- 自定义类型借阅人信息 PRIMARY KEY (book_id, borrower_id) -- 复合主键
);
其中book_id是分区键borrower_id 是集群键tags 是集合类型用来存储书籍标签borrower_info 是自定义类型 user_info用于存储借阅人的信息。
2修改表结构
添加一个新列来记录图书的借阅次数。
语句如下
ALTER TABLE library_system.book_borrowing ADD borrow_count INT;
3.数据查询
1查询所有数据
SELECT * FROM library_system.book_borrowing;
2根据分区键查询
SELECT * FROM library_system.book_borrowing WHERE book_id 3796171a-9a3d-45e6-8886-42601fed5c04;
3根据分区键和集群键查询 SELECT * FROM library_system.book_borrowing WHERE book_id b8cdcddb-4b1e-4937-83cd-dbfbf5288671 AND borrower_id b36f25ca-082c-4ded-afc9-6675eda47cd4;
4查询特定列
SELECT book_id, borrow_date, return_date FROM library_system.book_borrowing WHERE book_id b8cdcddb-4b1e-4937-83cd-dbfbf5288671 AND borrower_id b36f25ca-082c-4ded-afc9-6675eda47cd4;
5查询集合类型数据
SELECT tags FROM library_system.book_borrowing WHERE book_id b8cdcddb-4b1e-4937-83cd-dbfbf5288671 AND borrower_id b36f25ca-082c-4ded-afc9-6675eda47cd4;
6查询自定义类型数据
SELECT borrower_info FROM library_system.book_borrowing WHERE book_id b8cdcddb-4b1e-4937-83cd-dbfbf5288671 AND borrower_id b36f25ca-082c-4ded-afc9-6675eda47cd4;
4.数据更新数据插入、数据更新、数据删除
1数据插入
INSERT INTO library_system.book_borrowing (book_id, borrower_id, borrow_date, return_date, status, tags, borrower_info)
VALUES (uuid(), uuid(), 2024-01-01, 2024-01-15, Borrowed, {Popular, New Release}, {name: John Doe, email: johndoeexample.com, phone_number: 1234567890});
2数据更新
UPDATE library_system.book_borrowing
SET return_date 2024-01-20, status Returned
WHERE book_id b8cdcddb-4b1e-4937-83cd-dbfbf5288671 AND borrower_id b36f25ca-082c-4ded-afc9-6675eda47cd4;
3数据删除
①删除单条数据
DELETE FROM library_system.book_borrowing
WHERE book_id b8cdcddb-4b1e-4937-83cd-dbfbf5288671 AND borrower_id b36f25ca-082c-4ded-afc9-6675eda47cd4;
②删除整张表
TRUNCATE library_system.book_borrowing;
三数据库的设计
图书管理系统包含三个主要实体图书、读者和借阅记录。它们之间通过一个关系来进行联系借阅记录表示图书与读者之间的借阅关系本系统共设计三张表分别是图书表存储图书的相关信息、借阅记录表存储借阅的记录和读者表存储读者的基本信息。
1.数据库设计
1图书表
表名Books
列族Column Families
info存储图书的基本信息
author存储作者的详细信息
publisher存储出版商的信息
行键设计
行键book_id唯一标识每本图书
列名与存储内容
在info列族下
title书名
category类别如科幻、文学等
published_date出版日期
在author列族下
name作者名称
birth_date作者出生日期
在publisher列族下
publisher_name出版商名称
publisher_address出版商地址
2读者表
表名Readers
列族Column Families
info存储读者的基本信息
contact存储读者的联系信息例如地址、电话
行键设计
行键reader_id唯一标识每个读者
列名与存储内容
在info列族下
reader_name读者姓名
dob出生日期
在contact列族下
email电子邮件地址
phone_number电话号
address家庭住址
3借阅记录表
表名BorrowRecords
列族Column Families
info存储借阅信息
reader存储读者信息
行键设计
行键borrow_id唯一标识每次借阅记录
列名与存储内容
在info列族下
book_id借阅的图书ID
borrow_date借阅日期
return_date归还日期
在reader列族下
reader_name读者姓名
reader_id读者ID
4实体和关系的增删改查
①新增操作
新增图书向Books表中插入新的行包含图书ID行键及其对应的列族和列名。
新增借阅记录向BorrowRecords表中插入新的行包含借阅记录ID行键、借阅图书ID、借阅日期、归还日期、读者信息等。
新增读者向Readers表中插入新的行包含读者ID行键、姓名、出生日期、联系信息等。
②删除操作
删除图书通过图书ID删除Books表中的记录。
删除借阅记录通过借阅记录ID删除BorrowRecords表中的记录。
删除读者通过读者ID删除Readers表中的记录。
③更新操作
更新图书信息可以根据图书ID行键来更新Books表中的某些列比如更新书名、作者或出版日期等。
更新借阅记录可以根据借阅记录ID行键来更新借阅日期或归还日期等。
更新读者信息可以根据读者ID行键来更新Readers表中的读者姓名、地址、电话等。
④查询操作
查询某本图书的详细信息通过book_id查询Books表中的详细信息。
查询某本图书的借阅记录通过book_id在BorrowRecords表中查找所有借阅记录。
查询某位读者的借阅记录通过reader_id在BorrowRecords表中查找该读者的所有借阅记录。
查询某位读者的详细信息通过reader_id查询Readers表中的详细信息。
2.表设计与填充数据
1图书表 行键book_id 列族 列名 列值 B001 info title 《活着》 category 文学 published_date 1993-06-01 author name 余华 birth_date 1960-04-03 publisher publisher_name 作家出版社 publisher_address 北京市朝阳区 B002 info title 《百年孤独》 category 小说 published_date 1967-06-05 author name 加西亚·马尔克斯 birth_date 1927-03-06 publisher publisher_name 南海出版公司 publisher_address 上海市徐汇区
2读者表 行键reader_id 列族 列名 列值 R001 info reader_name 张三 dob 1990-05-15 contract email zhsanemail.com phone_number 123-4567-8901 address 北京市海淀区 R002 info reader_name 李四 dob 2005-02-28 contract email lisiemail.com phone_number 987-6543-2100 address 上海市浦东新区
3借阅记录表 行键borrow_id 列族 列名 列值 BR001 info Book_id B001 Borrow_date 2024-11-01 Return_date 2024-11-15 reader Reader_name 张三 Reader_id R001 BR001 info Book_id B002 Borrow_date 2024-11-02 Return_date 2024-11-20 reader Reader_name 李四 Reader_id R002 四编程实现数据库的访问
使用Python访问实现设计的图书管理系统的列式数据库步骤如下
1数据库连接连接到Cassandra集群并创建数据库library和数据表Books、Readers和BorrowRecords具体代码如下
from cassandra.cluster import Cluster # 连接到 Cassandra 集群
cluster Cluster([192.168.121.160]) 虚拟机的 IP 地址
session cluster.connect() # 创建 Keyspacelibrary
session.execute( CREATE KEYSPACE IF NOT EXISTS library WITH replication {class: SimpleStrategy, replication_factor: 1}
) # 使用创建的 Keyspace
session.execute(USE library) # 创建表结构 # 创建 Books 表
session.execute( CREATE TABLE IF NOT EXISTS Books ( book_id TEXT PRIMARY KEY, title TEXT, category TEXT, published_date TEXT, author_name TEXT, author_birth_date TEXT, publisher_name TEXT, publisher_address TEXT )
) # 创建 Readers 表
session.execute( CREATE TABLE IF NOT EXISTS Readers ( reader_id TEXT PRIMARY KEY, reader_name TEXT, dob TEXT, email TEXT, phone_number TEXT, address TEXT )
) # 创建 BorrowRecords 表
session.execute( CREATE TABLE IF NOT EXISTS BorrowRecords ( borrow_id TEXT PRIMARY KEY, book_id TEXT, borrow_date TEXT, return_date TEXT, reader_name TEXT, reader_id TEXT )
) print(Keyspace and tables created.)
结果如下图所示
2数据增加
分别给三张表插入数据具体代码如下
①插入图书记录
session.execute( INSERT INTO Books (book_id, title, category, published_date, author_name, author_birth_date, publisher_name, publisher_address) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
, (B001, 《活着》, 文学, 1993-06-01, 余华, 1960-04-03, 作家出版社, 北京市朝阳区))
结果如下图所示
②插入读者信息
session.execute( INSERT INTO Readers (reader_id, reader_name, dob, email, phone_number, address) VALUES (%s, %s, %s, %s, %s, %s)
, (R001, 张三, 1990-05-15, zhangsanemail.com, 123-4567-8901, 北京市海淀区))
结果如下图所示
③插入借阅记录
session.execute( INSERT INTO BorrowRecords (borrow_id, book_id, borrow_date, return_date, reader_name, reader_id) VALUES (%s, %s, %s, %s, %s, %s)
, (BR001, B001, 2024-11-01, 2024-11-15, 张三, R001))
结果如下图所示
3数据更新
更新读者的联系方式具体代码如下
session.execute( UPDATE Readers SET email %s WHERE reader_id %s
, (newemailemail.com, R001))
结果如下图所示
4数据查询
查询book_id为B001图书的详细信息具体代码如下
# 查询某本图书的详细信息
rows session.execute( SELECT * FROM Books WHERE book_id %s
, (B001,)) for row in rows: print(row)
结果如下图所示
5数据删除
删除book_id为B001图书的记录
session.execute( DELETE FROM Books WHERE book_id %s
, (B001,))
执行结果如下图所示 文章转载自: http://www.morning.roymf.cn.gov.cn.roymf.cn http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn http://www.morning.jybj.cn.gov.cn.jybj.cn http://www.morning.yfphk.cn.gov.cn.yfphk.cn http://www.morning.burpgr.cn.gov.cn.burpgr.cn http://www.morning.stph.cn.gov.cn.stph.cn http://www.morning.yhyqg.cn.gov.cn.yhyqg.cn http://www.morning.stlgg.cn.gov.cn.stlgg.cn http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn http://www.morning.ffbp.cn.gov.cn.ffbp.cn http://www.morning.zkdbx.cn.gov.cn.zkdbx.cn http://www.morning.hdrsr.cn.gov.cn.hdrsr.cn http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn http://www.morning.dpfr.cn.gov.cn.dpfr.cn http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.tmxtr.cn.gov.cn.tmxtr.cn http://www.morning.hqpyt.cn.gov.cn.hqpyt.cn http://www.morning.htqrh.cn.gov.cn.htqrh.cn http://www.morning.yjmns.cn.gov.cn.yjmns.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.nyqb.cn.gov.cn.nyqb.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.mooncore.cn.gov.cn.mooncore.cn http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn http://www.morning.zxxys.cn.gov.cn.zxxys.cn http://www.morning.gqcd.cn.gov.cn.gqcd.cn http://www.morning.yqpck.cn.gov.cn.yqpck.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.guofenmai.cn.gov.cn.guofenmai.cn http://www.morning.mqfkd.cn.gov.cn.mqfkd.cn http://www.morning.myhpj.cn.gov.cn.myhpj.cn http://www.morning.rmdwp.cn.gov.cn.rmdwp.cn http://www.morning.xdmsq.cn.gov.cn.xdmsq.cn http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn http://www.morning.tpkxs.cn.gov.cn.tpkxs.cn http://www.morning.tcxzn.cn.gov.cn.tcxzn.cn http://www.morning.wgtr.cn.gov.cn.wgtr.cn http://www.morning.guangda11.cn.gov.cn.guangda11.cn http://www.morning.lzbut.cn.gov.cn.lzbut.cn http://www.morning.gthc.cn.gov.cn.gthc.cn http://www.morning.yongkangyiyuan-pfk.com.gov.cn.yongkangyiyuan-pfk.com http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.pypbz.cn.gov.cn.pypbz.cn http://www.morning.tpnxr.cn.gov.cn.tpnxr.cn http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.tnhg.cn.gov.cn.tnhg.cn http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn http://www.morning.xhjjs.cn.gov.cn.xhjjs.cn http://www.morning.ctxt.cn.gov.cn.ctxt.cn http://www.morning.rbtny.cn.gov.cn.rbtny.cn http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn http://www.morning.gslz.com.cn.gov.cn.gslz.com.cn http://www.morning.ie-comm.com.gov.cn.ie-comm.com http://www.morning.dschz.cn.gov.cn.dschz.cn http://www.morning.tmfm.cn.gov.cn.tmfm.cn http://www.morning.wwdlg.cn.gov.cn.wwdlg.cn http://www.morning.tbrnl.cn.gov.cn.tbrnl.cn http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn http://www.morning.smry.cn.gov.cn.smry.cn http://www.morning.ylrxd.cn.gov.cn.ylrxd.cn http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn http://www.morning.wphzr.cn.gov.cn.wphzr.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.bnfsw.cn.gov.cn.bnfsw.cn http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn http://www.morning.tralution.cn.gov.cn.tralution.cn http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn http://www.morning.tzpqc.cn.gov.cn.tzpqc.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.dmnqh.cn.gov.cn.dmnqh.cn http://www.morning.llfwg.cn.gov.cn.llfwg.cn http://www.morning.gbpanel.com.gov.cn.gbpanel.com http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn http://www.morning.xkyqq.cn.gov.cn.xkyqq.cn http://www.morning.bdgb.cn.gov.cn.bdgb.cn http://www.morning.zkdbx.cn.gov.cn.zkdbx.cn http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn