12.12.2009, 20:42 | #31 | |
Специалист
Регистрация: 27.02.2009
Сообщений: 400
Вес репутации: 206
|
Цитата:
Сдуру, конечно, можно и ...лоб сломать, можно и миллиард а одну БД загнать. Кто сказал, что загонять все это надо в одну БД? И, потом, загоняется в БД 1 (один) раз, а не каждый день, затем с этой базы (баз) извлекаем результат и заносим в рабочую БД. Что тут профессиональному программисту 1,5 месяца делать, с трудом себе представляю. Размышлять о неправильной реализации разве что. Наверное, такую задачу при желании и годами решать можно, если изначально все делать через... голову. Я не знаю скорости индексации Яндекса или Гугла, но сильно сомневаюсь, что там 72 млн записей 1,5 месяца в БД заносят. А вы, программер с 20-летним стажем, как думаете? Может вам к себе применить совет: "Так что не разбрасывайтесь словами о том, о чем представления не имеете."?
__________________
|
|
12.12.2009, 21:21 | #32 | |
Специалист
Регистрация: 10.11.2009
Сообщений: 231
Вес репутации: 188
|
Цитата:
Гугл производит собственные сервера (да, компоненты чужие, сборка, архитектура - своя), работающие на доработанной под себя Гуглом ОС (основана на линуксе, вроде как, достоверно неизвестно). Гугл имеет дейвайсик, который подключается напрямую к винчестеру и на него записывается предустановленная ОС, готовая вливаться в кластер. А теперь самое веселенькое - у гугла по оценкам экспертов 450 000 серверов. Вдумайтесь 450 тысяч! Я говорю о том, что я заносил 72 млн в ОДИН сервер - это большая разница. Распараллеленная на сотни серверов такая задача может решилась бы и за часы (после того как были бы потрачены недели на отладку механизма, в которых тоже используется не PHP, кстати, а C++/Java, разработка на которых по оценкам экспертов в 10 раз медленнее происходит) и технологии уровня класса MapReduce, Cascade и т.п. И это при том, что Вы придумаете как сделать что-то, что бы сэмулировало BigTable. Так что не сравнивайте НИКОГО с Гуглом - там работают супер-мега-эксперты, высшего класса умы. Яндекс тоже имеет (по разным оценкам) от тысячи серверов и проприетарную платформу для БД. Даже когда только появился Yandex.Server - он мог искать по миллионам документом за миллисекунды, что, в общем-то было неслыханно и даже сравниться не могло с какими-нибудь SQL серверами (за исключением Oracle, которую, скорее всего и использует Sape). Опять же - этих технологий НЕТ у других компаний (не Яндекса и не Гугла), поэтому всем остальным приходится разрабатывать что-то свое для шардинга данных (разбивания их на множества серверов) и на это и уходят дни, недели и т.п. Особенно в условиях наличия небольшого количества железа. Я могу еще долго объяснять Вам в чем разница между одним (даже очень профессиональным) программером с одним сервером и 17 000 программистов мирового класса с полмиллионом серверов, но думаю любому разумному человеку должно было еще до моего объяснения быть понятно в чем разница. Сделайте базу хотя бы на 50 млн записей из URL - TEXT и постройте для нее полнотекстовый индекс - тогда мне с Вами будет о чем поговорить. А пока Вы - теоретик. Да и еще насчет Яндекса. В рунете всего 2 млн доменов .ру - из них большинство спам, который не надо индексировать. В сапе 350 тыс. сайтов. Задача Сапы - почти на том же уровне, что и у Яндекса, только ресурсов (серверных и человеческих) у них на порядок меньше, так что делают что возможно. Добавлено через 26 минут И еще немножко пищи для теоретических размышлений. База на 72 млн - это был индекс всех главных страниц зоны .com. 72 млн записей за 43 дня - это 20 страниц в секунду (реально было больше 70 веб страниц в секунду, но несколько раз приходилось начинать заново, обнаруживая такие гиганские сетки, как паркинги доменов, сквоттеров и прочий спам), один раз у меня прямо во время индексации сгорел винчестер и пришлось начинать опять же заново. И это не считая, что еще и программировать это все надо было. Одна только организация очереди (вы не можете просто так сразу запихнуть 72 млн строк в память - это более 20ГБ информации), распределяющей нагрузку заняла неделю и то умудрялась ломаться, и когда она сломалась - пришлось писать failsafe механизм, чтобы не начинать сначала (поскольку было утрачено состояние - что проиндексировалось, а что - нет). Потом я обнаружил, что многие очень любят XHTML, что обозначало, что мне пришлось начать заново, заменяя все найденные & на &. И так далее, обработку умлаутов(ā) и дектетирование кодировок добавил - начинай заново. Вот и размышляйте что я делал 40+ дней... Результат - публикация на TechCrunch(блог с несколькими миллионами подписчиков по счетчику FeedBurner). Эксперты удивлены, что это вообще работает на одной машине. Я еще долго тут могу размахивать конечностями, меряясь их длиной, но суть не в этом... Суть в том, что у Сапы - 177 млн страниц(!), которые нужно индексировать несколько раз в день(!). Задача на порядки сложнее... и я восхищаюсь, что они справляются. Последний раз редактировалось Yappie; 12.12.2009 в 21:25. Причина: Добавлено сообщение |
|
12.12.2009, 21:58 | #33 | |
Специалист
Регистрация: 27.02.2009
Сообщений: 400
Вес репутации: 206
|
Цитата:
Частный случай - распределение данных по БД по какому-нибудь признаку, например по первой букве домена, по длине домена или еще по какому-то признаку - по контрольной сумме, к примеру. Что касается серверов: 20% с оборота достаточно, чтобы приобрести необходимое количество серверов. Сапа вообще не благотворительная организация, а коммерческая фирма с довольно немалыми оборотами. Hint: всех их вовсе не обязательно держать в датацентре, тем более в одном. Может возникнуть вопрос: зачем коммерческой фирме напрягаться по поводу сабжа? Отвечаю: не редки случаи, когда работающие страницы вылетают в error. Чем это плохо для Сапе? Ссылки как бы не стоят, но оптимизатор за них не платит, вебмастер денег не получает, и Сапа не получает свои 20%. Еще раз повторюсь: что Вы или я никогда не делали таких БД, не говорит о том, что таких специалистов нет в природе. Например, я ни раз не физик-ядерщик, но не стану утверждать, что таковых в мире не существует. А вот Вы отчего-то спорите о вкусе устриц, которых не едали. Ну попали вы на 45 суток редактирования БД, так это скорее говорит о вашей квалификации и/или отсутствии надлежащего железа, чем о том, что такими технологиями владеют лишь программисты "особого тибетского посвящения". Есть 2 подхода к решению любой задачи: а)"фигли думать, трясти надо" б)вначале хорошо подумать и прикинуть потребную мощность серверов, и только потом кодить. В простейшем случае сойдет и подход а), а вот в случаях миллионов полей, да еще и текстовых, в БД без второго подхода не обойтись. Или ждать 45 дней.
__________________
|
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Робот Сапы и Crawl-delay | Sea | Вопросы по работе системы | 10 | 13.02.2012 12:17 |
Часовой пояс GMT +3, время: 05:52.