【发布时间】:2015-02-11 00:11:17
【问题描述】:
将单个(或几个)宽行从 Cassandra 加载到 C# 的最高效的方法是什么?我的宽行有 10.000-100.000 列。主键由多个值组成,但列键是单个字符串,列值是单个计数器(请参见下面的架构)。
在 cqlsh 中使用“跟踪”我可以看到 Cassandra 可以选择 44 m 中包含 17.000 列的宽行,但是使用 Datastax 驱动程序将这些数据一直加载到 C# 需要 700 毫秒。有更快的方法吗?我需要在 50-100 毫秒内加载完整的宽行。 (有更原生的方式吗?最小化网络流量的方式?更快的驱动程序?驱动程序的另一种配置?还是别的什么?)
我实际上并不需要所有 17.000 列。我只需要“支持”> = 2 的列或按“支持”降序排序的前 1000 列。但是由于“支持”是我的列值,所以我不知道在 CQL 中可以通过什么方式进行这样的查询。
这是我的桌子:
CREATE TABLE real_time.grouped_feature_support (
algorithm_id int,
group_by_feature_id int,
select_feature_id int,
group_by_feature_value text,
select_feature_value text,
support counter,
PRIMARY KEY ((algorithm_id, group_by_feature_id, select_feature_id, group_by_feature_value), select_feature_value)
这是我使用 Datastax 驱动程序访问数据的方式:
var table = session.GetTable<GroupedFeatureSupportDataEntry>();
var query = table.Where(x => x.CustomerAlgorithmId == customerAlgorithmId
&& x.GroupByFeatureId == groupedFeatureId
&& myGroupedFeatureValues.Contains(x.GroupByFeatureValue)
&& x.GroupByFeatureValue == groupedFeatureValue
&& x.SelectFeatureId == selectFeatureId)
.Select(x => new
{
x.GroupByFeatureValue,
x.SelectFeatureValue,
x.Support,
})
.Take(1000000);
var result = query.Execute();
【问题讨论】:
标签: c# cassandra cql cql3 datastax