Remote MySQL сервер. Размышления вслух

newARTix

Новичок
Remote MySQL сервер. Размышления вслух

Есть сайт (точнее еще нет), который реализует веб-интерфейс определенной программы, крутящейся на удаленном (от хостинга) сервере. Программа в качестве БД использует MySQL. И сайт по сути должен работать напрямую с этой БД расположенной на этом удаленном сервере.
Ну понятно что обычные странички самого сайта хранятся на локальном хостинговом MySQL, а к удаленной маське сайт подключается только в необходимые моменты выполнения прямых функций (формирование заявок).

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

Задался вопросом как это реализовать на уровне приложения. На уровне БД нет смысла мутить, не тот масштаб и бюджет.

Думал сделать какой-то отдельный скрипт на php (на том же сайте), который будет проксировать запросы к удаленной маське, или даже реализует набор RPC, а на сайте вместо прямого обращения к удаленной маське, делать CURL запросы к этому скрипту, замерять время ответа, и если оно превышает какие-то разумные пределы, то переключаться на локальную БД незаметно для посетителей.

Родные функции mysql_* я так понимаю синхронны, и регулировать таймаут на них невозможно?
 

baev

‹°°¬•
Команда форума
понятно что статичные странички самого сайта хранятся на локальном хостинговом MySQL
— лично мне это совсем не понятно.
Более того, фраза вызывает явный «когнитивный диссонанс»…
 

newARTix

Новичок
baev
ну как бы сайт выполняет не только функции формирования заявок для оффлайновой программы, но большую часть времени работает как визитка для организации. И в этой части никак не зависит от удаленной MySQL. В чем диссонанс?

-~{}~ 10.09.10 21:45:

Суть в том что коннект к удаленной маське не нужен постоянно, поэтому заказчик не будет заморачиваться на обеспечении ее отказоустойчивости. Но меня беспокоит отказоустойчивость сайта.
 

baev

‹°°¬•
Команда форума
В чем диссонанс?
Ну, как бы под «статичным контентом» принято понимать html, лежащий в файловой системе. Подгрузка контента из базы данных — уже «динамика».
 

newARTix

Новичок
baev
философский вопрос хранения и редактирования статики тут не стоит. Может эту часть я и неправильно сформулировал, вопрос не в ней. Просто я обозначил факт, что есть локальная хостинговая БД и удаленная БД. И как их вместе сводить на реальном сайте.

ЗЫ Представьте обычную CMS, которая работает как обычно с MySQL, но один из модулей требует подключения к удаленной БД, вот суть. Причем подключения в процессе генерации страницы, а не фонового.
 

prolis

Новичок
Re: Remote MySQL сервер. Размышления вслух

Автор оригинала: newARTix
На уровне БД нет смысла мутить, не тот масштаб и бюджет.
А что с маштабом и бюджетом, пару таблиц-то реплицировать ("локальный кэш")?
 

iceman

говнокодер
пишешь веб-сервис, который крутиться будет на удаленном сервере и работаешь с сервером по SOAP например - это онлайн.

либо аккумулируешь свои заявки у себя, а потом по нажатию кнопки админом - отправляешь на удаленку, либо по крону вечером.... - это оффлайн.

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

-~{}~ 13.09.10 14:10:

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

antson

Новичок
Партнер клуба
newARTix
>>подключения в процессе генерации страницы, а не фонового.

Выведи страницу " Ваш запрос обрабатывается. "
А результат обработки уже ajax'ом подгрузишь.

можно в цикле проверки делать по таймауту.
 

newARTix

Новичок
prolis
просто сайт крутится на виртуальном хостинге. потому репликация средствами MySQL сомнительна. Кстати, может есть какой-то костыль на PHP? "Типа репликация" :)

> пишешь веб-сервис, который крутиться будет на удаленном сервере и работаешь с сервером по SOAP например - это онлайн.

такая мысля была, но так как со стороны удаленного сервера работает другой разработчик, мне в его владения нет желания вникать. Сказали напрямую через MySQL - ну значит напрямую, мне параллельно. Не настолько интересен проект.

> самому реплицировать по крону - например каждые 3 часа актуализировать данные, обновлять справочники...

это по сути онлайн-регистратура, то есть желателен вообще риалтайм.


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

вот в этом и вопрос. Как максимально прозрачно, без фатальных таймаутов определить что сервак недоступен? Или был доступен в время коннекта, а в момент запроса - ужо нет. Хотя это конечно маловероятно... Но вероятность есть.

Да, в итоге остановился на варианте antson, оберну всю работу с удаленным сервером в ajax, и просто и понятно и надежно.

Всем спасибо за идеи :)
 
Сверху