📜  在 Cassandra 中创建表

📅  最后修改于: 2022-05-13 01:56:18.421000             🧑  作者: Mango

在 Cassandra 中创建表

在本文中,我们将讨论如何在 Cassandra 中创建表,并讨论列定义、键角色、表选项(紧凑存储和集群顺序)等。

在 Cassandra 中,CQL 表具有名称并存储行。创建表时,您需要定义行的列、用于标识每行的强制主键、列数据类型以及您可以选择的任何其他附加信息。

要创建表,请使用下面给出的“创建表”语句,如下所示。

下面是一个典型的建表语句。

Syntax: Creating a Table.

CREATE TABLE [ IF NOT EXISTS ] table_name
'('
column_definition
( ', ' column_definition )*
[ ', ' PRIMARY KEY '(' primary_key ')' ]
')' [ WITH table_options ] 

现在,您可以在这里使用任何现有的键空间,例如名为 App_data 的键空间。

use App_data;

现在,您可以创建表 User_data,其中 Name、id、address 是表中的字段。

CREATE TABLE User_data (
                Name text,
                id uuid,
                address text,
                PRIMARY KEY (id)
               ); 

现在,您可以验证表是否已创建,如果已创建,则验证表定义。
通过使用现有的键空间,例如 App_data。

cassandra@cqlsh> use App_data;
cassandra@cqlsh:app_data> 

cassandra@cqlsh:app_data> CREATE TABLE User_data (
 ...                 id uuid,
 ...                 Name text,
 ...                 address text,
 ...                 PRIMARY KEY (id)
 ...                ); 

在 Cassandra 中,主键由第一列或多个列组成,是强制分区键,然后是一个或多个集群列。

COLUMN_DEFINITION
在 Cassandra 中,column_definition 子句由列的名称及其类型以及两个修饰符组成。

静态:在 Cassandra 中,静态列对于共享相同分区键的所有行具有相同的值(稍后解释)。当然,只有非主键可以是静态的。

主键:主键唯一标识一行,所有表都必须定义一个主键是一个很好的做法。

现在,您可以在这里验证创建的表 User_data。

cassandra@cqlsh:app_data> describe User_data;

CREATE TABLE app_data.user_data (
    id uuid PRIMARY KEY,
    address text,
    name text
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = 
         {
         'class': 'org.apache.cassandra.db.compaction
                       .SizeTieredCompactionStrategy', 
         'max_threshold': '32', 'min_threshold': '4'
         }
    AND compression = {'chunk_length_in_kb': '64', 
                       'class': 'org.apache.cassandra.io
                                  .compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    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 = '99PERCENTILE';