Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
ztalker
Зарегистрирован: 06 Ноя 2007 14:00:26 Сообщения: 26 Откуда: Новосибирск
|
Добавлено: 21 Ноя 2007 07:16:48 Заголовок сообщения: Разделение запросов на запись и чтение |
|
|
Мне необходимо в веб-программе построенной на cakePHP 1.2 разделить запросы на запись и чтение, так чтобы чтение производилось из одной базы а запись в другую.
Смысл: чтобы не гонять трафик по инету, стоят 2 MySQL сервера, один локально, другой далеко (даже в другом городе). Т.к. большая чать запросов это чтение, то чтение производится с локального сервера, а запись на удаленный сервер. Если на удаленном сервере что-то меняется в базе, то она синхронизируется с локальной.
Подскажите как реализовать разделение запросов на запись и чтение в CakePHP? _________________ На работу в Новосибирске требуется PHP программист, со знанием CakePHP. Пишите в личку. |
|
Вернуться к началу |
|
|
Антон Исайкин Site Admin
Зарегистрирован: 08 Окт 2007 12:02:56 Сообщения: 150 Откуда: Санкт-Петербург
|
Добавлено: 21 Ноя 2007 08:39:53 Заголовок сообщения: |
|
|
Укажите две базы данных в настройках. А затем просто переключайтесь между ними, устанавливая |
|
Вернуться к началу |
|
|
ztalker
Зарегистрирован: 06 Ноя 2007 14:00:26 Сообщения: 26 Откуда: Новосибирск
|
Добавлено: 21 Ноя 2007 09:00:22 Заголовок сообщения: |
|
|
Об этом я уже думал, это не удобно, да и не совсем правильно для поставленной задачи. Перед каждым запросом переключатся - не красиво, и с точки зрения ООП не практично, существует вероятность забыть про переключение перед следующим запросом (особенно, когда работает группа программистов, а не один человек), а это уже пагубно для работы синхронизации. Хочется сделать данное переключение внутренним, чтобы при написании новых или включении готовых модулей или плагинов все работало по единым правилам.
Может есть другие пути, без вмешательства в сам cake? _________________ На работу в Новосибирске требуется PHP программист, со знанием CakePHP. Пишите в личку. |
|
Вернуться к началу |
|
|
VolCh
Зарегистрирован: 21 Окт 2007 07:17:33 Сообщения: 47 Откуда: Санкт-Петербург
|
Добавлено: 21 Ноя 2007 10:56:59 Заголовок сообщения: |
|
|
Синхронизацию и репликацию средствами MySQL не рассматривали? |
|
Вернуться к началу |
|
|
ztalker
Зарегистрирован: 06 Ноя 2007 14:00:26 Сообщения: 26 Откуда: Новосибирск
|
Добавлено: 21 Ноя 2007 12:38:11 Заголовок сообщения: |
|
|
VolCh писал(а): | Синхронизацию и репликацию средствами MySQL не рассматривали? |
Выше я писал, что синхронизация (репликация) будет! Т.е. головной на запись, вторичные на чтение, а репликация будет сводить все изменения вместе. Но на сколько я понимаю MySQL не разделяет самостоятельно запросы на запись и чтение, это все организовывается клиентом. Вот и возникает вопрос, как в клиенте построенном на cakePHP это организовать? _________________ На работу в Новосибирске требуется PHP программист, со знанием CakePHP. Пишите в личку. |
|
Вернуться к началу |
|
|
KPOTOB Гость
|
Добавлено: 21 Ноя 2007 13:04:37 Заголовок сообщения: |
|
|
Как вариант - написать Behavior и чтобы он менял $useDbConfig в зависимости от запроса - для CUD (beforeSave beforeDelete) одно - для R (beforeFind) - другое |
|
Вернуться к началу |
|
|
ztalker
Зарегистрирован: 06 Ноя 2007 14:00:26 Сообщения: 26 Откуда: Новосибирск
|
Добавлено: 21 Ноя 2007 13:52:49 Заголовок сообщения: |
|
|
KPOTOB писал(а): | Как вариант - написать Behavior |
Я совсем недавно перешел на 1.2 и не совсем понимаю как писать свои Behavior, в мануалах, что сейчас есть по 1.2 инфы не нашел.
Т.е. описывать callback-и - beforeSave, beforeDelete, beforeFind и этого будет достаточно? А если где-нибуть в модели используется не только find, save и delete, а еще будут использоваться запросы методом query, то здесь как? _________________ На работу в Новосибирске требуется PHP программист, со знанием CakePHP. Пишите в личку. |
|
Вернуться к началу |
|
|
KPOTOB Гость
|
Добавлено: 21 Ноя 2007 20:45:36 Заголовок сообщения: |
|
|
ztalker
Behavior это способ реализовать множественное наследование - ни больше ни меньше
before* можешь перегрузить у себя в модели - а можешь сделать как behavior и пользовать во многих моделях.
чтобы просечь как оно примерно - потыкайся тут http://bakery.cakephp.org/categories/view/12
с query плохо все - там можно что угодно нагородить и колбэки там работать не будут (если конечно разбор sql не накодить для разных диалектов) |
|
Вернуться к началу |
|
|
ztalker
Зарегистрирован: 06 Ноя 2007 14:00:26 Сообщения: 26 Откуда: Новосибирск
|
Добавлено: 22 Ноя 2007 10:09:59 Заголовок сообщения: |
|
|
KPOTOB
Спасибо за информацию. Буду пробовать.
Также попробую парсить запросы query. И еще вопрос, для query как сделать behavior метод? _________________ На работу в Новосибирске требуется PHP программист, со знанием CakePHP. Пишите в личку. |
|
Вернуться к началу |
|
|
KPOTOB Гость
|
Добавлено: 22 Ноя 2007 22:01:56 Заголовок сообщения: |
|
|
ztalker
Не заморачивайся с парсингом
Если query будет вызван кейком - то только в результате какогонибыть finaAll, save, ... - тоесть всяко после колбэков
А если ты сам query вызываешь, что и базу свичануть можеш наверное |
|
Вернуться к началу |
|
|
|