Как хранить данные в 1096 столбцах - PullRequest
0 голосов
/ 13 июня 2018

Основной девиз - визуализация гистограммы в моем приложении rails (с использованием высоких графиков).У меня есть CSV (30 МБ) файл данных (статические данные), с 1096 столбцами и 14000 строк.Я хочу сохранить его в базе данных (MYSql).Сначала я думал сохранить в виде массива.

Подскажите, пожалуйста, как это сделать (учитывая производительность данных).Как вы думаете, создание 1096 столбцов будет хорошо?

Любая помощь будет оценена.

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

1096 столбцов, конечно, не очень хорошая идея, особенно если столбцы данных являются переменными, и вы хотели бы позже обработать файл с другими столбцами.Наличие большого количества фиксированных столбцов окажется очень негибким способом хранения данных.

Если каждый столбец - это день, а каждая строка - это какая-то мера, то вы можете попытаться сохранитьваши данные в одной таблице с 3 столбцами: дата, мера, значение.С такой таблицей будет одна строка для каждого триплета дата-мера-значение (каждая «ячейка» в вашем CSV-файле).Это делает таблицу очень гибкой для добавления новых дней и / или показателей.

Однако, если вы хотите провести какой-либо анализ (включая представление данных в виде графиков), вы столкнетесь с проблемой повторного анализа.- объединение ваших данных в ту же табличную структуру, что и исходный CSV.Это действительно может быть узким местом производительности с очень большими наборами данных, поскольку оно решается за время O (X * Y), где X - количество строк, а Y - количество столбцов.У меня нет большого опыта работы с MySQL, но в прошлом я имел хороший опыт работы с

функциями PostgreSQL *1005* CROSSTAB

.

*1008* Это всего лишь один подход, для котороговам придется проделать немало экспериментов, чтобы получить оптимальную производительность.Вы также можете посмотреть опции NoSQL.Как уже было сказано, на самом деле нет единого правильного ответа.
0 голосов
/ 13 июня 2018

1096 столбцов довольно большие.Вопрос в том, сильно ли денормализован CSV?У вас есть столбцы, которые представляют одни и те же данные?Если это так, то вы можете создать таблицу для каждой группы повторяющихся столбцов.Это уменьшит количество столбцов, но увеличит количество таблиц.

MySQL допускает максимальный размер 65 535 байт на строку.Это означает, что средний размер каждого столбца может быть не более 59,79 байт.

Может сработать разбиение данных на один текстовый столбец в строке, но вы не сможете выполнить какой-либо анализданные.Однако, если вы преобразуете его в JSON, вы можете сохранить его в базах данных MongoDB или PostgreSQL.

Нет единственно правильного ответа на вашу проблему.

...