В моем приложении Ruby On Rails я должен хранить (относительные) большие матрицы размером около 300x300 элементов (значения поплавка, в основном разные) на один документ. При каждом получении документа полная матрица должна быть загружена для пользовательских вычислений. Матрицы также обновляются довольно часто (так что проблема записи и кэширование памяти тоже проблема).Хранить большую матрицу в приложении Rails
Что такое хороший способ хранения таких матриц (исполнение разумно)? Некоторые варианты, которые приходят на ум:
- таблица со столбцами
row
,column
иvalue
. Но я предполагаю, что выборка и хранение целой матрицы (около 90000 ячеек) - это не очень хорошая идея для каждого запроса (поможет некоторое кэширование памяти). - Сохраните матрицу, сериализованную в текстовое поле/столбец. Есть ли у вас какие-либо идеи, как он сравнивается с 1. с точки зрения производительности?
- Используйте некоторую базу данных документов (например, Mongo) и сохраните всю матрицу внутри одного поля документа (не уверен, где преимущество по сравнению с 2. is).
как насчет подключения с R или Matlab и др для матрицы работы и пусть они делают тяжелый груз? – fuzzyalej
отвечает на несколько схожий вопрос, даже если это не редкие данные, поэтому не все будут релевантными: http://stackoverflow.com/a/2599384/178651 - трюк, который, как мне кажется, должен сначала подумать о способе хранения/извлекать его эффективно в/из БД, тогда вы можете определить, сколько парсинга, сравнения и т. д. вам нужно сделать в Rails. –
Учитывая, что это уникальный сценарий для ваших нужд, я предлагаю вам попробовать несколько вариантов, которые выглядят лучше всего. Моя первая мысль состояла в том, чтобы просто сохранить его как большой blob (думаю, CSV) (вариант № 2). Но мне никогда не нужно было хранить что-либо вроде ваших требований, поэтому было бы трудно предсказать. Я бы не использовал MongoDB только для этого. Ваше описание не похоже на то, что вам понадобятся другие функции БД. – WiredPrairie