Re[5]: Вопрос по взаимодействию Servlet и БД. Большие нагруз
От: Cyberax Марс  
Дата: 25.08.07 12:59
Оценка:
Здравствуйте, Дельгядо Филипп, Вы писали:

C>>С базой данных — это тупик. Думайте про умные распределенное файловое хранилище. Можно прочитать про то, как устроен LiveJournal:

ДФ>Гм, а почему с базой данных — тупик? Разумеется, одна глобальная БД с действительно большим объемом данных не справиться (вернее, слишком дорого будут стоить лицензии со всеми partioning'ами). Но почему в качестве элемента распределенной системы лучше использовать файловую систему, а не БД — мне не очевидно.
Потому, что лучше файловой системы для отдачи файлов по сети — пока ничего не придумали.

ДФ>Конечно, partioning и методы ребалансинга между отдельными узлами придется делать самому, но хотя бы не будет проблем с организацией HA, да и обновления будет выглядеть проще.

А теперь подумай — если ты уже сам делаешь partitioning и HA, то почему не сделать еще один шаг и не использовать файловую систему вместо блобов в БД?

Точнее, я бы использовал комбинированую схему — сделал бы центральную БД, где хранятся все блобы (удобно для бэкапа и т.п.) и систему, которая распихивала бы блобы по узлам-серверам. Таким образом, очень легко обеспечить HA — упадет одна нода, так просто перераспределяем ее данные на работающие узлы.

ДФ>Сравнения производительности работы с файлами и с блобами для приличных БД я никогда не видел, а так как наши тесты БД упирались явно в железо, то не понятно, с чего файловая структура должна быть существенно быстрее, а вот ее поддержка будет не проще.

Сравнивал — разница в десятки раз. Lighthttpd забивает стомегабитный канал статическими файлами даже не напрягаясь (уровень загрузки процессора близок к 5%-10% на каком-то P4), тут еще сказывается его асинхронная неблокирующаяся натура. Tomcat/Jetty на таких нагрузках съедает весь процессор.

ДФ>Впрочем, возможно, я действительно что-то не понимаю, проектов класс LJ делать не приходилось.

ДФ>Да и вряд ли в данном случае речь идет о проекте с нагрузкой порядка десятков тысяч транзакций в секунду. А тысячи транзакций можно реализовать и через блобы на какой-нибудь DB2 Express C.
Сотни транзакций в секунду, кстати, на определенных видах приложений получить можно легче легкого даже с небольшим числом клиентов.

ДФ>Но вот про кэш подумать стоит (про memcached, скорее всего).

Memcached лучше всего подходит для сколь-либо динамических данных (типа комментариев в блогах). Для статических данных он только вредить будет.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.