2014-03-28 3 views
1

Я пытаюсь оценить производительность Cassandra DB для хранения и получения данных временных рядов по различным каналам.Cassandra: Диапазон запросов по временной метке данных временных рядов

Данные записываются с максимальной скоростью записи 8 выборок в секунду в формате файла вместе с меткой времени в миллисекундах для каждого образца. Количество записей каналов в течение заданного времени может изменяться.

Вдохновленный по следующей ссылке Getting Started with Time Series Data Modeling, я использовал создал следующую таблицу:

CREATE TABLE uhhdata ( ch_idx INT, дата временной метки, дт метку времени, вал поплавок, PRIMARY KEY ((ch_idx, дата), dt) );

, где ключ раздела состоит из номера канала (ch_idx int) и временной метки даты, который хранит дату, а не временную метку, а dt - метку времени записи с разрешением менее второго.

У меня есть две проблемы: 1-after write 2,500,000 запись в эту таблицу и выполнение запроса выберите * из UHHdata limit 10,000,000; У меня была следующая ошибка таймаута:

Запрос не заполнен в течение rpc_timeout.

Драйвер C++ просто возвращает NULL для этого номера для этого числа записей: boost :: shared_ptr result = future.get(). Result;

если (! Результат) std :: cout < < «Нет записи результата \ n";

Если это необходимо для 100 000, оно возвращается через 22 секунды. Как я могу получить все записи для таких больших запросов? Я видел сообщение cassandra get all records in time range, однако, я не понимаю, как это применимо к моему делу, поскольку мне нужно, чтобы все записи не были некоторыми из них?

2-Если сделать запрос диапазона на дт timstamp следующим образом, возвращаемые запросы не проверяет интервал, заданный интервал, и это независимо от нижнего и верхнего предела времени:

Как можно заметить, то запрос возвращает запись больше верхнего предела '2014-04-04 01:00:10':

cqlsh: uhhkeyspace2> выберите * из UHHData где ch_idx = 1 AND date = '2012-04-04 01:00: 00 'И dt <' 2014-04-04 01:00:10 'LIMIT 20;

ch_idx | дата | dt | val

-------- + ------------------------------------ - + -------------------------------------- + -----

1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:00GMT Daylight Time | -5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:01GMT Daylight Time | 44 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:02GMT Daylight Time | 83 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:03GMT Daylight Time | 99 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:04GMT Daylight Time | 89 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:05GMT Daylight Time | 55 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:06GMT Daylight Time | 5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:07GMT Daylight Time | -44 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:08GMT Daylight Time | -83 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:09GMT Daylight Time | -99 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:10GMT Daylight Time | -89 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:11GMT Daylight Time | -55 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:12GMT Daylight Time | -5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:13GMT Daylight Time | 44 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:14GMT Daylight Time | 83 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:15GMT Daylight Time | 99 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:16GMT Daylight Time | 89 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:17GMT Daylight Time | 55 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:18GMT Daylight Time | 5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:19GMT Daylight Time | -44 

(20 строк)

Почему предельные временной метки условия не применяются? Как я могу это исправить?

Спасибо, Амин

ответ

1

Я не вижу никаких проблем. Все ваши метки времени в колонке dt от 2012-04-04 и ваше состояние dt < '2014-04-04 01:00:10'. 2012 год до 2014 года, поэтому все правильно

Смежные вопросы