• Cassandra笔记


    Cassandra常用操作

    1、查看键空间

    DESCRIBE keyspaces;
    
    • 1

    该命令用于展示casandra下的所有的keyspaces(类比mysql的show databases;),casandra的keyspaces和mysql的数据库概念相似,属于从逻辑上区分的物理隔离空间,基于各个keyspaces,管理各自的tables。

    如果想进入到某个keyspace下,可以使用 use [keyspace名称];

    2、查询所有table

    desc tables;
    
    • 1

    3、清空表数据

    truncate <表名称>;
    
    • 1

    4、cassandra支持插入数据时候设定一个过期时间,只需要在插入语句后面加上TTL关键字进行标识即可

    update table using ttl 30 set uv = 6 where id = 'id'
    
    • 1

    Cassandra数据模型

    集群(Cluster)

    Cassandra 数据库分布在几个一起操作的机器上。最外层容器被称为群集。对于故障处理,每个节点包含一个副本,如果发生故障,副本将复制。Cassandra 按照环形格式将节点排列在集群中,并为它们分配数据。

    键空间 (Keyspace)

    键空间是 Cassandra 中数据的最外层容器。Cassandra 中的一个键空间的基本属性是 -

    • 复制因子 - 它是集群中将接收相同数据副本的计算机数。
    • 副本放置策略 - 它只是把副本放在介质中的策略。我们有简单策略(机架感知策略),旧网络拓扑策略(机架感知策略)和网络拓扑策略(数据中心共享策略)等策略。
    • 列族 - 键空间是一个或多个列族的列表的容器。列族又是一个行集合的容器。每行包含有序列。列族表示数据的结构。每个键空间至少有一个,通常是许多列族。

    创建键空间的语法如下 -

    CREATE KEYSPACE Keyspace name
    WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
    
    • 1
    • 2

    Cassandra 参考API

    集群(Cluster)

    这个类是驱动程序的主要入口点。它属于com.datastax.driver.core包。

    方法

    在这里插入图片描述

    Cluster.Builder

    此类用于实例化Cluster.Builder类。

    方法

    在这里插入图片描述

    会话

    此接口保存与Cassandra群集的连接。使用此接口,可以执行CQL查询。它属于com.datastax.driver.core包。

    方法

    在这里插入图片描述

    Cassandra Cqlsh

    默认情况下,Cassandra提供一个提示Cassandra查询语言shell(cqlsh),允许用户与它通信。使用此shell,您可以执行Cassandra查询语言(CQL)。

    使用cqlsh,你可以

    • 定义模式,
    • 插入数据,
    • 执行查询。

    启动cqlsh

    使用命令cqlsh启动cqlsh,如下所示。它提供Cassandra cqlsh提示作为输出。

    [hadoop@linux bin]$ cqlsh
    Connected to Test Cluster at 127.0.0.1:9042.
    [cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
    Use HELP for help.
    cqlsh>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Cqlsh - 如上所述,此命令用于启动cqlsh提示符。此外,它还支持更多的选项。下表说明了cqlsh的所有选项及其用法。

    选项用法
    cqlsh --help显示有关cqlsh命令的选项的帮助主题。
    cqlsh --version提供您正在使用的cqlsh的版本。
    cqlsh --color指示shell使用彩色输出。
    cqlsh --debug显示更多的调试信息。
    cqlsh --execute cql_statement指示shell接受并执行CQL命令。
    cqlsh --file= “file name如果使用此选项,Cassandra将在给定文件中执行命令并退出。
    cqlsh --no-color指示Cassandra不使用彩色输出。
    cqlsh -u “user name使用此选项,您可以验证用户。默认用户名为:cassandra。
    cqlsh-p “pass word”使用此选项,您可以使用密码验证用户。默认密码为:cassandra。

    Cqlsh命令

    Cqlsh有几个命令,允许用户与它进行交互。命令如下所示。

    记录的Shell命令

    下面给出了Cqlsh记录的shell命令。这些是用于执行任务的命令,如显示帮助主题,退出cqlsh,描述等。

    • HELP -显示所有cqlsh命令的帮助主题。
    • CAPTURE -捕获命令的输出并将其添加到文件。
    • CONSISTENCY -显示当前一致性级别,或设置新的一致性级别。
    • COPY -将数据复制到Cassandra并从Cassandra复制数据。
    • DESCRIBE -描述Cassandra及其对象的当前集群。
    • EXPAND -纵向扩展查询的输出。
    • EXIT -使用此命令,可以终止cqlsh。
    • PAGING -启用或禁用查询分页。
    • SHOW -显示当前cqlsh会话的详细信息,如Cassandra版本,主机或数据类型假设。
    • SOURCE -执行包含CQL语句的文件。
    • TRACING -启用或禁用请求跟踪。

    CQL数据定义命令

    • CREATE KEYSPACE -在Cassandra中创建KeySpace。
    • USE -连接到已创建的KeySpace。
    • ALTER KEYSPACE -更改KeySpace的属性。
    • DROP KEYSPACE -删除KeySpace。
    • CREATE TABLE -在KeySpace中创建表。
    • ALTER TABLE -修改表的列属性。
    • DROP TABLE -删除表。
    • TRUNCATE -从表中删除所有数据。
    • CREATE INDEX -在表的单个列上定义新索引。
    • DROP INDEX -删除命名索引。

    CQL数据操作指令

    • INSERT -在表中添加行的列。
    • UPDATE -更新行的列。
    • DELETE -从表中删除数据。
    • BATCH -一次执行多个DML语句。

    CQL字句

    • SELECT -此子句从表中读取数据
    • WHERE -where子句与select一起使用以读取特定数据。
    • ORDERBY -orderby子句与select一起使用,以特定顺序读取特定数据。

    Cassandra Shell命令

    除了CQL命令,Cassandra还提供了记录的shell命令。下面给出了Cassandra记录的shell命令。

    Help

    HELP命令显示所有cqlsh命令的摘要和简要描述。下面给出了help命令的用法。

    cqlsh> help
    
    Documented shell commands:
    ===========================
    CAPTURE COPY DESCRIBE EXPAND PAGING SOURCE
    CONSISTENCY DESC EXIT HELP SHOW TRACING.
    
    CQL help topics:
    ================
    ALTER           CREATE_TABLE_OPTIONS       SELECT
    ALTER_ADD       CREATE_TABLE_TYPES         SELECT_COLUMNFAMILY
    ALTER_ALTER     CREATE_USER                SELECT_EXPR
    ALTER_DROP      DELETE                     SELECT_LIMIT
    ALTER_RENAME    DELETE_COLUMNS             SELECT_TABLE 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Capture

    此命令捕获命令的输出并将其添加到文件。例如,看看下面的代码,它将输出捕获到名为Outputfile的文件。

    cqlsh> CAPTURE '/home/hadoop/CassandraProgs/Outputfile'
    
    • 1

    当我们在终端中键入任何命令时,输出将被给定的文件捕获。下面给出的是使用的命令和输出文件的快照。

    cqlsh:tutorialspoint> select * from emp;
    
    • 1

    文件

    您可以使用以下命令关闭捕获。

    cqlsh:tutorialspoint> capture off;
    
    • 1

    Consistency

    此命令显示当前的一致性级别,或设置新的一致性级别。

    cqlsh:tutorialspoint> CONSISTENCY
    Current consistency level is 1.
    
    • 1
    • 2

    Copy

    此命令将数据从Cassandra复制到文件并从中复制。下面给出一个将名为emp的表复制到文件myfile的示例。

    cqlsh:tutorialspoint> COPY emp (emp_id, emp_city, emp_name, emp_phone,emp_sal) TO ‘myfile’;
    4 rows exported in 0.034 seconds.
    
    • 1
    • 2

    如果您打开并验证给定的文件,您可以找到复制的数据,如下所示。

    文件2

    Describe

    此命令描述Cassandra及其对象的当前集群。此命令的变体说明如下。

    Describe cluster -此命令提供有关集群的信息。

    cqlsh:tutorialspoint> describe cluster;
    
    Cluster: Test Cluster
    Partitioner: Murmur3Partitioner
    
    Range ownership:
                      -658380912249644557 [127.0.0.1]
                      -2833890865268921414 [127.0.0.1]
                      -6792159006375935836 [127.0.0.1] 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    Describe Keyspaces -此命令列出集群中的所有键空间。下面给出了这个命令的用法。

    cqlsh:tutorialspoint> describe keyspaces;
    
    system_traces system tp tutorialspoint
    
    • 1
    • 2
    • 3

    Describe tables -此命令列出了键空间中的所有表。下面给出了这个命令的用法。

    cqlsh:tutorialspoint> describe tables;
    emp
    
    • 1
    • 2

    Describe tables -此命令提供表的描述。下面给出了这个命令的用法。

    cqlsh:tutorialspoint> describe table emp;
    
    CREATE TABLE tutorialspoint.emp (
       emp_id int PRIMARY KEY,
       emp_city text,
       emp_name text,
       emp_phone varint,
       emp_sal varint
    ) WITH bloom_filter_fp_chance = 0.01
       AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
       AND comment = ''
       AND compaction = {'min_threshold': '4', 'class':
       'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',
       'max_threshold': '32'}
    	
       AND compression = {'sstable_compression':
       'org.apache.cassandra.io.compress.LZ4Compressor'}
    	
       AND dclocal_read_repair_chance = 0.1
       AND default_time_to_live = 0
       AND gc_grace_seconds = 864000
       AND max_index_interval = 2048
       AND memtable_flush_period_in_ms = 0
       AND min_index_interval = 128
       AND read_repair_chance = 0.0
       AND speculative_retry = '99.0PERCENTILE';
    CREATE INDEX emp_emp_sal_idx ON tutorialspoint.emp (emp_sal);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    Describe tables

    此命令用于描述用户定义的数据类型。下面给出了这个命令的用法。

    cqlsh:tutorialspoint> describe type card_details;
    
    CREATE TYPE tutorialspoint.card_details (
       num int,
       pin int,
       name text,
       cvv int,
       phone set<int>,
       mail text
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Describe Types

    此命令列出所有用户定义的数据类型。下面给出了这个命令的用法。假设有两种用户定义的数据类型:card和card_details。

    cqlsh:tutorialspoint> DESCRIBE TYPES;
    
    card_details card
    
    • 1
    • 2
    • 3

    Expand

    此命令用于扩展输出。在使用此命令之前,您必须打开expand命令。下面给出了这个命令的用法。

    cqlsh:tutorialspoint> expand on;
    cqlsh:tutorialspoint> select * from emp;
    
    @ Row 1
    -----------+------------
        emp_id | 1
      emp_city | Hyderabad
      emp_name | ram
     emp_phone | 9848022338
       emp_sal | 50000
      
    @ Row 2
    -----------+------------
        emp_id | 2
      emp_city | Delhi
      emp_name | robin
     emp_phone | 9848022339
       emp_sal | 50000
      
    @ Row 3
    -----------+------------
        emp_id | 4
      emp_city | Pune
      emp_name | rajeev
     emp_phone | 9848022331
       emp_sal | 30000
      
    @ Row 4
    -----------+------------
        emp_id | 3
      emp_city | Chennai
      emp_name | rahman
     emp_phone | 9848022330
       emp_sal | 50000
    (4 rows)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    注意:您可以使用以下命令关闭展开选项。

    cqlsh:tutorialspoint> expand off;
    Disabled Expanded output.
    
    • 1
    • 2

    Exit

    此命令用于终止cql shell。

    Show

    此命令显示当前cqlsh会话的详细信息,如Cassandra版本,主机或数据类型假设。下面给出了这个命令的用法。

    cqlsh:tutorialspoint> show host;
    Connected to Test Cluster at 127.0.0.1:9042.
    
    cqlsh:tutorialspoint> show version;
    [cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Source

    使用此命令,可以在文件中执行命令。假设我们的输入文件如下:

    源1
    然后可以执行包含命令的文件,如下所示。

    cqlsh:tutorialspoint> source '/home/hadoop/CassandraProgs/inputfile';
    
     emp_id |  emp_city | emp_name |  emp_phone | emp_sal
    --------+-----------+----------+------------+---------
          1 | Hyderabad |   ram    | 9848022338 | 50000
          2 | Delhi     |   robin  | 9848022339 | 50000
          3 | Pune      |   rajeev | 9848022331 | 30000
          4 | Chennai   |   rahman | 9848022330 | 50000
    (4 rows)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    参考链接:https://ke.qq.com/itdoc/cassandra/cassandra_create_keyspace.html

  • 相关阅读:
    ShardingSphere-proxy-5.0.0部署之分表实现(一)
    使用Mybatis数据库逆向生成工具
    云原生 · Kubernetes - k8s集群搭建(kubeadm)(持续收录报错中)
    金翅擘海 | 人大加拿大女王大学金融硕士王立印:一路向阳 沿途芬芳
    [答疑]涉众给的规范里有“数据精确度”,算设计约束吗
    一图读懂「五度情报站」全盘视野,情报智取,先知先行,决策有道!
    Linux操作系统~匿名管道和命名管道的使用及其原理分析
    抑制肯定响应消息指示位(SPRMIB)
    Java项目:SSM校园帮跑腿管理平台
    低代码如何扛起未来系统开发的大旗
  • 原文地址:https://blog.csdn.net/qq_45832050/article/details/125627598