aktuba

Рейтинг
68
Регистрация
29.12.2007
Stek:
Ну так откажитесь от БД. С таким же успехом можно утверждать, что в машине самое узкое место - это мотор, так как постоянно туда требуется бензин подавать.

Ну так я выше и написал, когда, по какой причине и чем заменили базу. ))))

Я ни разу не сказал, что не надо использовать базу, говорил только о том, что БД узкое место веб-проектов. И да, в автомобиле часто движок узкое место - из-за него автомобиль не может ехать быстрее и/или быстрее разгоняться ;)

Stek:
Если у вас вся логика завязана на БД, естественно вы туда упретесь. Но и называть БД узким местом не правильно. Вы почему то разрешаете расширять себе канал, менять фронтенд, а как проблемы с базой - то тут же БД виновата. Возьмите и расширьте процессорную мощность, перепишите структуру под проект. Если для генерации 1 страницы вы 100 раз обращаетесь к БД, то это совершенно не проблема БД.

На БД у меня завязанно только хранение данных. Логика в коде. А у Вас иначе? ))

По поводу канала - я не говорил о его расширении, говорил о снижении нагрузки на него. Не надо перевирать слова ;). Так же и с базой - часто надо не расширять ресурсы под нее, а изменить логику приложения, разгрузив БД. Разве я не это говорил выше? )

100 раз на 1 страницу?! Да Вы, сударь, ни разу не писали бизнес-приложения, но рассуждаете о нагрузках? o_O Я могу показать Вам приложение, в котором на одну страницу идет около 3000 запросов к базе и еще больше у другим компонентам. При этом, генерация этой самой страницы занимает 0.0055 сек.

Проблема БД - долгая обработка запроса к ней. Долгая - понятие относительное. Для какого-то запроса это может быть 1 сек, а для какого-то и 0.0001 - долго. И перенеся логику этих запросов на другую технологию (да хоть на кеширование) можно ускорить приложение в десятки/сотни/тысячи раз. Именно это и называется "узкое место" - то место, которое занимает самые большие ресурсы (включая временные) на обработку запроса.

История из практики (которую и Вы можете у себя проверить): заменив поиск данных с sql-запроса на сфинкс получите ускорение поиска по сайту раз в 100. И это при том, что меняется только формат индексирования (даже не хранения - данные так же остаются в БД). Разве в данном случае узкое место не БД? )))))

Stek:
И что там в замен предлагали ? Редкий курс приносит полезное решение, в 99% это пережевывание соплей и уже известной каши.

Во-первых, у меня самого достаточно большой опыт построения и обслуживания веб-проектов. Во-вторых, основное в конференциях и семинарах не готовые решения, а общение. И решение проблем с БД разные: шардинг, партиции, кеширование и пр. Я уже выше писал про это.

Но Вы так и не ответили на вопрос: на чем основывается утверждение, идущее вопреки мировой статистике, что БД не может быть узким местом? Навскидку, могу предположить пару-тройку вариантов:

1. Узкий канал, который забивается быстрее, чем падает база. Gzip+браузерное кеширование+cdn легко решают подобную проблему.

2. Слабый фронтенд, не успевающий обслужить поток входящих соединений. Nginx, при правильной настройке, решит и эту проблему.

3. Сложные вычисления в скриптах. Тут проблема в неправильной архитектуре.

Все выше основано на общении с создателями довольно сложных и масштабных проектов + личный опыт. Именно эти факторы позволяют мне утверждать, что в большинстве случаев проблема ТОЛЬКО в БД. А Вы на каких данных утверждаете обратное? Мне действительно очень интересно, т.к. это позволит узнать что-то новое, что-то, что я возможно упустил в своей практике.

Stek:
Вообще то я говорил о совершенно другом, а именно о бредовости заявления "база данных всегда узкое место, это у всех так".

Бредово оспаривать это... Я посетил достаточно много конференций и семинаров, посвященных стартапам и веб-разработкам и везде говорили именно о том, что самое узкое место БД. Я считаю, что это большая статистика. А Вы на чем основываетесь, утверждая, что БД не может быть узким местом? На своем сервере? ))

