Как передавать большие объемы данных на удаленную БД?

SpaceMonkey

Новичок
Необходимо с периодичностью в сутки обновлять данные в удаленной БД. Количество строк - 10000.
Из пришедших на ум решений - обычный UPDATE в цикле.
Но рационально ли это?
Нет ли специальных функций для таких задач? Может вообще в корне другое решение? Например дамп через csv с последующей загрузкой?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Как вариант можно настроить репликацию с мастера на слейв.
 

SpaceMonkey

Новичок
К сожалению этот вариант мне не подойдет.
(У меня БД-источник - это Оракл в локальной сети, который выгружает данные в php-массив. Вот этот php-массив мне и нужно засунуть в удаленную MySQL)

Может есть еще какие-то варианты?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Есть варианты гетерогенной репликации, но это гемор.

Если тебе надо это делать раз в день, то
1. Накапливаешь где-то массив данных
2. При наступлении определенного момента шлешь все на второй сервер.
3. Принимаешь на втором сервере и парсишь с занесением.

Вариант 2, допилить приложение таким образом, чтобы оно сразу все запросы отсылало через какой-то API серверу 2, где ты сразу выполняешь DELETE/UPDATE/INSERT

Вопрос рациональности - это вопрос удобства, делай так, как удобно тебе потом будет это все поддерживать.
 

Gremboloid

инженера Гр...

SpaceMonkey

Новичок
Гетерогенная репликация для меня сложна.
На данный момент рассматриваю вариант - кусками копить в XML и принимать на сервере.
c0dex, Gremboloid спасибо - дали мне пищу для размышлений.
 

vovanium

Новичок
Как вариант INSERT ... ON DUPLICATE KEY UPDATE и можно обновлять блоками или даже всё сразу если влезет в ограничение на размер запроса.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
И каким боком тут INSERT ... ON DUPLICATE KEY UPDATE? :confused:
 

vovanium

Новичок
c0dex
Позволяет обновить несколько записей в одном запросе, и не делать 10000 запросов.
Код:
INSERT INTO mytab (a,b,c) VALUES 
(1,1,2),
(2,3,4),
(3,5,6)
ON DUPLICATE KEY UPDATE b=VALUES(b), c = VALUES(c);
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У него одна бд оракл, другая мускуль. Ему вообще не это надо имхо
 

vovanium

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

Gremboloid

инженера Гр...
vovanium, ТС четко указал что ему надо синхронизировать данные двух баз, где Oracle - мастер, а MySQL - слейв. При этом ничего не сказал, что происходит с данными на мастере. Пока, ваше предложение, как гадание на кофейной гуще.
 

vovanium

Новичок
Gremboloid
Где в первом посте упоминание про Oracle? Oracle появился как причина невозможности репликации... Так что это вы в гущи лезете со своими репликациями и синхронизациями. Более того про мастер и слейв тоже ваши выдумки, у чела может быть даже доступа к Oracle нет, он же четко написал, что имеет php-массив с данными, и его нужно залить в MySQL.
 
Сверху