Доброго времени суток! Возможно-ли связать кучу Баз Данных, чтобы любой из сайтов беря данные из одной бд, имел данных из всех других бд, которые как-то связаны между собой?
т.е. сделать некую оптимизацию. Например, тысяче сайтов нужно иметь из бд таблицу bd_table, в ней нужные данные для всех серверов, соответственно, чтобы тысяча сайтов не коннектилась к одной бд, брать данные из одной бд, но которая связана с другими базами, которые вместе с собой.
Как вы эту "центральную" БД организуете - так все и будет. И каждый сайт будет или на прямую обращаться к этой удаленной БД (только надо разрешить удаленные подключения), либо будет работать через какой-нить промежуточный скрипт-шлюз (но будет задержка).
Расскажите подробнее, коем образом будет работать скрипт, соответственно как приблизительно вычислить задержку? (ведь сайтов может быть тысячи) Я, всё же спрашиваю немного о другом. Возможно ли связать между собой БД? Допустим тем же скриптом, но уже который будет нести нагрузку на цп, которым он обрабатывается. Т.е., есть у меня 3 сайта(а их может быть 3 тысячи, может и 3 миллиона...) и всем им нужна таблица bd_table, но чтобы не обращаться к одной бд и не нагружать её кучей запросов, возможно-ли как-то связать все таблицы между собой, но при этом каждый сайт будет обращаться к своей бд, но иметь общие данные с таблицами bd_table из всех бд? Т.е. в одной бд в bd_table три "данных", во второй еще три и в третей четыре, и чтобы каждый сайт имел в общей сложности 10 "данных", но при этом каждый обращается к разным бд.
На сервере где БД - лежит скрипт. Его задача принять какие-нить параметры, разобрать, сделать выборку, вернуть результат. Если сайт-клиент (который будет обращаться к этому скрипту-шлюзу) находится на другом хостинге - то задержка как раз в этой передаче данных. Чтобы в этой связке ускорить отображение информации - то на сайтах-клиентах надо кэшировать данные. Но тут надо смотреть на количество страниц которое у вас будет на каждом из 1000000 сайтов. Ибо может получиться, что тупо не хватит места. В этом случае вывод "на лету", но задержка. ... Самое простое (чтобы потом не запутаться и найти косяк если по какой-то причине что-то рухнет) - условно разделить сайты на десятки/сотни/тысячи (ну, или, по первой (двум, трем) буквам домена). Каждую порцию сажаете на свою БД. А общие таблицы на всем таком множестве БД обновляете через n-ый промежуток времени. ... Про связь разных таблиц тут: https://folkprog.net/sozdanie-svyazey-phpmyadmin/ Но лучше держать все отдельно и общие обновлять. Т.к. простое всегда проще и стабильнее. Надежней. Особенно если где-то что-то отвалиться или надо подправить.
Статью почитал, вроде понял, в ближайшее время возьмусь пробовать. Не понял про "лучше"? Моя мысль и есть держать отдельно, но иметь общие данные
в zf2 из коробки есть возможность делать несколько адаптеров для разных баз. если пишете с 0 и еще не начали то можете посмотреть подходит ли вам. суть в том что можно работать с любым количеством баз из одного проекта создавая для них в конфиге отдельные адаптеры добовляешь в конфиге сколько надо адаптеров 'adapter' => array(' userfiles' => array( 'driver' => 'Mysqli','database' => 'networks', 'username' => 'root', 'password' => 'root', 'options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'', PDO::MYSQL_ATTR_INIT_COMMAND => 'SET CHARACTER SET \'UTF8\''), и потом в модуле в модели public function getAdapter(){ $config = new \Zend\Config\Config(include CONFIG_DIR . '/global.php'); $adapter = new \Zend\Db\Adapter\Adapter (array('driver' => $config->adapter["userfiles"]->driver,'database' => config->adapter["userfiles"]->database,'username' => $config->adapter["userfiles"]->username,'password' => $config->adapter["userfiles"]->password, ));return $adapter; } и можешь работать таким обзаром с разными базами.