Как лучше всего хранить временные ряды в MySQL?

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


person sheki    schedule 27.09.2010    source источник
comment
Примите некоторые ответы на ваши предыдущие вопросы, вы, скорее всего, получите лучший ответ, если вы это сделаете.   -  person fredley    schedule 27.09.2010


Ответы (4)


Вы должны хранить свои значения в любом типе (int, boolean, char), а время — в виде даты или int, содержащего временную метку UNIX, в зависимости от того, что лучше подходит для вашего приложения.

person fredley    schedule 27.09.2010
comment
Не вызовет ли это проблем с масштабированием? В моем сценарии количество строк резко увеличится. - person sheki; 27.09.2010

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

person aeon    schedule 27.09.2010

Как сказали Том и Эон, вы должны хранить данные в их собственном формате в MySQL, если вы хотите что-то делать с этими данными (-> обрабатывать данные с помощью SQL).

Если, с другой стороны, вы не хотите работать с этими данными, а просто сохраняете/извлекаете их, то вы используете MySQL просто как контейнер больших двоичных объектов, где каждый большой двоичный объект представляет собой беспорядок/группу из нескольких точек времени/данных, и это не может быть лучшим инструментом для работы: это то, для чего предназначены файлы.

Вы можете исследовать гибридный подход, при котором вы, возможно, храните данные неструктурированными, но сохраняете временные метки в виде дискретных значений. Другими словами, хранилище ключей/значений с вашими отметками времени в качестве ключей. Это должно открыть возможность работать с решениями NoSQL, и, возможно, вы обнаружите, что они лучше подходят (например, подумайте о запуске задания map/reduce непосредственно в базе данных в кластер Riak)

person Luke404    schedule 28.06.2012

В зависимости от вашего приложения, использование расширений пространственных данных MySQL может быть вариантом. Затем вы можете использовать пространственное индексирование для быстрого запроса данных. Для представления временных рядов класс LineString может быть наиболее подходящим выбором. Он представляет собой последовательность кортежей, которые можно использовать для хранения времени и значения. Здесь говорится, что "На карте мира , объекты LineString могут представлять реки». Строки строк создавать легко:

-- if you see a blob, use Convert( AsText(...) using 'utf8')
SELECT AsText(GeomFromText('LineString(1 1, 2 2, 3.5 3.9)'));

Несколько ссылок для начала:

https://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html https://dev.mysql.com/doc/refman/5.1/en/populating-spatial-columns.html

person cw'    schedule 22.07.2015