Cassandra 最佳实践系列(1) - CQL QuickStart

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: Cassandra最佳实践之简单搭建以及使用cql

简易搭建单节点C*

本文介绍如何简单的搭建一个Cassandra的单节点,以后会介绍如何构建多节点的Cassandra集群;为了搭建一个单节点我们需要做下面几件事情:

1.节点部署JAVA 基本环境;
2.获取需要的Cassandra二进制包:可以编译源码获取也可以直接官网下载3.11.5的bin包;
3.tar xf apache-cassandra-3.11.5-bin.tar.gz
4.cd apache-cassandra-3.11.5/bin目录;

5.执行./cassandra 启动单节点C*;

接下来你在bin目录下面通过执行./nodetool status 如果观测到下面的状态,就证明单节点的Cassandra已经正确启动。
20191209201821

注意

因为我们没有修改Cassandra的配置文件,这里单节点的进程都是使用默认配置,比如使用默认256的vnode,使用/var/lib/cassandra/data做数据存储目录,使用/var/lib/cassandra/commitlog做commitlog存储目录等, 默认绑定localhost,默认没有账户密码认证。

访问C*

通过cqlsh

bin目录下面的cqlsh类似于访问Cassandra的一个client,默认情况指定one级别去访问Cassandra,由于我们此处设置是sever绑定localhost,且cqlsh默认访问localhost,所以直接bin目录下面./cqlsh既可以访问到上面部署的单节点Cassandra,如下图:

20191209202549

我们可以通过cqlsh执行常见的Cassandra DDL、DML操作,比如这里我建一个keyspace ks以及在keyspace里面建一个table tb。分别使用如下cql:

CREATE KEYSPACE ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
use ks;
CREATE TABLE tb ( name text PRIMARY KEY ,age int);

我们可以在Cassandra里面通过执行:

DESCRIBE ks;

获取得到该keyspace下面的所有相关的keyspace、table、index、mv的定义;如下图:

20191209202958

我们也可以在这个表 tb里面执行insert操作以及select操作,如下图:

20191209203133

通过java driver

当然我们实际业务开发的时候很难通过cql去执行一些常见的dml操作,我们这里使用datastax 公司开源的java-driver进行常见的cassandra访问,当然也有其他版本以及语言的driver(见这里).

使用java driver的时候,只需要新建maven项目,然后pom.xml里面添加如下配置(我们这里使用3.8.0的java driver做演示):

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-core</artifactId>
    <version>3.8.0</version>
 </dependency>

然后我们的演示代码如下:

package com.aliyun.cstar.driver.test;


import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;

public class Test 
{
    static String[] CONTACT_POINTS = {"127.0.0.1"};
    static int PORT = 9042;

    public static void main(String[] args) {

      Cluster cluster = null;
      try {
        System.out.println("CLUSTER CONNECT !");
        //cluster operation 
        cluster = Cluster.builder().addContactPoints(CONTACT_POINTS).withPort(PORT).build();
        Session session = cluster.connect();

        System.out.println("CREATE KEYSPACE AND TABLE !");
        //DDL:keyspace and table operation
        session.execute("CREATE KEYSPACE IF NOT EXISTS  newks WITH replication "
                + "= {'class':'SimpleStrategy', 'replication_factor':1};");

        session.execute("CREATE TABLE IF NOT EXISTS  newks.newtb (name text PRIMARY KEY, age int)");
        
        System.out.println("INSERT INTO TABLE AND SELECT TABLE !");
        //DML:insert and select
        session.execute("INSERT INTO newks.newtb (name, age) VALUES('xla', 22)");
        session.execute("INSERT INTO newks.newtb (name, age) VALUES('xlb', 22)");
        session.execute("INSERT INTO newks.newtb (name, age) VALUES('xlc', 22)");
        
        ResultSet results = session.execute("SELECT * FROM newks.newtb");
        System.out.println(results.all());
        results = session.execute("SELECT name from newks.newtb");
        System.out.println(results.all());
        results = session.execute("SELECT count(*) from newks.newtb");
        System.out.println(results.all());
        
        System.out.println("FINISHED OPERATION !");
      } finally {
        if (cluster != null) cluster.close();
      }
    }
}

最后的结果如图:
20191209210530

CQL使用

这里简单介绍下常见的CQL的使用,主要分2类:DDL以及DML。

DDL :

CREATE KEYSPACE:

CREATE KEYSPACE ksname WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3}; 

如果是多DC的话可以如下建表,保证使用NetworkTopologyStrategy:

CREATE KEYSPACE ksname
    WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 3, 'DC2' : 3};

ALTER KEYSPACE :

ALTER KEYSPACE ksname
    WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4};

修改了副本数从3变成4.

CREATE TABLE :

CREATE TABLE t (
    pk text,
    v1 int,
    v2 text,
    v3 text ,
    PRIMARY KEY (pk, v1)
);

