技术好文:scyllaDB基本使用

简介: 技术好文:scyllaDB基本使用

目录


1.scylla部署docker单机部署docker集群部署2.在cqlsh中操作scyllaDB3.scyllaDB的操作创建keysapce创建表插入数据到scylla表查看scylla集群状态查看表状态增加字段删除scylla表 //代码效果参考:http://www.lyjsj.net.cn/wx/art_23881.html

4.spark和scyllaDB集成使用spark读写scyllaDB

回到顶部1.scylla部署


docker单机部署


可以使用docker镜像来启动scyllaDB


docker集群部署


也可以使用docker镜像来部署scyllaDB集群


?1234567docker run --name scylla -p 9042:9042 -p 9160:9160 -p 10000:10000 -p 9180:9180 -v /var/lib/scylla:/var/lib/scylla -d scylladb/scylla docker run --name scylla-node2 -p 8042:9042 -p 8160:9160 -p 1000:10000 -p 8180:9180 -v /var/lib/scylladb2:/var/lib/scylla -d scylladb/scylla --seeds="$(docker inspect --format='{ { .NetworkSettings.IPAddress }}' scylla)" docker run --name scylla-node3 -p 10042:9042 -p 10160:9160 -p 1100:10000 -p 10180:9180 -v /var/lib/scylladb3:/var/lib/scylla -d scylladb/scylla --seeds="$(docker inspect --format='{ { .NetworkSettings.IPAddress }}' scylla)" docker run --name scylla-node4 -p 11042:9042 -p 11160:9160 -p 1200:10000 -p 11180:9180 -v /var/lib/scylladb4:/var/lib/scylla -d scylladb/scylla --seeds="$(docker inspect --format='{ { .NetworkSettings.IPAddress }}' scylla)"


回到顶部2.在cqlsh中操作scyllaDB


在cqlsh中可以使用CQL (the Cassandra Query Language) 来对scyllaDB做一些基本操作


?12345sh-4.2# cqlshConnected to at 172.17.0.3:9042.【cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4】Use HELP for help.cqlsh>


参考:CQLSh: the CQL shell


回到顶部3.scyllaDB的操作


scylla数据存储于table当中,而table由keyspace分组


创建keysapce


名字叫做test


?1234cqlsh> CREATE KEYSPACE IF NOT EXISTS test WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':1};cqlsh> describe keyspaces; system_schema system_auth system system_distributed test system_traces


REPLICATION参数指定了备份策略,使用了REPLICATION后必须指定class,其中class有SimpleStrategy,NetworkTopologyStrategy,在这里由于是单机测试,所以我指定副本数量是1


创建表


?123456789101112131415cqlsh> use test;cqlsh:test

PRIMARY KEY参数指定了主键,会按照user_id,mtime的顺序来排列key


CLUSTERING参数指定了mtime按照降序排列


插入数据到scylla表


?12345INSERT INTO demo (user_id,str,mtime) VALUES (6,'test','2021-10-09 07:00:00') using TTL 86400;


可以看到相同的key user_id会聚合到一起,相同的user_id中mtime按照降序排列


?123456789101112cqlsh:test

class="bash plain"] select * from demo; user_id | mtime | str---------+---------------------------------+------- 5 | 2021-10-09 02:00:00.000000+0000 | Panda 1 | 2021-10-09 04:00:00.000000+0000 | Kay 1 | 2021-10-01 02:00:00.000000+0000 | Kay 2 | 2021-10-09 03:00:00.000000+0000 | Snail 2 | 2021-10-01 02:00:00.000000+0000 | Snail 6 | 2021-10-09 07:00:00.000000+0000 | test (6 rows)

参考:Data Definition 


查看scylla集群状态


?12345678910111213【root@6a30e1b8fc71 /】# nodetool statusUsing /etc/scylla/scylla.yaml as the config fileDatacenter: datacenter1=======================Status=Up/Down|/ State=Normal/Leaving/Joining/Moving-- Address Load Tokens Owns Host ID RackUN 172.17.0.2 1.49 MB 256 ? //代码效果参考:http://www.lyjsj.net.cn/wz/art_23877.html

eaee8765-450d-4d4e-a7b5-2ed4c6b20df3 rack1UN 172.17.0.5 1.04 MB 256 ? 17153bb7-f4f1-4436-bc49-f1eca3409040 rack1UN 172.17.0.4 1.03 MB 256 ? 25fd6224-7edc-4161-bf49-ba6fe51c9f73 rack1UN 172.17.0.6 1.04 MB 256 ? 3d5757d2-dc5f-4ba4-8d90-e02eb9d4c255 rack1 Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless  

查看表状态


?1nodetool tablestats my_ks.my_tb


增加字段


?1ALTER TABLE xx.xx ADD col_name col_type;


删除scylla表


?1drop table xx.xx;


回到顶部4.spark和scyllaDB集成


使用spark读写scyllaDB


由于scyllaDB兼容cassandra API,所以可以参考:


?1


或者可以参考我的文章:Spark学习笔记——读写ScyllaDB


其他:sizing-your-scylla-cluster


MySQL 亿级数据迁移 之 Cassandra概述

相关文章
|
NoSQL 前端开发
cassandra nodetool常用命令介绍
简介 nodetool是cassandra自带的外围工具,通过JMX可以动态修改当前进程内存数据,注意cassandra是无主对等架构,默认的命令是操作本机当前进程,例如repair,如果需要做全集群修复,需要在每台机器上执行对应的nodetool命令。
4608 0
|
NoSQL MongoDB SQL
MongoShake最佳实践
mongoshake最佳实践,到底该怎么玩?
22984 0
|
消息中间件 Apache RocketMQ
rocketmq客户端发送消息报错和超时问题
org.apache.rocketmq.remoting.exception.RemotingTimeoutException: wait response on the channel <10.0.21.69:10911> timeout, 1000(ms)、 closeChannel: close the connection to remote address
5383 1
rocketmq客户端发送消息报错和超时问题
|
NoSQL 测试技术 Linux
VLDB顶会论文Async-fork解读与Redis在得物的实践(2)
VLDB顶会论文Async-fork解读与Redis在得物的实践
540 0
VLDB顶会论文Async-fork解读与Redis在得物的实践(2)
|
Java
The superclass “javax.servlet.http.HttpServlet“ was not found on the Java Build Path的解决方案
The superclass “javax.servlet.http.HttpServlet“ was not found on the Java Build Path的解决方案
935 0
The superclass “javax.servlet.http.HttpServlet“ was not found on the Java Build Path的解决方案
|
人工智能 自然语言处理 搜索推荐
浪潮信息 Yuan-embedding-1.0 模型登顶MTEB榜单第一名
浪潮信息Yuan-Embedding-1.0模型在C-MTEB评测基准中荣获Retrieval任务第一名,推动中文语义向量技术发展
2967 7
浪潮信息 Yuan-embedding-1.0 模型登顶MTEB榜单第一名
|
存储 消息中间件 缓存
【Cassandra从入门到放弃系列 一】概述及基本架构
【Cassandra从入门到放弃系列 一】概述及基本架构
4886 1
|
Shell Docker 容器
docker给容器分配固定ip
docker给容器分配固定ip
3049 3
|
机器学习/深度学习 人工智能 并行计算
【人工智能】CPU、GPU与TPU:人工智能领域的核心处理器概述
在人工智能和计算技术的快速发展中,CPU(中央处理器)、GPU(图形处理器)和TPU(张量处理器)作为核心处理器,各自扮演着不可或缺的角色。它们不仅在性能上各有千秋,还在不同的应用场景中发挥着重要作用
2571 2
|
存储 关系型数据库 MySQL
【MySQL系列笔记】分库分表
分库分表是一种数据库架构设计的方法,用于解决大规模数据存储和处理的问题。 分库分表可以简单理解为原来一个表存储数据现在改为通过多个数据库及多个表去存储,这就相当于原来一台服务器提供服务现在改成多台服务器组成集群共同提供服务。
853 8