Большие массивы данных и MongoDB

Рейтинг: 0Ответов: 2Опубликовано: 19.12.2014

Добрый день, у меня такой вопрос: есть определенные файлы (по сути растровые изображения? которые можно представить в виде двумерных массивов), растры-массивы чисел с плавающей точкой размером примерно 6000 на 6000. Нужно иногда чтобы веб-приложение делало некоторые операции с этими данными (сложение, умножение и прочее), например сложить один массив с другим и потом умножить на третий. Веб-приложение базируется на Django\Python.

Так вот сам вопрос: насколько целесообразно записывать сначала эти массивы, например в MongoDB? насколько MongoDB вообще хороша для таких задач (может есть что-то более подходящее)?

Заранее большое спасибо за ответ!

Ответы

▲ 1Принят

Для простых численных операций над 2D-массивами, можно использовать numpy -- быстр и удобен и установщики доступны на всех популярных системах.

Простой и переносимый вариант -- использовать родной для numpy-массив npy-формат, если нужно сохранить массивы на диск.

MongoDB не очень подходит для хранения таких данных. Если нужно, то можно легко сериализовать numpy массив и запихнуть получившийся блоб в MongoDB:

buf = io.BytesIO()
numpy.save(buf, numpy_array)
record['image'] = pymongo.binary.Binary(buf.getvalue())

Если есть потребность хранить много-терабайтные численные данные, то можно попробовать hdf5 файловый формат.

▲ 1

Может посмотришь в сторону CUDA (PyCUDA или другие библеотеки работающие с этой технологией)