Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Внизпро архитектуру бд Найти похожие ветки
← →
antonn © (2012-03-08 15:12) [0]Задачку такую предстоит решить, может кто чего умного подскажет :)
Есть несколько бд-серверов (mssql, ну порядка 10, скажем так, с возможностью увеличения в 2-3 раза) с относительно слабыми каналами связи (1-10мбит), в них в базе хранится табличка содержащая в себе записи о товарах, записей порядка 40к-50к. У каждого товара есть идентификатор, общий для всех баз, но цены могут различаться. Мне нужно сформировать на своем сервере (вот тут будет либо оракл, либо mysql, скорее всего последнее) список товаров, цена которых была бы максимальная среди цен всех баз на удаленных серверах.
Мне пока видится два решения:
1. создать одну таблицу для серверов (id, server_name), и одну таблицу под товары повторяющую структурой таблицу на удаленном сервере + поле id_сервера, куда слить все товары со всех баз, а потом диким запросом выдернуть из нее список товаров с максимальными ценами.
2. создать под каждую удаленную базу свою таблицу, все они будут с префиксом, потом, не менее диким, запросом найти максимальную цену на товар по всем таблицам с префиксом.
дело осложняется тем, что скорее всего базой будет mysql, а средой выполнения php.
Кто какой вариант бы выбрал? В принципе, полмиллиона записей не такая уж большая цифра, но вот как быстро мускл с группировкой ее обработает...
← →
Jeer © (2012-03-08 15:29) [1]Ну и кто мешает выдернуть со всех серверов подтаблицы с макс. ценами для каждого сервера во временную таблицу на основном сервере и затем сделать довыбор по макс.ценам ?
← →
Андреевич (2012-03-08 15:58) [2]да, я тоже склоняюсь больше к первому варианту
← →
asail © (2012-03-08 20:01) [3]Второй вариант, имхо, и не вариант вообще, бо жесть полная...
Первый вариант, самое то. Только не понял про
> а потом диким запросом выдернуть
В чем "дикость"-то? Вроде, самым банальным запросом сие совершить можно...
← →
Андреевич (2012-03-08 20:08) [4]да так прикинул, что если каждая удаленная табличка разрастется до 100-150 к записей, и их 20, и не ко всем будет коннект (а значит после удачного коннекта нужно очистить во временной/ых таблицах данные по этой базе (старые данные должны остаться, если коннекта нет)), не сильно ли напряжно будет для таблицы удаление такого кол-ва записей если их в ней около 2кк будет суммарно? (это я на будущее просто смотрю)
хотя мож ищу проблему там где ее нет...
← →
asail © (2012-03-08 20:22) [5]Вообще, наверное лучше тянуть только изменения на центральную базу. Т.е., раз сгрузив со всех серверов все данные, дальше только обновлять центральную базу... Ессно, таблица не временная, а самая что не на есть постоянная. Короче, репликация... Это если я правильно понял задачу, конечно...
← →
Андреевич (2012-03-08 20:57) [6]У меня вебсервис (php+mysql), в нем таблица никак не причастная к удаленным базам окромя того, что в нее сливаются данные с них. Сама операция слива будет производиться руками оператором, т.е. она довольно редко выполняется (ну максимум 10 раз в день, наверное).
"временная" - это я неверно выразился, в ней/них будут храниться временные данные, сама таблица будет существовать все время (просто потому что удаленный сервер может быть недоступен, тогда будут использоваться данные полученые с него ранее).
Дома попробую сделать таблицу на мильон записей и прогнать запрос, может действительно зря паникую.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.067 c