Stek:
50к весьма относительная цифра. Для вордпресса это много, для заточенного под проект движка - мало. В адалте 50к вообще так себе, середнячок. У меня на работе сайт 100 юников в сутки и пара десятков миллионов записей данных для логистик компании, где база грузится почище любого вордпресса. Вот и думай, что значит "большая нагрузка".

Текущая моя работа: 400-500 уников онлайн круглосуточно. При этом 20Мб канала занимают постоянно. И схема выше, когда данные готовятся еще до появления пользователя, именно с него. Да, "большая нагрузка" - понятие относительное, полностью согласен.

Stek:
а меня вот смущает требования наличия mysql библиотек для инсталяции сфинкса. Отказ от БД говорите ?

Ну так в посте никто полностью не отказывался от бд, там вариант разгрузки бд за счет стороннего инструмента. А сфинкс может отлично работать и с файлами ;)

Все-же на это отвечу и буду считать диалог закрытым )))

SeVlad:
Чушь же! Или передёргивание, как будет угодно. В "грязном" виде процесс выглядит так:
1. запрос страницы юзером
2. начало генерации
while (..)
{
3. запросы в БД\к файлам
4. генерация по результатам
5. (опционально) запросы (ы) к запрашивающему ЮА
}
endwhile;

5. конечный результат генерации
6. Обработка сервером для выдачи (gzip например)

А если так:

1. начало генерации

while (..)

{

2. запросы в БД\к файлам

3. генерация по результатам

4. (опционально) запросы (ы) к запрашивающему ЮА

}

endwhile;

5. запрос страницы юзером

6. конечный результат генерации

7. Обработка сервером для выдачи (gzip например)

SeVlad:
Т.е. были проведены сравнивания работы высоконагруженных проектов вначале на БД а потом, после их переноса, на ФС? Сравнивали при максимально одинаковых условиях?

Да, только не всю систему, а некоторую ее часть (процентов 40 системы). На одном сервере, на одних пользователях и пр. ФС победила. Но ведь это не важно, верно? ))))

Да и у вас ФС победит, если захотеть. Другое дело - поклонение одному направлению, с этим трудно бороться.

SeVlad:
ууу как всё запущено... Опять мешаешь тёплое с мягким..
Что не может быть один точный запрос на доли мс при времени генерации страницы до 1 сек? Очень даже может. Это вообще никак не связано (ну почти ;)).

Может. При кривых ручках ;)

SeVlad:
А вообще можно считать генерация начинается ДО запроса в БД, а заканчивается много позже. Так что подобные заявления - бред

Не, нельзя так считать. Иначе придется считать, что запрос данных из базы начинается до того, как пришел юзер (при использовании pconnect). Да и вообще, данные из базы могут запрашиваться отдельно от генерации страниц (например, демон заранее генерирует страницы) ;). Так что "запущено" и "бред" надо употреблять аккуратнее ;)

SeVlad:
Именно. Но есть куча нюансов... Таже генерация (создание) кеша - это доп. нагрузка на хостинг. И опять про скорость чтения винтов...

Стоп-стоп-стоп... Мы про какие винты говорим? Сата? Скази? Ссд? Это во первых. Во-вторых, кто говорит, что надо использовать именно диски? Что, религия запрещает создавать виртуальные диски в памяти? )

Ну а считать генерацию кеша дополнительной нагрузкой - это нечто, т.к. задача кеши именно избавить сервак от основной нагрузки ;)

SeVlad:
Ключевой момент - выделен бодом. Но задай себе (и им вопрос) - можно ли избавиться от БД и перевести хранение данных на ФС? Ответ, думаю, очевиден.

Ну так я и отвечаю на этот вопрос. Да, можно избавиться от БД (в ее привычном обозначении). И да, можно перенести хранение данных на ФС. Вопрос только в реализации и не более того, а тут уже надо исходить из требований и целей.

SeVlad:
Поэтому прямые заявления типа ... являются бредом диагональночитающих..

Мдя... Вы работали с нагруженными проектами? Например, 200-300к уников при 3-5М просмотров? Я вот работал. И все, что я говорил выше - это практический опыт, а не теория.

Вообще, всегда удивляли люди, которые начитавшись "умных" книг строят теории. Вот вам еще один холивар - нормализация БД в крупных проектах вредна. А по учебникам - наоборот ;). Ну а я удаляюсь из темы - доказывать, что земля круглая, дело не благодарное в принципе ;)

Stek:
Тормоза в БД означают то, что если перевести эти же операции на файловую систему - она просто сдохнет в момент со всем сервером. Кеширование же используют для того, что бы не выбирать одно и то же по сотне раз, когда результат не меняется.
Так что не надо путать обработку/поиск данных и получение уже готовых данных.

Да ладно?! http://habrahabr.ru/post/64325/ - простой пример, когда отказ от БД дает только плюс.

А про кеширования я разве не то же самое говорил? Процитирую СВОИ слова:

Ну так я про то и говорю, что время на генерацию результата мизерно, по отношению к получению данных из базы.



---------- Добавлено 05.10.2012 в 10:36 ----------

P.S.: вообще, я не говорил, что БД - плохо )). Использование базы данных дает огромные плюсы, но и несет свои минусы. И когда человек говорит, что БД никогда не будет самым слабым местом в веб-проекте - это повод усомниться в его квалификации.

Опросил всех знакомых, кто так или иначе работал с более-менее нагруженными проектами (от 50к уников в сутки). Во всех, без исключений, случаях проблемы были только с базой.

Из своего опыта: один сервер может держать тысячи одновременных подключений, а вот база данных такого не выдерживает (разговор не о select 1). Именно поэтому и используются шардинги, репликации, партиции и пр. плюшки.

@Root77 - индексы были приведены в пример, как фича баз данных. Хотя их можно использовать почти везде, включая файловые хранилища.

SeVlad:
Да ладно! "Элементарная" операция - поиск уже при нескольких (10ков) тыщ "данных" и уже выигрыш в скорости на лицо. Потому что индексация...

Ни разу. На спор, без базы сделаю быстрее? Или индексы есть только в базах? )))

SeVlad:
Не надо путать тёплое с мягким. А именно кол-во запросов, время их выполнения и скорости генерации страниц по их результатам.

Ну так я про то и говорю, что время на генерацию результата мизерно, по отношению к получению данных из базы.

SeVlad:
А кеширование - это такой скользкий момент.. Не всё с ним так хорошо, как на него молятся.

Просто некоторые не умеют правильно готовить ))). В реале, кеширование спасает именно от обращения к базе, а не от генерации результатов, верно? )

SeVlad:
(убивают советы для ВП - поставь кеш-плаг для ускорения ВП.. повбывавбы)

Ну-ну... http://aktuba.com/o-bloge.html - именно кеш помогает ;)

Stek:
Ну если вы кроме уг скриптов на таких же виртуалах не пробовали, то да. На нормальном сервере и скрипте, мускуль никогда не будет слабой точкой.

Я работал с большими нагрузками. Не на одном проекте. И тормоза ВСЕГДА именно в БД. Никогда не задумывались, для чего используется кеширование?

SeVlad:
Угу, это наверное дураки перешли с файлохранилищ данных на базы :)

Перешли не из-за скорости работы, а из-за удобства. Попробуйте в файловом хранилище нормально настроить индексы, особенно составные. А потом замерьте удобство и скорость работы.

Плюс базы данных, изначально, именно в удобной работе с данными, а уже потом идут другие плюшки (триггеры, шардинг, партиции и пр.). И кстати, практически все движки баз данных имеют внутреннюю систему кеширования именно по причине НЕ быстрой работы с данными.

ant_key:
В тред врывается недиванный ускоритель сайтов:

Можно ускорить php на сервере - APC для интерпретатора php и memcached для сессий
Ускорить отдачу статики - ngingx
Включить кеширование - зависит от CMS уже.


Пользуйтесь.

Похоже, все-же именно диванный ))) Как сессии в мемкеше ускорят сам php? o_O Наверное, имелось в виду ускорение обработки сессий? Ну тогда надо вообще от сессий отказываться, в пользу обычных кук (секретный данные необходимо шифровать в них). Даже полностью зашифрованные куки работают ЗНАЧИТЕЛЬНО быстрее сессий в мемкеше ;)

Почему предлагается на nginx только статику повесить? Почему-бы не отдать ему часть функционала (например, ресайз изображений, кеширование отдаваемых страниц, gzip в конце-концов)?

Всего: 956