Каков наиболее эффективный способ загрузки одной (или нескольких) широких строк из Cassandra в C #? В моих широких строках 10 000–100 000 столбцов. Первичные ключи состоят из нескольких значений, но ключ столбца представляет собой одну строку, а значение столбца представляет собой один счетчик (см. Схему ниже).
Используя «трассировку» в cqlsh, я вижу, что Cassandra может выбрать широкую строку с 17 000 столбцов на расстоянии 44 м, но загрузка этих данных полностью в C # с использованием драйвера Datastax занимает 700 мс. Есть ли более быстрый способ? Мне нужно загрузить полный широкий ряд за 50-100 мс. (Есть ли более родной способ? Способ минимизации сетевого трафика? Более быстрый драйвер? Другая конфигурация драйвера? Или что-то еще?)
На самом деле мне не нужны все 17000 столбцов. Мне просто нужны столбцы, в которых «поддержка»> = 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();