Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
支持vnodes的集群的Cassandra数据模型设计?_Cassandra_Data Modeling_Cql - Fatal编程技术网

支持vnodes的集群的Cassandra数据模型设计?

支持vnodes的集群的Cassandra数据模型设计?,cassandra,data-modeling,cql,Cassandra,Data Modeling,Cql,我最近开始与卡桑德拉合作。我们有一个cassandra集群,它使用的是DSE 4.0版本,并且启用了VNODES。我们有这样的桌子- CREATE TABLE client_data ( client_name text PRIMARY KEY, client_id text, creation_date timestamp, is_valid int, last_modified_date timestamp ) CREATE INDEX idx_is_valid_cln

我最近开始与卡桑德拉合作。我们有一个cassandra集群,它使用的是DSE 4.0版本,并且启用了VNODES。我们有这样的桌子-

CREATE TABLE client_data (
  client_name text PRIMARY KEY,
  client_id text,
  creation_date timestamp,
  is_valid int,
  last_modified_date timestamp
)

CREATE INDEX idx_is_valid_clnt_data ON client_data (is_valid);
下面是我的第一张桌子-

CREATE TABLE customers (
  customer_id int PRIMARY KEY,
  last_modified_date timeuuid,
  customer_value text
)
从现在开始,上表中的读取查询模式是这样的,因为我们需要从上表中获取所有内容,并每隔x分钟将其加载到应用程序内存中

select customer_id, customer_value from datakeyspace.customers;
我们有第二张这样的桌子-

CREATE TABLE client_data (
  client_name text PRIMARY KEY,
  client_id text,
  creation_date timestamp,
  is_valid int,
  last_modified_date timestamp
)

CREATE INDEX idx_is_valid_clnt_data ON client_data (is_valid);
现在在上表中,我们有500条记录,所有这些记录的有效列值都设置为1。从现在开始,上表的读取查询模式是这样的,因为我们需要从上表中获取所有内容,并每隔x分钟将其加载到应用程序内存中,所以下面的查询将返回我所有的500条记录,因为所有内容都被设为1

select client_name, client_id from  datakeyspace.client_data where is_valid=1;
由于我们的集群支持VNODES,所以我上面的查询模式根本没有效率,从Cassandra获取数据需要花费很多时间。从cqlsh客户端获取数据大约需要50秒。我们正在以一致性级别QUORUM读取这些表

有没有可能通过使用宽行概念或其他方法来改进我们的数据模型


如果您有任何建议,我们将不胜感激。

您认为使用VNode效率低下的原因是什么?从那时起,它将查询每个VNode以获取数据。Vnodes只对操作角度有用,甚至datastax顾问也告诉我们同样的事情,所以我们正在重新设计表。这里的实际问题是使用二级索引,Vnodes有点ancillary@RussS我懂了。你认为我们的数据模型设计好看吗?或者有什么方法可以改进它吗?is_valid上的索引将执行得很差,因为它的基数太低。索引只有几个可能值的字段是没有意义的。至于正确的方法,您应该看看Patrick McFadin关于时间序列数据建模的文章: