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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): [1] 2 3 4 »   

> Описание: аритектура, вопросы к ГУРУ
DlTA
Отправлено: 22 Февраля, 2013 - 14:26:46
Post Id



Постоянный участник


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


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




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

и на данный момент повесткой дня БД.

простейший вариант в данном случае это репликация, НО имхо это самый последний уровень абстракции, ибо данный вариант плох тем что на самом деле львиная часть каждого отдельного сервера уходит не перелопачивание фиговой кучи данных (причем одной и той же)
и зародилась мысля (а точнее по некоему примеру твитера) изначально готовить к резнесению некие субъекты (таблицы) на разные сервера, так как к примеру разработчики твитера часть работы (join-ы) переложили на программную часть

ну а уже каждый конечный сервер можно подвергнуть при необходимости репликации

дык вот может у кого есть какой нить опыт в подобном?

на данный момент "сложность" вижу:
1) в том как определяться (красиво) к какому серверу обращаться за конкретными данными.
2) насколько избавляться от join-ов, в смысле что можно оставлять на отдельном сервер.
 
 Top
Stierus Супермодератор
Отправлено: 23 Февраля, 2013 - 10:34:44
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




зачем?
 
My status
 Top
DlTA
Отправлено: 23 Февраля, 2013 - 11:54:51
Post Id



Постоянный участник


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


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




Stierus пишет:
зачем?
что "зачем?"?
вся эта котовасия? для возможности распределения нагрузки, для избежания головняка в будущем, для оптимизации работы серверов.

или говоря проще стелю себе большой ком соломы.
 
 Top
Stierus Супермодератор
Отправлено: 23 Февраля, 2013 - 13:50:30
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




На все случаи жизни не перестрахуешься Улыбка
Оптимизировать нужно конкретные запросы к бд и куски кода
Распределять какую именно нагрузку вы планируете, вы хорошо себе представляете себе профиль этой нагрузки? Будет у вас больше записей или апдейтов, какого рода связи в таблицах планируются и примерные размеры этимх самый таблиц ? Невозможно улучшать то - не знаю что Улыбка

Есть некие вещи, до которых доходишь с опытом, но у каждого они свои. Я не делаю никогда триггеры в базе данных, не использую связи таблиц на уровне бд, не использую NOW() и тд в запросах: апдейчу только инкрементально, не оптимизирую заранее, не пихаю ООП везде, где попало, не использую фреймворки в нагруженных проектах ... из остального уже зависит от обстоятельств Улыбка
 
My status
 Top
DlTA
Отправлено: 23 Февраля, 2013 - 14:14:07
Post Id



Постоянный участник


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


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




вопрос оптимизации скриптов, базы, ...
не рассматривается,
ибо это в априори, все скрипты все запросы на момент расширения уже оптимизированы.

вопрос о том что там дальше.
 
 Top
vanicon
Отправлено: 23 Февраля, 2013 - 15:21:31
Post Id



Частый посетитель


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


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




Извините что отхожу от темы, но все же интересно.
Stierus пишет:
не использую фреймворки в нагруженных проектах

Вот про это можно по подробнее.
Как вы делаете, если не на фреймворке?
Роутинг должен быть, должен.
Единая точка входа, так называемый FrontController.
Используете ли вы MVC (Разделение логики от отображение)?
Просто все ровно как бы фреймворк мини получается нет?

(Отредактировано автором: 23 Февраля, 2013 - 15:23:41)



-----
Так было, так есть и так будет
 
 Top
DlTA
Отправлено: 23 Февраля, 2013 - 16:12:27
Post Id



Постоянный участник


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


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




vanicon, все очень просто, почти любой фреймверк расчитан на общие ситуации, а следовательно в нем множество "блоков" которые в конкретном случае приводят лишь к замедлению.
 
 Top
Stierus Супермодератор
Отправлено: 23 Февраля, 2013 - 16:23:10
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




vanicon, все что вы описали - библиотеки из пары классов
 
My status
 Top
vanicon
Отправлено: 23 Февраля, 2013 - 17:26:16
Post Id



Частый посетитель


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


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




Все ясно, просто "не использую фреймворки в нагруженных проектах" не совсем правильно, ведь как бы фреймворк есть, просто свой, самый простейший, там роутинг, mvc, класс для работы с бд, работа с view и тд...
Ну а по теме, насчет как определить к какому серверу за данными обращаться, думаю стоит для этого использовать nosql бд, типа redis, ну это так для размышлений...


