Подтвердить что ты не робот

Хранение массивных упорядоченных временных рядов данных в больших производных

Я пытаюсь выяснить, какие именно эти новые искаженные хранилища данных, такие как bigtable, hbase и cassandra действительно.

Я работаю с огромным количеством данных фондового рынка, миллиардами строк данных цены/котировки, которые могут суммировать до 100 гигабайт каждый день (хотя эти текстовые файлы часто сжимаются, по крайней мере, на порядок). Эти данные в основном представляют собой несколько чисел, две или три коротких строки и временную метку (обычно миллисекундный уровень). Если бы мне пришлось выбрать уникальный идентификатор для каждой строки, мне пришлось бы выбрать всю строку (так как обмен может генерировать несколько значений для одного и того же символа в той же миллисекунде).

Я предполагаю, что самый простой способ сопоставить эти данные с большими таблицами (включая его производные) - это имя и дата символа (что может привести к очень большому временному ряду, более миллиона точек данных не являются неслыханными). Из прочтения их описаний похоже, что с этими системами можно использовать несколько ключей. Я также предполагаю, что десятичные числа не являются хорошими кандидатами для ключей.

Некоторые из этих систем (например, Cassandra) утверждают, что могут выполнять запросы диапазона. Смогу ли я эффективно запросить, скажем, все значения для MSFT, в течение определенного дня, с 11:00 до 13:30?

Что делать, если я хочу искать по всем символам за данный день и запрашивать все символы, которые имеют цену от 10 до 10,25 долларов (так что я ищу значения и хочу, чтобы ключи возвращались в результате)?

Что делать, если я хочу получить два раза подряд, вычесть одно из другого и вернуть два раза подряд и их результат, мне придется делать свою логику в моей собственной программе?

Чтение соответствующих документов, похоже, показывает, что эти системы не очень подходят для массивных систем временных рядов. Однако, если такие системы, как карты Google, основаны на них, я думаю, что временные ряды также должны работать. Например, подумайте о времени, когда ось x, цены как ось y и символы в названии местоположения - внезапно это выглядит как большой столбец, должно быть идеальным хранилищем для временных рядов (если вся земля может быть сохранена, извлечена, увеличенные и аннотированные данные на фондовом рынке должны быть тривиальными).

Может ли какой-нибудь эксперт указать мне в правильном направлении или прояснить любые недоразумения.

Спасибо

4b9b3361

Ответ 1

Я еще не эксперт, но я уже несколько дней играл с Cassandra, и у меня есть для вас несколько ответов:

  • Не беспокойтесь о количестве данных, это не имеет отношения к системам вроде Cassandra, если у вас $$$ для большого аппаратного кластера.

Некоторые из этих систем (например, Cassandra) утверждают, что могут выполнять запросы диапазона. Смогу ли я эффективно запросить, скажем, все значения для MSFT, в течение определенного дня, с 11:00 до 13:30?

Кассандра очень полезна, когда вы знаете, как работать с ключами. Он может быстро переключаться между клавишами. Поэтому, чтобы искать MSFT с 11:00 до 13:30, вам нужно будет закрепить свои строки следующим образом:

MSFT-метка времени, отметка времени GOOG,..etc Затем вы можете сказать Cassandra, чтобы найти все ключи, которые начинаются с MSFT, теперь и заканчиваются MSFT-now + 1hour.

Что делать, если я хочу искать по всем символам за данный день и запрашивать все символы, которые имеют цену от 10 до 10,25 долларов (так что я ищу значения и хочу, чтобы ключи возвращались в результате)?

Я не эксперт, но до сих пор я понял, что Кассандра вообще не ищет ценности. Поэтому, если вы хотите сделать это, вам придется сделать еще одну таблицу, посвященную этой проблеме, и разработать схему, соответствующую этому случаю. Но это не будет сильно отличаться от того, что я описал выше. Все это касается присвоения имен вашим ключам и столбцам. Кассандра может найти их очень быстро!

Что делать, если я хочу получить два раза подряд, вычесть одно из другого и вернуть два раза подряд и их результат, мне придется делать свою логику в моей собственной программе?

Правильно, вся логика выполняется внутри вашей программы. Это не MySQL. Это всего лишь механизм хранения. (Но я уверен, что следующие версии будут предлагать такие вещи)

Пожалуйста, помните, что я новичок в этом, если я ошибаюсь, не стесняйтесь исправлять меня.

Ответ 2

Если вы имеете дело с массивной базой данных временных рядов, то стандарты:

Это не дешево, но они могут эффективно обрабатывать ваши данные.

Ответ 3

Кто-то, кого я уважаю, рекомендовал базу данных Open Time Series. В частности, эта схема была самой приятной из всех, что он когда-либо видел.

http://opentsdb.net/

Ответ 4

"Стоя перед той же самой горой. Моя основная проблема с cassandra заключается в том, что я не могу получить поток в результирующем наборе, например, в форме итератора.

Я смотрю уже вверх и вниз по документам и сети, но ничего.

Я не могу получить все ключи, а затем получить строки, поскольку миллиарды строк делают это невозможным.

Ответ 5

Драйвер Java DataStax допускает автоматический поиск подкачки, поэтому он будет передавать результаты точно так же, как итератор, и все это встроено. Это, кстати, в Cassandra 2.0.1 - http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra-2-0