Возникла такая проблема:Есть 2 совершенно идентичные по структуре базы: текущая и архивная. В текущей базе находятся наиболее последня информация, в архивной - то, что уже используется редко. Данные обеих баз - не пересекаются. То есть во врема переноса в архив - в текущей безе соотвествующие записи удаляются.
Есть запросы (для репортов) которым необходимо данные из обеих баз. Если сделать простое оъединение (напр. для запросов содержащих COUNT, GROUP), то могут получиться дублированные строки. Как их объединить - пока хз...
Есть мысль - предопределить запросы которые могут идти к обеим базам, и описать правила аггрегирования результатов. Возможно придётся использовать временные таблицы... Но этот вариант не очень прозрачен, т.к. все возможные запросы нужно определять.
Немного поясню на примере:
Да нет. Прямой Union тут не подойдёт, так как запросы к разным базам.
Тут нужно внешний инструмент, что-то типа DBI:Multiplex (правда он не
умеет собирать результаты запросов к разным таблицам)
Немного на пальцах:
Есть таблица test (name char, trans_dat date).
В текущей базе:
name_1 01-01-2007
name_2 01-02-2007
В архиве
name_1 01-01-2006
name_1 01-02-2006
name_2 01-02-2006
Если мы рассплитуем оба сервера запрос типа
SELECT COUNT(*), name FROM test GROUP BY name
и объединим результат - получим:
1 name_1 ; из текущей базы
1 name_2 ;
2 name_1 ; из архива
1 name_2 ;
А дожно быть:
3 name_1
2 name_2
Возможно кто-то сталкивался с подобной проблемой, и существуют ли решения для аггрегирования результатов из 2-х идентичных баз?
Заране спасибо.