-----
Так было, так есть и так будет
 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Февраля, 2013 - 19:29:42
Post Id



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


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


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




vanicon пишет:
"не использую фреймворки в нагруженных проектах" не совсем правильно
совсем правильно.
 
 Top
Stierus Супермодератор
Отправлено: 24 Февраля, 2013 - 21:44:56
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




Цитата:
Все ясно, просто "не использую фреймворки в нагруженных проектах" не совсем правильно, ведь как бы фреймворк есть, просто свой, самый простейший, там роутинг, mvc, класс для работы с бд, работа с view и тд...


роутинг - 2 класса
mvc - архитектура, то, как ты делишь свое приложение на логические блоки ... доп кода не требует
класс для работы с бд - PDO
работа с view - не очень понимаю, что имеется ввиду

итого, если 2 класса ты называешь фреймворком - ОК, но я с тобой не согласен Улыбка

Цитата:
Ну а по теме, насчет как определить к какому серверу за данными обращаться, думаю стоит для этого использовать nosql бд, типа redis, ну это так для размышлений...
бред какой-то ... как связан роутинг запросов между нодами шард с nosql? оО
 
My status
 Top
vanicon
Отправлено: 24 Февраля, 2013 - 23:20:53
Post Id



Частый посетитель


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


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




Цитата:
итого, если 2 класса ты называешь фреймворком - ОК, но я с тобой не согласен

Ну там вовсе не 2 класса, но считать я не буду, суть не в этом.
Просто с моей точки зрения библиотека, это тупо набор классов/функций для решения определенных задач...
А сама структура приложения, должна же быть, как я ранее писал 1 точка входа и тд
Stierus пишет:
работа с view - не очень понимаю, что имеется ввиду

Это связано с mvc.
Stierus пишет:
бред какой-то ... как связан роутинг запросов между нодами шард с nosql? оО

Если я правильно понял проблему автора, то проблема в том что нужно знать на каком сервере(я имею ввиду mysql) лежат какие-либо данные...
Я предлагаю решения типа что-то этого:
К примеру у нас 3 сервера, 2 сервера mysql, 1 сервер redis
Сервер на котором стоит redis будет знать где и какие данные лежат...
Посылается запрос на сервер с редисом, он дает инфу где лежат эти данные к которым идет запрос, а дальше уже делать запрос к нужному mysql серверу.
Конечно можно использовать вместо redis и любую другую бд, хоть тот же mysql, но как бы этот роутинг не стал бы "узким горлышком".
А redis за счет хранения данных в ram сможет достаточно быстро этим заниматься...
Ну вот как-то так...

(Отредактировано автором: 24 Февраля, 2013 - 23:27:54)



-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 24 Февраля, 2013 - 23:54:02
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




самопальные кластеры и балансировщики нагрузки - полная чушь
для этого уже есть готовые решения, просто для таких систем не пишут на mysql и PHP.

Цитата:
А redis за счет хранения данных в ram сможет достаточно быстро этим заниматься...

если будет достаточно ram для кеша, mysql будет делать это не менее быстро.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
vanicon
Отправлено: 25 Февраля, 2013 - 00:08:32
Post Id



Частый посетитель


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


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




caballero пишет:
самопальные кластеры и балансировщики нагрузки - полная чушь

Полностью поддерживаю!
Я слышал что есть какой-то там спец mysql cluster
различные nosql решения, к примеру mongodb....
Использовать ту бд которая может расширяться без костылей и тд, но на начальном этапе этого ничего и не нужно...
caballero пишет:
просто для таких систем не пишут на mysql и PHP.

Ну а почему на php не пишут?
это только web морда, а ее можно и на пыхе сделать.
caballero пишет:
если будет достаточно ram для кеша, mysql будет делать это не менее быстро.

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

(Отредактировано автором: 25 Февраля, 2013 - 00:14:38)



-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 25 Февраля, 2013 - 00:31:35
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
Ну а почему на php не пишут?
это только web морда, а ее можно и на пыхе сделать.

web морда - это HTML

А серверную часть для таких делов пишут на яве - J2EE сервера приложений кластеризуются из каропки.
То же касается промышленных серверов БД.
А балансировщики вообще ставятся апаратные какие нибудь Cisco


Цитата:
Насчет быстродействии mysql я сомневаюсь, потому что насколько я знаю и проверял сам redis на несколько порядков быстрее работает...

обычно нужна работа с данными посложнее чем просто ключ-значение. А на более менее сложных выборках NoSQL БД сразу проседают.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB