2009-10-26 1 views
36

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

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

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

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

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

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

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

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

Благодаря

ответ

20

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

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

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

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

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

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

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

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

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

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

+1

Когда вы говорите: «вы можете сказать Кассандре, что все ключи, которые начинаются с MSFT, теперь и заканчиваются с помощью MSFT-now + 1hour» - Вы имеете в виду запрос RowSclice? Я имею в виду, если я попрошу, чтобы cassandra дал мне все ключи строк между t1 и t2, t являясь меткой времени, является эффективным. Я слышал, что rowSlices не так эффективны, как срезы столбцов в Cassandra? – Peter

11

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

http://opentsdb.net/

+0

Помимо хорошего, БЕСПЛАТНО! –

+1

OpenTSDB довольно хорош, к сожалению, не подходит для финансовых данных, особенно если вы пытаетесь сохранить данные о тике с более чем второй разрешающей способностью (OpenTSDB в настоящее время имеет только разрешение до второй секунды). – Datageek

2

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

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

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

+0

Просто столкнулся с той же проблемой. Хотелось бы, чтобы был простой способ создания потока результатов запроса. Я могу быстро пройти через них, просто не могу позволить себе сразу получить их в памяти ... Вы нашли решение? – em70

+0

Привет, emaster70, нет, я не нашел решения. ура – user1052080

0

Просто для полноты читая это в 2018 году, в настоящее время существует специальная база данных только для данных таймсерий называется TimescaleDB

http://www.timescale.com/

Этот блог стоит прочитать, это объясняет, почему он превосходит такие решения, как Cassandra для этого особого случая, и почему они решили построить его поверх реляционной базы данных PostgreSQL.

https://blog.timescale.com/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c