| 
	
		
 Прозрачная работа с несколькими базами данных на PHP 
		
		
		
		Тема следующая. Приходилось ли работать с несколькими базами данных на одном сервере ? Если кому и приходилось расскажите какие были проблемы ?  
	Зачем: Надоели стандартные методы работы с базой. Думаю создать модуль, который будет прозрачен для разработчика, за счет которого можно работать с любой базой данных любого типа в любой момент, указав всего лишь тип (mysql,mssql и т.п.) и название базы данных (его указываешь в настройках баз), а на выходе получить обьект с (договоренными/обще принятыми) методами типа ->query, ->next и т.п. Вся инфа по тому как сделать запрос, генерация ошибок, колво строк и т.п. выполняет сам полученный обьект...  | 
	
		
  | 
	
		
 http://framework.zend.com/manual/ru/zend.db.html 
	Советую почитать перед началом - можно подчерпнуть много полезных идей. Сам ни чего такого ещё не делал, но планирую. Вообще идея хорошая ибо для добавления поддержки очередного СУБД нужно править только один класс, да и объекты как-то симпатичнее кучи переменных в глобальном пространстве.  | 
	
		
 Цитата: 
	
 А в самом модуле будет так: 
$db = F_SQL::dbo('Название модуля','идентификатор базы')
$db->q("SELECT * FROM {$db->__}название таблицы");
echo $db->count; //количество полученных строк запроса
while ($r = $db->next()){
  ...
  }
...
где $db->__ - префикс для работы с таблицами модуля. тем самым модуль прозрачен к сайту полность. все настраивается админом, какой главнй префикс. к какой базе привязан модуль и т.п.  | 
	
		
 Цитата: 
	
 При подобном проектировании, конечная цель -- вообще избавиться от sql везде, кроме как непосредственно в классах, реализующих каждый database engine. Правильно как-то так: Код: 
	$db->get_object_list($type, $tbl_name, $fields, $filter, $offset, $count); | 
	
		
 Цитата: 
	
 В моем случае не играет роли на каком языке написан запрос. При создании обьекта $db в нем уже будут готовые функции для работы с тем или инным типом базы данных. В твоем же случае я не представляю как это сделать. Ведь синтаксис разных баз разный... и преобразовывать один в другой просто как минимум лишняя трата времени, а во вторых не файл что преобразование будет правильным.  | 
	
		
 Цитата: 
	
 В этом случае да, мы просто в конфиге меняем класс, который будет использоватся, и кушам печенье. Иначе мы бегаем, высунув язык, по коду, и меняем ручками запросы, которые ВНЕЗАПНО перестали работать на другой БД.  | 
	
		
 e1f, 
	:yes: PeaceCoder, Zend и ещё раз Zend. Семое главное это архитектура (идея как всё должно работать). Реализовать сможет любой, у кого есть более или менее прямые руки. Если сейчас архитектуру не додумать то потом уже не исправить, только переделывать.  | 
	
		
 Сдается мне что уже есть такое - тот же самый PEAR DB packages (с Zendом не работал). 
	Или не прав ?  | 
	
		
 sergdev, 
	всё верно, такого много, но это всё ЧУЖОЙ КОД.  | 
| Часовой пояс GMT +3, время: 17:39. | 
		
  |