必须指定primary key,用来唯一确定数据在集群的唯一id。当然TABLE还有很多别的属性,这里使用默认的,其他的以后再详细介绍。

这里主要介绍我们常见的使用方式,还有drop keyspace,truncate table等等可以见这里

DML:

我们列举我们常见的SELECT 、INSERT、UPDATE 、DELETE、BATCH操作:

INSERT :

INSERT INTO t (pk, v1, v2, v3) VALUES ( 'pk1', 1, 'v2', 'v3');

一定要提供我们的PRIMARY KEY的数据;

SELECT :

SELECT pk, v1, v2, v3 FROM t;

UPDATE:

UPDATE t SET v2 = 'vv2' WHERE pk = 'pk1' AND v1 =1;

DELETE:

 DELETE  FROM  t WHERE pk = 'pk1' AND v1 =1;

BATCH:

BEGIN BATCH
      ... INSERT INTO t (pk, v1, v2, v3) VALUES ( 'pk1', 1, 'v2', 'vV3');
      ... APPLY BATCH ;
目录
相关文章
|
存储 缓存 分布式计算
HBase入门指南
HBase是一个开源的非关系型分布式数据库,设计初衷是为了解决大量结构化数据存储与处理的需求
435 0
HBase入门指南
|
NoSQL
Cassandra CDC初体验
CDC(Change data capture)是Cassandra提供的一种用于捕获和归档数据写入操作的机制,这个功能在3.8以上版本支持。当对一个表设置了“cdc=true”属性之后,包含有这个表的数据的CommitLog在丢弃时会被移动到指定的目录中,用户可以自己编写程序消费(解析并删除)这些日志,实现诸如增量数据导出、备份等功能。
2760 0
|
8月前
|
存储 NoSQL MongoDB
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
本文整理自阿里云 Flink 团队归源老师关于阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference 的研究。
47205 2
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
|
SQL 存储 JSON
Cassandra CQL语法 以及功能介绍
内容摘要: 一、Cassandra简单介绍 ·Cassandra的历史和基本架构 二、Cassandra CQL介绍 ·如何使用CQL语言操作Cassandra
4218 0
Cassandra CQL语法 以及功能介绍
|
存储 分布式计算 Cloud Native
[实战系列]SelectDB Cloud Spark Connector 最佳实践
Spark SelectDB Connector 以 Spark 这个大数据计算的优秀组件作为核心,实现了利用 Spark 将外部数据源的大数据量同步到 SelectDB Cloud,便于我们实现大批量数据的快速同步,继而利用 SelectDB Cloud 为基石构建新一代的云原生数据仓库,结合 SelectDB Cloud 强大的分析计算性能,能够为企业带来业务便捷性以及增效将本的目标。
166 0
|
消息中间件 NoSQL Kafka
flink自定义sink,以入solr、mongodb为例
自定义sink需要继承 RichSinkFunction,重写open、invoke、close三个方法,open方法主要实现一些公共资源的开启工作,如mongo、solr的连接客户端。invoke会在每条数据进入后调用,主要写一些数据的转化、插入、查询等具体的实际业务。
384 0
|
SQL 分布式计算 NoSQL
MongoDB Spark Connector 实战指南
Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java、Python、Scala、SQL 等多种语言,使得构建分析应用非常简单 统一构建 ,支持多种数据源,通过 Spark RDD 屏蔽底层数据差异,同一个分析应用可运行于不同的数据源; 应用场景广泛,能同时支持批处理以及流式处理 MongoDB Spark Connector 为官方推出,用于适配 Spark 操作 MongoDB 数据;本文以 Python 为例,介绍 MongoDB Spark Connector 的使用,帮助你基于 M
610 0
|
SQL 存储 NoSQL
深入探索Lindorm兼容Cassandra CQL背后的故事
深入的分析了阿里云自研多模云原生数据库Lindorm兼容Cassandra CQL 背后故事
2031 0
深入探索Lindorm兼容Cassandra CQL背后的故事
|
存储 运维 NoSQL
Cassandra 在 360 的实践与改进
2010年,Dropbox 在线云存储在国外被用户熟知,同时国内如360、金山、百度等各个厂商也都陆续推出了自家的网盘类产品;而在 "360云盘" 背后的存储技术支撑之一就是以 Cassandra 为基础的云端存储方案。自此,Cassandra 在360实现技术落地和大规模生产应用,并被持续改进优化,最终形成高峰时期超 10k+ 物理节点的使用规模,成为互联网公司中 Cassandra 生产环境落地规模最大的公司。
917 0
Cassandra 在 360 的实践与改进
|
SQL NoSQL 大数据
Apache Cassandra 快速入门指南
我们在这篇文章简单介绍了 Apache Cassandra 是什么,以及有什么值得关注的特性。本文将简单介绍 Apache Cassandra 的安装以及简单使用,可以帮助大家快速了解 Apache Cassandra。
13920 0