Как лучше всего хранить большие разреженные матрицы в проекте django?
Я заканчиваю проект по общественному транспорту, в котором используется алгоритм Дейкстры. Алгоритм использует матрицы смежности, количество узлов превышает тысячи -> вероятно, собираюсь масштабировать это в 10-100 раз, мои матрицы разрежены - <10% ненулевых значений. Данные должны обновляться раз в день и доступны только для чтения.
Поскольку каждое из этих значений оценивается несколько раз за поиск, сейчас я сохраняю ненулевые значения в базе данных, затем создаю матрицу и сохраняю ее в виде json-файла (n-списков n-значений), который открывается и считывается каждый раз при запуске алгоритма.
Какова наилучшая практика хранения и загрузки данных такого типа? Должен ли я хранить ненулевые значения таким же образом и просто создавать разреженные матрицы с помощью numpy и сохранять их в виде файлов HDF5? Будут ли файлы HDF5 вносить задержку при чтении? Я бы хотел, чтобы конечный проект состоял из 20-50k узлов, сгруппированных в 1-5k матриц для каждого города, и был способен выдержать что-то вроде поиска в секунду.