Какой лучший способ представить разреженную матрицу данных в PostgreSQL? Я вижу два очевидных метода:
-
Храните данные в одной таблице с отдельным столбцом для каждой мыслимой функции (потенциально миллионы), но со значением по умолчанию для NULL для неиспользуемых функций. Это концептуально очень просто, но я знаю, что с большинством реализаций RDMS это обычно очень неэффективно, поскольку значения NULL обычно занимают некоторое пространство. Тем не менее, я прочитал статью (не могу найти ссылку, к сожалению), которая утверждала, что PG не принимает данные для значений NULL, что делает ее более подходящей для хранения разреженных данных.
-
Создайте отдельные таблицы "строка" и "столбец", а также промежуточную таблицу, чтобы связать их и сохранить значение для столбца в этой строке. Я считаю, что это более традиционное решение RDMS, но с ним связано больше сложности и служебных обязанностей.
Я также нашел PostgreDynamic, который утверждает, что лучше поддерживает разреженные данные, но я не хочу переключать весь сервер базы данных на вилка PG только для этой функции.
Есть ли другие решения? Какой из них я должен использовать?