Re[9]: Вопрос по взаимодействию Servlet и БД. Большие нагруз
От: Cyberax Марс  
Дата: 26.08.07 10:34
Оценка:
Здравствуйте, javaque, Вы писали:

J>2Cyberax: Вы могли бы прокомментировать следующих 2 момента в своих постах:

J>1)"...Точнее, я бы использовал комбинированую схему — сделал бы центральную БД, где хранятся все блобы (удобно для бэкапа и т.п.) и систему, которая распихивала бы блобы по узлам-серверам. Таким образом, очень легко обеспечить HA — упадет одна нода, так просто перераспределяем ее данные на работающие узлы."
J>Правильно ли я вас понял?: вы предлагаете, все же все картинки хранить в БД и при первом обращении к картинке в БД, перед тем как отобразить ее юзеру картинка пишется на диск (на винт одной из нод, определяемой, к примеру, случайным образом ) и затем, уже, с файловой система хттп-сервер отдает контент юзеру.
Примерно так. Точнее, я бы еще оптимизировал — писал бы картинку на диск сразу же при ее загрузке на сервер. В общем, просторов для творчества тут много.

J>Имхо сложно как то. Допустим надо будет определять впервый раз мы обращаемся к картинке или уже обращались (на ведь надо знать есть такая картинка или нет на файловой системе), для этого надо будет завести поле в таблице или проверять существование соответсвующего файла напрямую.

БД с этим справляется прекрасно — у нас всего-лишь простой поиск. Файл проверять не надо, мы клиенту просто выдаем ссылку на изображение вида http://node31.blah.com/blah/image123412341234.jpg, если мы уже знаем, что такой файл там есть, или отдаем файл нужной ноде, а потом возвращаем ссылку.

J>А может реализовать так: картинки сохраняются сразу на файловую систему (ФС) распределенную по нодам. А в БД хранить только различные атрибуты картинки (какому пользовалю принадлежит, в какой фотоальбом входит и т.п.) и путь до картинки на ФС (сетевой или абсолютный урл). Таким образом DAO, в методе getPics будет возращать не коллекцию бинарников, а колекцию стрингов-УРЛов до картинок

Распределенные ФС не очень хорошо масштабируются, говорю по опыту работы с OCFS2. Кроме того, нужно еще обеспечить high availability и резервирование данных. Это все сильно проще делать с одной центральной базой данных.

J>2) "Дело в том, что из memcached данные нужно передать на нужный хост — а это еще дополнительная загрузка сети. Проще иметь "персистентные кэши"."

J> Что есть "персистентные кэши"? Приведете плиз пару названий соотвеющих либов. Это что-то типа oscache?
Я имею в виду, что файловая система будет играть роль кэша.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.