当前位置: 首页 > 知识库问答 >
问题:

Cassandra架构表建议

常明亮
2023-03-14
CREATE TABLE sams.events (
    addedtime timestamp,
    hostname text,
    appname text,
    eventtime timestamp,
    PRIMARY KEY (addedtime, hostname)
) WITH CLUSTERING ORDER BY (hostname ASC)

1)我应该能够通过addedtime进行范围查询,比如从x日期到y日期

2)我应该能够按appname查询,并使用addedtime按升序排列行

我怎样才能做到这一点?我可以更改表模式。

另外,我已经创建了两个DC和三个节点的Cassandra集群。

共有1个答案

上官和韵
2023-03-14

你提到你只有2个应用程序。您有多少主机名,是否等于或大于集群中的节点数?如果是,那么您可以尝试以下方法,它可以给您提供均匀的数据传播。

CREATE TABLE mykeyspace.events (
appname text,
hostname text,
addedtime timeuuid,
eventtime timeuuid,
PRIMARY KEY ((appname, hostname), addedtime)
);

insert into events (appname, hostname , addedtime , eventtime ) values ('app1','host1',now(), now());
insert into events (appname, hostname , addedtime , eventtime ) values ('app1','host1',now(), now());
insert into events (appname, hostname , addedtime , eventtime ) values ('app1','host2',now(), now());
insert into events (appname, hostname , addedtime , eventtime ) values ('app1','host3',now(), now());
insert into events (appname, hostname , addedtime , eventtime ) values ('app1','host4',now(), now());

QUERY1:按添加时间范围查询(希望您的主机名数量不是更高的数字,否则它将在子句中很大)

select * from events where appname = 'app1' and hostname in ('host1','host2') and addedtime > maxTimeuuid('2015-08-23 00:46:00-0500') and addedtime < minTimeuuid('2015-08-23 00:49:19-0500') ;

查询2:按应用程序名称(再次希望您的主机名不是更高的数字)

select appname,hostname,dateOf(addedtime) from events where appname = 'app1' and hostname in ('host1','host2');
 类似资料:
  • 我使用Datastax Cassandra3.0,同时使用cqlsh模式在cassandra中创建表,正在更改列名,列名按字母顺序排列。请看下面。 这是创建表时的结构。 ...每月一次的瓦尔查尔, ...分配int, ...evdate日期, ...paymentterms int, ...percentageofpayment int, ...变体int, ...paymenttermsumma

  • 主要内容:Cassandra中的数据复制,Cassandra的组成部分,Cassandra查询语言,写操作,读操作Cassandra旨在处理多个节点之间的大数据工作负载,而无需担心单点故障。 它在其节点之间具有对等分布式系统,数据分布在集群中的所有节点上。 在Cassandra中,每个节点是独立的,同时与其他节点互连。 集群中的所有节点都扮演着相同的角色。 集群中的每个节点都可以接受读取和写入请求,而不管数据实际位于集群中的位置。 在一个节点发生故障的情况下,可以从网络中的其他节点提供读/写请求

  • 在Cassandra中,命令用于创建表。 这里,列系列用于存储数据,就像RDBMS中的表一样。 所以,也可以认为命令用于在Cassandra中创建一个列族。 语法 要么,可声明一个主键: 您还可以使用以下语法定义主键: 主键有两种类型: 单个主键:对单个主键使用以下语法。 复合主键:对复合主键可使用以下语法。 示例: 让我们举个例子来演示如何使用命令。 在这里,我们使用前面已经创建的键空间 - “

  • 我正在使用微软。蔚蓝色的数据计划主义。ApacheAvro 1.0.0-beta1和我正在尝试使用avro架构将事件发送到eventhub,但由于某种原因azure响应为BadRequest:Code“:400,“Detail:”架构验证失败:解析未定义的值路径“u0022typeu0022”时出错,第1行,位置17。我使用的是微软提供的例子,但我也没有运气。 记录={Schema:{“type”

  • 嘿,我想将ConFluent模式注册表与Avro Serializers一起使用:留档现在基本上是说:不要为多个不同的主题使用相同的模式 谁能解释一下原因吗?我重新搜索了源代码,它基本上将模式存储在Kafka主题中,如下所示(topicname,magicbytes,version- 因此,除了冗余之外,我看不到多次使用模式的问题?

  • 我有一个使用Spring Boot的中等规模项目,我正在尝试使用嵌入式H2创建我的第一个DataJpaTest,但我遇到了以下例外: 我已经尝试了这一点,并使用了一个模式。sql,还有这个和使用测试。测试/资源中的属性,以及其他答案。但什么都没用。我真的很困惑;这是我第一次在Spring Boot中遇到无法解决的问题。 我的实体类定义为: 关于如何强制Hibernate在H2中创建模式的任何建议?