Вопрос первый: существуют ли специализированные базы данных для хранения плотных и разреженных матриц? Я гуглил, но не нашел...
Рассматриваемая матрица огромна (10 ^ 5 на 10 ^ 5), но она разрежена, что означает, что большинство ее значений являются нулями, и мне нужно хранить только ненулевые значения. Вот я и подумал сделать вот такую таблицу:
2D Matrix
---------------
X Y val
---------------
1 2 4.2
5 1 91.0
9 3 139.1
И так далее. 3 столбца, два для координат, третий для значения этой ячейки в разреженной матрице. Вопрос 2. Является ли это лучшим способом хранения разреженной матрицы? Я также думал о MongoDB, но кажется, что создание одного документа на ячейку матрицы было бы слишком накладным. Базы данных, ориентированные на таблицы, работают медленно, но я могу использовать VoltDB :) Боковой узел: я подумал о Redis Hash, но не могу сделать его двумерным (нашел способ сериализовать 2D-матрицы и сделать их 1D, чтобы я мог хранить в хэш Redis или даже список)
Вопрос 3: Сколько байтов в строке будет использовать VoltDB? Координаты будут целыми числами в диапазоне от 0 до 10^5, а может и больше, значения ячейки будут вещественными.