在使用datastax api(使用新的二进制协议)时在cassandra中创建列族或表

ohtdti5x  于 2021-06-14  发布在  Cassandra
关注(0)|答案(4)|浏览(417)

我已经开始使用Cassandra数据库。我计划使用datastax api向上插入/读取cassandra数据库。我对这个datastaxapi(它使用新的二进制协议)是完全陌生的,而且我也找不到很多有适当例子的文档。
当我使用netflix客户端(astyanax客户端)使用cassandracli时,我创建了如下列族-

create column family profile
with key_validation_class = 'UTF8Type'
and comparator = 'UTF8Type'
and default_validation_class = 'UTF8Type'
and column_metadata = [
  {column_name : crd, validation_class : 'DateType'}
  {column_name : lmd, validation_class : 'DateType'}
  {column_name : account, validation_class : 'UTF8Type'}
  {column_name : advertising, validation_class : 'UTF8Type'}
  {column_name : behavior, validation_class : 'UTF8Type'}
  {column_name : info, validation_class : 'UTF8Type'}
  ];

现在我正在尝试使用datastaxapi做同样的事情。因此,要开始使用datastaxapi,我是否需要以上面提到的其他方式创建列族?或者,每当我尝试使用datastax api将数据插入cassandra数据库时,上面的Family列都可以正常工作。
如果上述列族不起作用,则-
首先,我创建了如下的键空间- CREATE KEYSPACE USERS WITH strategy_class = 'SimpleStrategy' AND strategy_options:replication_factor = '1'; 现在我不知道如何创建表?我不确定哪种方法是正确的?
我应该这样创作吗? CREATE TABLE profile ( id varchar, account varchar, advertising varchar, behavior varchar, info varchar, PRIMARY KEY (id) ); 或者我应该这样创作? CREATE COLUMN FAMILY profile ( id varchar, account varchar, advertising varchar, behavior varchar, info varchar, PRIMARY KEY (id) ); 以及如何添加-

crd as DateType
lmd as DateType

在上面的表或列族中使用datastax api?
任何帮助都将不胜感激。

xe55xuns

xe55xuns1#

在cassandra中,键空间或数据库是相同的,就像wise columnfamily和table一样。
cassandra在语法上更像mysql,并且支持hql(类似于sql)
cassandra中的表可以创建为:

CREATE TABLE users (
user_name varchar,
password varchar,
gender varchar,
session_token varchar,
state varchar,
birth_year bigint,
PRIMARY KEY (user_name));

更多信息:Cassandra教程

yquaqz18

yquaqz182#

@neel4soft-随着cassandra的出现,一切都在发展。因此,为了让人们更容易理解,一个稳定的更名过程正在进行,以使从sql到cql的转换对新手来说更容易。然而,cql不应该被认为是sql的亲戚,而应该被认为是它母亲的第三个表亲,换句话说,不是一个近亲。因此,将其与mysql进行比较是对其功能的不当描述。

hfsqlsce

hfsqlsce3#

无论使用关键字table还是columnfamily,它们都是相同的(同义词)。我猜关键字表是用cql3引入的。所以你可以在陈述中使用任何一个。
第二个问题,添加日期类型时,应该使用时间戳。

CREATE COLUMNFAMILY sample (rowkey text, ts timestamp, PRIMARY KEY(rowkey));

INSERT INTO sample (rowkey, ts ) VALUES ( '1','1366354711797');
// ts value is basically the System.currentTimeMillis(), I mean a long value
7xllpg7q

7xllpg7q4#

在使用cassandracli和cqlsh创建表/列族时,没有什么区别。
其中之一是,使用cassandracli如果我们创建表,它将创建紧凑的存储格式,无法进一步更改。
在cqlsh中,除非我们在创建表/列族时特别提到,否则不会以这种格式创建它。

相关问题