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 :: резнесение базы на несколько серверов
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
ну как всегда наполеоновские планы по создание высоко нагруженных проектов.
почитав несколько статей стало понятно систему нужно готовить к масштабации сразу, чтоб потом не хвататься за голову
и на данный момент повесткой дня БД.
простейший вариант в данном случае это репликация, НО имхо это самый последний уровень абстракции, ибо данный вариант плох тем что на самом деле львиная часть каждого отдельного сервера уходит не перелопачивание фиговой кучи данных (причем одной и той же)
и зародилась мысля (а точнее по некоему примеру твитера) изначально готовить к резнесению некие субъекты (таблицы) на разные сервера, так как к примеру разработчики твитера часть работы (join-ы) переложили на программную часть
ну а уже каждый конечный сервер можно подвергнуть при необходимости репликации
дык вот может у кого есть какой нить опыт в подобном?
на данный момент "сложность" вижу:
1) в том как определяться (красиво) к какому серверу обращаться за конкретными данными.
2) насколько избавляться от join-ов, в смысле что можно оставлять на отдельном сервер.
Stierus
Отправлено: 23 Февраля, 2013 - 10:34:44
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
зачем?
DlTA
Отправлено: 23 Февраля, 2013 - 11:54:51
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Stierus пишет:
зачем?
что "зачем?"?
вся эта котовасия? для возможности распределения нагрузки, для избежания головняка в будущем, для оптимизации работы серверов.
или говоря проще стелю себе большой ком соломы.
Stierus
Отправлено: 23 Февраля, 2013 - 13:50:30
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
На все случаи жизни не перестрахуешься
Оптимизировать нужно конкретные запросы к бд и куски кода
Распределять какую именно нагрузку вы планируете, вы хорошо себе представляете себе профиль этой нагрузки? Будет у вас больше записей или апдейтов, какого рода связи в таблицах планируются и примерные размеры этимх самый таблиц ? Невозможно улучшать то - не знаю что
Есть некие вещи, до которых доходишь с опытом, но у каждого они свои. Я не делаю никогда триггеры в базе данных, не использую связи таблиц на уровне бд, не использую NOW() и тд в запросах: апдейчу только инкрементально, не оптимизирую заранее, не пихаю ООП везде, где попало, не использую фреймворки в нагруженных проектах ... из остального уже зависит от обстоятельств
DlTA
Отправлено: 23 Февраля, 2013 - 14:14:07
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
вопрос оптимизации скриптов, базы, ...
не рассматривается,
ибо это в априори, все скрипты все запросы на момент расширения уже оптимизированы.
вопрос о том что там дальше.
vanicon
Отправлено: 23 Февраля, 2013 - 15:21:31
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Извините что отхожу от темы, но все же интересно.
Stierus пишет:
не использую фреймворки в нагруженных проектах
Вот про это можно по подробнее.
Как вы делаете, если не на фреймворке?
Роутинг должен быть, должен.
Единая точка входа, так называемый FrontController.
Используете ли вы MVC (Разделение логики от отображение)?
Просто все ровно как бы фреймворк мини получается нет?
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
vanicon, все очень просто, почти любой фреймверк расчитан на общие ситуации, а следовательно в нем множество "блоков" которые в конкретном случае приводят лишь к замедлению.
Stierus
Отправлено: 23 Февраля, 2013 - 16:23:10
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
vanicon, все что вы описали - библиотеки из пары классов
vanicon
Отправлено: 23 Февраля, 2013 - 17:26:16
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Все ясно, просто "не использую фреймворки в нагруженных проектах" не совсем правильно, ведь как бы фреймворк есть, просто свой, самый простейший, там роутинг, mvc, класс для работы с бд, работа с view и тд...
Ну а по теме, насчет как определить к какому серверу за данными обращаться, думаю стоит для этого использовать nosql бд, типа redis, ну это так для размышлений...
----- Так было, так есть и так будет
DeepVarvar
Отправлено: 23 Февраля, 2013 - 19:29:42
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
vanicon пишет:
"не использую фреймворки в нагруженных проектах" не совсем правильно
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Цитата:
Все ясно, просто "не использую фреймворки в нагруженных проектах" не совсем правильно, ведь как бы фреймворк есть, просто свой, самый простейший, там роутинг, mvc, класс для работы с бд, работа с view и тд...
роутинг - 2 класса
mvc - архитектура, то, как ты делишь свое приложение на логические блоки ... доп кода не требует
класс для работы с бд - PDO
работа с view - не очень понимаю, что имеется ввиду
итого, если 2 класса ты называешь фреймворком - ОК, но я с тобой не согласен
Цитата:
Ну а по теме, насчет как определить к какому серверу за данными обращаться, думаю стоит для этого использовать nosql бд, типа redis, ну это так для размышлений...
бред какой-то ... как связан роутинг запросов между нодами шард с nosql? оО
vanicon
Отправлено: 24 Февраля, 2013 - 23:20:53
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Цитата:
итого, если 2 класса ты называешь фреймворком - ОК, но я с тобой не согласен
Ну там вовсе не 2 класса, но считать я не буду, суть не в этом.
Просто с моей точки зрения библиотека, это тупо набор классов/функций для решения определенных задач...
А сама структура приложения, должна же быть, как я ранее писал 1 точка входа и тд
Stierus пишет:
работа с view - не очень понимаю, что имеется ввиду
Это связано с mvc.
Stierus пишет:
бред какой-то ... как связан роутинг запросов между нодами шард с nosql? оО
Если я правильно понял проблему автора, то проблема в том что нужно знать на каком сервере(я имею ввиду mysql) лежат какие-либо данные...
Я предлагаю решения типа что-то этого:
К примеру у нас 3 сервера, 2 сервера mysql, 1 сервер redis
Сервер на котором стоит redis будет знать где и какие данные лежат...
Посылается запрос на сервер с редисом, он дает инфу где лежат эти данные к которым идет запрос, а дальше уже делать запрос к нужному mysql серверу.
Конечно можно использовать вместо redis и любую другую бд, хоть тот же mysql, но как бы этот роутинг не стал бы "узким горлышком".
А redis за счет хранения данных в ram сможет достаточно быстро этим заниматься...
Ну вот как-то так...
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
caballero пишет:
самопальные кластеры и балансировщики нагрузки - полная чушь
Полностью поддерживаю!
Я слышал что есть какой-то там спец mysql cluster
различные nosql решения, к примеру mongodb....
Использовать ту бд которая может расширяться без костылей и тд, но на начальном этапе этого ничего и не нужно...
caballero пишет:
просто для таких систем не пишут на mysql и PHP.
Ну а почему на php не пишут?
это только web морда, а ее можно и на пыхе сделать.
caballero пишет:
если будет достаточно ram для кеша, mysql будет делать это не менее быстро.
Но здесь как бы не кеш (кеш - типа временные данные), а это в данной ситуации не является кешом.
Насчет быстродействии mysql я сомневаюсь, потому что насколько я знаю и проверял сам redis на несколько порядков быстрее работает...
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Ну а почему на php не пишут?
это только web морда, а ее можно и на пыхе сделать.
web морда - это HTML
А серверную часть для таких делов пишут на яве - J2EE сервера приложений кластеризуются из каропки.
То же касается промышленных серверов БД.
А балансировщики вообще ставятся апаратные какие нибудь Cisco
Цитата:
Насчет быстродействии mysql я сомневаюсь, потому что насколько я знаю и проверял сам redis на несколько порядков быстрее работает...
обычно нужна работа с данными посложнее чем просто ключ-значение. А на более менее сложных выборках NoSQL БД сразу проседают.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.