Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как написать социальную сеть

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
psevdo
Отправлено: 19 Марта, 2011 - 08:04:16
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




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

(Отредактировано автором: 19 Марта, 2011 - 08:05:14)

 
 Top
Champion Супермодератор
Отправлено: 19 Марта, 2011 - 08:27:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ух, тут так просто опытом не поделишься. Если только совсем в общих чертах.
По базам данных. Я бы посоветовал PostgreSQL. Мне она больше нравится в плане работы со сложними запросами, с их оптимизацией.
Архитектура БД. Ну всё как всегда: нормальные формы, индексы по полям, по которые используются в условиях, сортировках, группировках. Можно дублировать некоторые данные в 2 таблицах, чтобы избежать жойнов ради мелочей. Например, чтобы вывести имена авторов сообщений на странице не здорово жойнить ради этого таблицу с авторами. Имя автора можно продублировать в таблице с сообщениями.
Некоторые структуры данных, возможно, стоит хранить не в существующих субд, а написать что-то в соответствии со своими потребностиями. Например, если ни реляционаая, ни иерархическая модель данных, никакая другая не устраивает по каким-то причинам, но есть в голове умная мысль, то вот...
Структура кода. Он должен быть понятным, расширяемым, масштабируемым. Есть книжка Макконелла "Совершенный код". Она большая, но полезная. Стоит прочитать.
 
 Top
psevdo
Отправлено: 19 Марта, 2011 - 09:09:00
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




А по базам данных можете какую нибудь литературу посоветовать7 меня интересует организация данных.
 
 Top
Champion Супермодератор
Отправлено: 19 Марта, 2011 - 09:22:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




По базам данных честно говоря не знаю.
http://rus[dot]logobook[dot]ru/prod_show[dot][dot][dot]ject_uid=2144517
Возможно, что вот это хорошая книжка, потому что ее автор преподавала у меня базы данных и хорошо меня им научила.
 
 Top
psevdo
Отправлено: 19 Марта, 2011 - 09:37:32
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Сейчас многие веб-приложения пишутся с mvc-архитектурой.. вы не подскажите как например разместить контроллеры на одном сервере, модели на втором, а отображения на третьем7
 
 Top
Champion Супермодератор
Отправлено: 19 Марта, 2011 - 09:46:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Может и подскажу, но я не сталкивался с этим и не вижу целесообразности такого разделения. Может кто-то, кто видит, расскажет.
Любое (или почти любое) действие состоит из взяимодействия модели, контроллера и отображения. Можно разделить группы взаимно не связанных M, V и С. Типа веритикальное разделение такое получится. Но в горизонтальном, в отделении М от V и от С я смысла не вижу.
 
 Top
psevdo
Отправлено: 19 Марта, 2011 - 10:03:21
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Дело в том, что я недавно наткнулся на статью про высокогруженные проекты и впервые в жизни увидел такие словосочетания как "ферма mysql-серверов" и пр.)))) я так понимаю эти машины в кластер объединяются.. хотя эта тема наверное больше к администрированию относится.. но все же хотел получить хотя бы общее представление, потому как с кластерами тоже дела не имел.
 
 Top
Champion Супермодератор
Отправлено: 19 Марта, 2011 - 10:18:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Про это я не скажу ничего)
 
 Top
Мелкий Супермодератор
Отправлено: 19 Марта, 2011 - 11:38:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




По базам данных:
существующие большие проекты, как правило, не используют реляционную модель. БД там только как ключ-значение.
Вот любопытные ссылки имеются:
http://www[dot]insight-it[dot]ru/masshta[dot][dot][dot]va-goda-spustya/
http://www[dot]insight-it[dot]ru/masshta[dot][dot][dot]ektura-facebook/
Связано это с тем, что реляционные базы данных неважно маштабируются горизонтально.
Там популярны noSQL.

psevdo пишет:
вы не подскажите как например разместить контроллеры на одном сервере, модели на втором, а отображения на третьем7

Так вы только на корню убъёте производительность и, возможно, даже уйдёте в минус, относительно одиночного сервера.
На каждую машину кластера дублируется весь код. Тогда каждый поступающий запрос сервер обрабатывает самостоятельно и можно легко отключать и добавлять новые сервера, только меняя настройки на балансере нагрузки.


-----
PostgreSQL DBA
 
 Top
psevdo
Отправлено: 19 Марта, 2011 - 12:08:13
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Мелкий пишет:
По базам данных:
существующие большие проекты, как правило, не используют реляционную модель. БД там только как ключ-значение.
Вот любопытные ссылки имеются:
http://www[dot]insight-it[dot]ru/masshta[dot][dot][dot]va-goda-spustya/
http://www[dot]insight-it[dot]ru/masshta[dot][dot][dot]ektura-facebook/
Связано это с тем, что реляционные базы данных неважно маштабируются горизонтально.
Там популярны noSQL.


А вы не могли бы объяснить что значит горизонтальное масштабирование БД.. а то выражение слышал, а как это работает не в курсе.
 
 Top
Мелкий Супермодератор
Отправлено: 19 Марта, 2011 - 12:32:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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


-----
PostgreSQL DBA
 
 Top
psevdo
Отправлено: 19 Марта, 2011 - 13:01:07
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Мелкий пишет:
На пальцах:
вертикальное маштабирование - будет рост производительности, если взять более быстрый проц, больше памяти и т.п.
горизонтальное маштабирование - можно раскидать нагрузку на разные физические машины.



То есть с БД ничего не делается, просто используются ресурсы n-го числа машин7
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB