Использование «времени» как ключ в Cassandra для хранения сетевых пакетов

Я пытаюсь сохранить пакеты сетевого потока, которые я получаю от зонда сетевого потока, в Cassandra. Я хочу хранить каждый пакет в отдельном ряду в целях эффективности. Может ли кто-нибудь предложить ключ, который я могу использовать, который обладает достаточной точностью для хранения пакетов сетевого потока? Я думал об использовании некоторой функции времени. Достаточно ли точно, чтобы не было коллизий между пакетами? Я использую библиотеку libQtCassandra для доступа к Cassandra. Спасибо….

0

Решение

Вы можете потенциально использовать функцию времени любой точности, доступную вам за пределами Cassandra, и просто вставить значения. Большинство платформ предоставляют функции для получения времени с точностью до миллисекунды.

В системах на основе Linux вы можете использовать метку времени Unix с точностью до миллисекунды для своей строки. Я полагаю, что ваш rowkey, вероятно, будет LongType.

С другой стороны, будут ли у вашей модели «узкие ряды» или «широкие ряды». Вы не хотите распределять свои данные по слишком большому количеству строк, потому что вы не можете сканировать строки в диапазонах. Возможно, вы можете рассмотреть модель, в которой время до секунд является вашим ключом строки, а конкретная миллисекунда в течение этой секунды — именем столбца, которое затем будет указывать на фактическое значение.

Что-то вроде:

unix_timestamp_in_seconds => [ { millisecond_count: value}, { millisecond_count: value}, ...]

Конечно, здесь я предполагаю, что миллисекундной точности достаточно. Если вам нужна точность в микросекундах, то это действительно сводится к вашей платформе.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector