Я хочу хранить большое количество точек данных временных рядов (время и значение). Я бы предпочел использовать MySQL для того же. Сейчас я планирую хранить временные ряды в виде двоичных двоичных объектов в MySQL. Это лучший способ, что было бы лучшим подходом.
Как лучше всего хранить временные ряды в MySQL?
Ответы (4)
Вы должны хранить свои значения в любом типе (int, boolean, char), а время — в виде даты или int, содержащего временную метку UNIX, в зависимости от того, что лучше подходит для вашего приложения.
Если вы хотите каким-либо образом обрабатывать информацию с помощью mysql, вы должны хранить ее как тип даты, числовой тип. Единственная проблема с масштабированием, которую я вижу (если вы собираетесь хранить только информацию), — это дополнительный размер диска.
Как сказали Том и Эон, вы должны хранить данные в их собственном формате в MySQL, если вы хотите что-то делать с этими данными (-> обрабатывать данные с помощью SQL).
Если, с другой стороны, вы не хотите работать с этими данными, а просто сохраняете/извлекаете их, то вы используете MySQL просто как контейнер больших двоичных объектов, где каждый большой двоичный объект представляет собой беспорядок/группу из нескольких точек времени/данных, и это не может быть лучшим инструментом для работы: это то, для чего предназначены файлы.
Вы можете исследовать гибридный подход, при котором вы, возможно, храните данные неструктурированными, но сохраняете временные метки в виде дискретных значений. Другими словами, хранилище ключей/значений с вашими отметками времени в качестве ключей. Это должно открыть возможность работать с решениями NoSQL, и, возможно, вы обнаружите, что они лучше подходят (например, подумайте о запуске задания map/reduce непосредственно в базе данных в кластер Riak)
В зависимости от вашего приложения, использование расширений пространственных данных 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