Исходные данные: в системе нужно сохранитьь огромное число отдельных документов (скорость поступления данных не очень велика — несколько Мб в секунду; документов десятки миллионов; отдельные файлы — очень плохая идея, все тормознутое, хотя бы из-за необходимости удаления, это уже пройденный этап), и желательно ввод-вывод сделать максимально быстрым. В общем надо хранить много бинарных данных. Блобы для этого подойдут (каковы у них издержки) или больше пойдет нечто узкоспецилизированное? Может что-то посоветуете?
On 17.03.2011 00:15, trophim wrote:
> Исходные данные: в системе нужно сохранитьь огромное число отдельных документов (скорость поступления данных не очень велика — несколько Мб в секунду; документов десятки миллионов; отдельные файлы — очень плохая идея, все тормознутое, хотя бы из-за необходимости удаления, это уже пройденный этап), и желательно ввод-вывод сделать максимально быстрым. В общем надо хранить много бинарных данных. Блобы для этого подойдут (каковы у них издержки) или больше пойдет нечто узкоспецилизированное? Может что-то посоветуете?
Facebook например картинки хранит в файлах таким образом, что множество
картинок оказываются в одном и том же файле. В бд при этом хранится имя
общего файла, смещение блоба и его длина. После того как данный общий
файл превысит некий установленный размер заводитс следующий и т.д.
Удаление блобов при удалении записи при этом не производится — лежит
себе блоб и лежит, хранение нынче недорогое.
Также можно посмотреть на SVN — один из вариантов хранения файлов в
репозитории SVN это BerkleyDB
Здравствуйте, trophim, Вы писали:
T>Исходные данные: в системе нужно сохранитьь огромное число отдельных документов (скорость поступления данных не очень велика — несколько Мб в секунду; документов десятки миллионов; отдельные файлы — очень плохая идея, все тормознутое, хотя бы из-за необходимости удаления, это уже пройденный этап), и желательно ввод-вывод сделать максимально быстрым. В общем надо хранить много бинарных данных. Блобы для этого подойдут (каковы у них издержки) или больше пойдет нечто узкоспецилизированное? Может что-то посоветуете?
Использовать FileStream в MS SQL 2008 R2.
Сами файлы лежат на диске, но работу с ними обеспечивает сервер, через обычный sql.
Здравствуйте, Anton Batenev, Вы писали:
AB>MongoDB
Это такое тонкое издевательство? MongoDB это документная база данных, хранить в ней бинарники, можно конечно, но не стоит. Если уж двигаться в сторону noSQL, то нужно смотреть на key-value хранилища.
Хотя есть подозрение, что топикстартера скорее спасут выбор и настройка правильной файловой системы для существующего файлового хранилища.
разумно только если файлы более менее приличного размера от 1-2 мб
BE>Здравствуйте, trophim, Вы писали:
T>>Исходные данные: в системе нужно сохранитьь огромное число отдельных документов (скорость поступления данных не очень велика — несколько Мб в секунду; документов десятки миллионов; отдельные файлы — очень плохая идея, все тормознутое, хотя бы из-за необходимости удаления, это уже пройденный этап), и желательно ввод-вывод сделать максимально быстрым. В общем надо хранить много бинарных данных. Блобы для этого подойдут (каковы у них издержки) или больше пойдет нечто узкоспецилизированное? Может что-то посоветуете?
BE>Использовать FileStream в MS SQL 2008 R2.
BE>Сами файлы лежат на диске, но работу с ними обеспечивает сервер, через обычный sql.
Здравствуйте, Miroff, Вы писали:
M> Это такое тонкое издевательство? Если уж двигаться в сторону noSQL, то нужно смотреть на key-value хранилища.
Ничуть. GridFS вполне неплохо справляется с данной задачей, плюс получаем шардинг и репликацию в одном флаконе — достаточно удобно, когда диск закончится, плюс возможность отдавать файлы напрямую из nginx минуя "толстый слой шоколада".
M> Хотя есть подозрение, что топикстартера скорее спасут выбор и настройка правильной файловой системы для существующего файлового хранилища.
Здравствуйте, rm822, Вы писали:
T>> Может что-то посоветуете? R>в таких объемах — не хранить в базе. она не для этого предназначена
Вы где-то нашли информацию о предназначении баз? Поделитесь, пожалуйста.
Здравствуйте, Anton Batenev, Вы писали:
AB>Ничуть. GridFS вполне неплохо справляется с данной задачей, плюс получаем шардинг и репликацию в одном флаконе — достаточно удобно, когда диск закончится, плюс возможность отдавать файлы напрямую из nginx минуя "толстый слой шоколада".
Спасибо, не подумал про нее. У вас есть опыт использования GridFS в продакшене?
Re[5]: Хранение большого кол-ва бинарных данных
От:
Аноним
Дата:
23.03.11 08:28
Оценка:
Здравствуйте, Miroff, Вы писали:
M>Спасибо, не подумал про нее. У вас есть опыт использования GridFS в продакшене?
...если б еще кто-либо про hadoop (hdfs) написал отзыв, было бы хорошо.
Здравствуйте, Miroff, Вы писали:
M> Спасибо, не подумал про нее. У вас есть опыт использования GridFS в продакшене?
Как бы это сказать... На тестовом стенде оказалось, что мы укладываемся в лимиты документа по объему. По этому, после тестирования, GridFS признана излишней. А так:
Здесь одна табличка занимает почти 100% объема и количества. В пике около 120 запросов в секунду на выборки (сколько максимум сможет выдержать на боевом сервере не знаю, нет данных).
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Miroff, Вы писали:
M>>Спасибо, не подумал про нее. У вас есть опыт использования GridFS в продакшене?
А>...если б еще кто-либо про hadoop (hdfs) написал отзыв, было бы хорошо.
В hdfs плохая поддержка кучи мелких файлов. Нужно очень много памяти на namenode,
чтобы все имена файлов в нее влезли.
Если уж хочется hadoop — то стоит смотреть на реализацию хранилища руками на базе hbase
(как сделано в lily, подробнее),
или реализовать хранение нескольких файлов в одном.
Но лучше использовать что-то другое, более заточенное под хранение кучи файлов.
Здравствуйте, pansa, Вы писали:
P>Здравствуйте, trophim, Вы писали:
T>>ОС — WinXP. Какую ФС там можно кроме НТФС применить?
P>Домашняя ОС под хайлоад сервер... Вас ничто "не напрягает"?
Эх, не сыпьте соль... Заказчики они такие заказчики... =(