我最近开始与Cassandra合作。我们有使用DSE 4.0版本并启用了VNODES的cassandra集群。我们有这样的表 -
以下是我的第一张表 -
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条记录,所有这些记录都将“is_valid”列值设置为1.由于我们需要从上面获取所有内容,因此读取查询模式在上表中是这样的每隔x分钟将表加载到我们的应用程序内存中,因此以下查询将返回所有500条记录,因为所有内容都将is_valid设置为1。
select client_name, client_id from datakeyspace.client_data where is_valid=1;
由于我们的群集已启用VNODES,因此我的上述查询模式根本没有效率,并且从Cassandra获取数据需要花费大量时间。从cqlsh客户端获取数据大约需要50秒。我们正在从这些表中读取一致性级别QUORUM。
是否有可能通过使用宽行概念或其他任何内容来改进我们的数据模型?
任何建议都将不胜感激。