У меня были те же требования к «проекту» (скорее, инструмент) год назад, и я использовал Кассандру, и я не пожалел. В целом он очень хорошо подходит. Вы можете поместить довольно много данных в кластер Cassandra, и производительность впечатляет (хотя вам может потребоваться настройка), и естественный порядок - это хорошая вещь.
Вместо того, чтобы выражать свои преимущества использования, я скорее сконцентрируюсь на возможных подводных камнях, которые вы, возможно, не рассмотрите перед запуском.
Вы должны подумать о своей схеме. Данные естественно упорядочены в пределах одной строки с помощью ключа кластеризации, в вашем случае это будет метка времени. Однако вы не можете заказывать данные между разными строками. Они могут быть заказаны после запроса, но это никоим образом не гарантируется, поэтому не думайте об этом. Был какой-то способ написать запрос до 2.1, я верю (используя order by
и отключив пейджинг и разрешая фильтрацию), но это привело к плохой производительности, и я не думаю, что это возможно даже сейчас. Поэтому вы должны заказывать данные между строками на стороне запроса.
Это может быть проблемой, если у вас есть несколько типов переменных (например, температура и давление), которые необходимо воспроизвести в одно и то же время, и вы поместите их в разные строки. Вы должны получить эти строки с разными типами переменных, а затем прибегать к стороне запросов.Другой способ сделать это - поместить все типы переменных в одну строку, но фильтрация только для подмножества - это проблема, которую нужно решить.
Rowlength ограничено 2 миллиардами элементов, и хотя это кажется много, оно действительно не недостижимо с данными временных рядов. Тем более, что вы не хотите приближаться к этим двум миллиардам, держите его ниже на сотни миллионов. Если вы поместите некоторый параметр, по которому вы разделите строки (некоторые увеличивающиеся индексы или округление по дням/месяцам/годам), вам также придется реализовать это в своей логике запросов.
Эксперимент с вашими запросами сначала на фиктивном примере. Вы не можете произвольно использовать <
, >
или =
в запросах. There are specific rules in SQL with filtering, or using the WHERE clause..
В целом, эти вещи могут показаться важными, но на самом деле это не слишком много хлопот, когда вы немного узнаете Кассандру. Я подчеркиваю их, чтобы дать вам голову. Если что-то нелогично сначала, просто возвращайтесь к пониманию, почему это так, и всей теории о распределении данных и кольцевой топологии.
Не ожидайте слишком многого из коллекций внутри столбцов, их длина ограничена ~ 65000 элементами.
Не попадитесь в заблуждение, что заявления дозируемого быстрее (это один классический :))
Это довольно простой случай использования для Кассандры. Трудно быть более конкретным, так как ваш вопрос не является конкретным. Вы можете искать такие вещи, как «Хранилище временных рядов Кассандры». В этой теме есть куча видеоматериалов DataStax. –