前言
ScyllaDB 是用 C++ 重写的 Cassandra,每节点每秒处理 100 万 TPS。ScyllaDB 完全兼容 Apache Cassandra,拥有比 Cassandra 多 10x 倍的吞吐量,降低了延迟。 ScyllaDB 是性能优异的 NoSQL 列存储数据库。 ScyllaDB 在垃圾收集或者 Compaction 的时候不需要暂停;在常规生产负载的时候可以添加和删除节点。官网地址:https://www.scylladb.com
基于ScyllaDB如此高的性能,用于替换 Cassandra势在必行。ScyllaDB 安装建议直接使用Docker安装替代二进制安装,原因二进制步骤繁琐,且经常安装失败。同时ScyllaDB 对cpu和系统也需要较高版本。
scylladb 安装部署
1.首先下载docker镜像:
docker pull scylladb/scylla
1
2.暴露端口,持久化数据 部署scylladb
docker run -p 9042:9042 -it --name some-scylla --volume /var/lib/scylla:/var/lib/scylla -d scylladb/scylla
1
3.其他集群部署方式可以参考 docker镜像地址:https://hub.docker.com/r/scylladb/scylla/
scylladb 使用cqlsh创建数据库
1.首先进入scylladb
docker exec -it some-scylla cqlsh
1
2.新建一个数据库:
CREATE KEYSPACE IF NOT EXISTS myCas WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':1};
describe keyspaces;
use mycas;
1
2
3
golang gocql 使用
因为scylladb 直接是兼容Cassandra,故我们可以直接使用Cassandra的golang客户端github.com/gocql/gocql
package dbtest
import (
"testing"
"github.com/gocql/gocql"
"github.com/labstack/gommon/log"
"fmt"
)
var session *gocql.Session
//初始化
func init() {
cluster := gocql.NewCluster("127.0.0.1:9042")
cluster.Keyspace = "mycas"
cluster.Consistency = gocql.Consistency(1)
cluster.NumConns = 3
var err error
session, err = cluster.CreateSession()
if err != nil {
log.Panic("start", err)
return
}
}
//创建表
func TestScylla_Create(t *testing.T) {
query := fmt.Sprintf(`CREATE TABLE user(id int PRIMARY KEY, user_name varchar);`)
session.Query(query).Exec()
}
//插入数据
func TestScylla_Insert(t *testing.T) {
query := fmt.Sprintf(`INSERT INTO user (id,user_name) VALUES (1,'zhangsan')`)
err := session.Query(query).Exec()
if err != nil {
fmt.Println(err)
}
}
//删除表
func TestScylla_Drop(t *testing.T) {
query := fmt.Sprintf(`drop table user;`)
err := session.Query(query).Exec()
if err != nil {
fmt.Println(err)
}
}
//查询数据
func TestScylla_Select(t *testing.T) {
query := fmt.Sprintf("SELECT * from user;")
iter := session.Query(query).Iter()
defer func() {
if iter != nil {
iter.Close()
}
}()
var id int
var name string
for iter.Scan(&id, &name) {
fmt.Println(id, name)
}
}
//批量执行数据
func TestScylla_Batch(t *testing.T) {
query := fmt.Sprintf(`BEGIN BATCH
UPDATE user SET user_name = 'asdqw' where id = %d;
INSERT INTO user (id,user_name) VALUES (2,'zhangsan');
APPLY BATCH;`, 1)
err := session.Query(query).Exec()
if err != nil {
fmt.Println(err)
}
}
————————————————
版权声明:本文为CSDN博主「逆月林」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/niyuelin1990/article/details/79624530
scylladb 安装及 golang 客户端gocql使用
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)
技术专家
查看更多- 飘絮絮絮丶专家