Я не совсем уверен, что понимаю, что вы имеете в виду, когда говорите, что
Число атрибутов (столбец таблицы) неизвестно во время разработки.Во время выполнения может быть добавлен любой новый атрибут (скажем, влажность, показатель преломления и т. Д.).
Прежде всего, я предполагаю, что на самом деле это происходит не случайно: например, когда вы получаете новую связкуданных из поля, которое вы знаете (до импорта), что они имеют дополнительное измерение или два.Правильно?
Кроме того, тот факт, что в этом новом пакете данных вы получите «показатель преломления», не заставит более старые данные магическим образом получить правильное значение для этого измерения.
Поэтому я бы пошел наклассическое отображение объекта в СУБД, где у вас есть:
таблица заголовков с вещами, которые существуют для каждого измерения: т. е. время и пространство, возможно, источник (т. е. лаборатория, датчик, команда, предоставившая данные) иавтоматически сгенерированный ключ.
одна или несколько подробных таблиц, в которых значения определены как соответствующие поля.
Пример:
Заголовок
location | time | height | source |Key |
L1 | 2011-12-18 08:04:02 | 7 | team-1 | 002020013 |
L1 | 2011-12-18 08:04:02 | 15 | team-1 | 002020017 |
L1 | 2011-12-18 08:04:02 | 27 | Lab-X | 002020018 |
L1 | 2011-12-18 08:04:04 | 7 | Lab-Y | 002020021 |
L1 | 2011-12-18 08:04:04 | 15 | Lab-X | 002020112 |
Атмосферные данные(базовый)
Key | pressure | temp | wind-dir |
002020013 | 1009.6 | 28.3 | east |
002020017 | 1019.3 | 29.2 | east |
002020018 | 1011.6 | 26.9 | east |
Данные датчика освещенности
Key | refractive-ind | albedo | Ultraviolet |
002020017 | 79.6 | .37865 | 7.0E-34 |
002020018 | 67.4 | .85955 | 6.5E-34 |
002020021 | 91.6 | .98494 | 8.1E-34 |
Другими словами: каждый отдельный набор данных будет использовать одну или несколько подтаблиц (их можно добавить «динамически», еслинеобходимо, и вы по-прежнему можете создавать запросы стандартными средствами, вам просто нужно объединить подтаблицы (где это возможно: то есть, если вы хотите анализировать по направлениям ветра и показателю преломления, вы можете - но только когда вы установилиданных, которые имеют оба значения), используя ссылочные ключи для обеспечения их согласованности).
Я считаю, что это более эффективно, чем использование текстовых полей с CSV внутри, или двоичных объектов данных или использование ассоциаций ключ-значение.