powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Двусторонний обмен данными между разными базами
14 сообщений из 14, страница 1 из 1
Двусторонний обмен данными между разными базами
    #39558734
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Не знал куда именно написать, решил сюда, т.к. думаю реализация будет на PHP или Python

По сути: Имеется база на хостинге, база на Postgres. На другом хостинге имеется сайт с базой MySQL.

Цель: Нужно взять часть данных из postgres заранее сделать выборку по условию после передать через интернет во вторую базу и положить их туда.

Также хочу чтобы при изменении значения в поле кол-ва данные обновлялись.

Вопросы:
1. Не смог найти актуальную информацию
2. С чего начать?
3. На чем реализовать? (Неплохие знания только по PHP, # и Python - слабовато но поднапречся можно)
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39558745
Фотография user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

делал нечто похожее год назад на PHP, формат данных JSON.
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39558749
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что к чему и как делал?
Можешь описать логику и шаги?
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39558760
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разово перенести надо или чтобы постоянно синхронизировалось?
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39558863
Фотография user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

операцию делал 2 раза. Из выборки формировал строку JSON, потом на другом серваке этот JSON преобразовывался в кучу insert-ов.
Данные передавались через защищенный VNP-канал.
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39558925
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

На постоянной основе.
С началом, немного понял.
Если не прав поправьте пожалуйста:
Первоначально я выгружу руками чтобы таблицы были одинаковые по кол-ву
1. Делаю php с коннектом и селектом данных(которые были изменены, реакция на изменение или добавление или временное), отправляю данные во вторую базу
2. На второй базе создаю тоже php который будет получать данные, после коннектиться в базу находить нужный ключ и парсить нужные значения.

P.S. Не уверен в реализации 1-го шага, как раз неуверен насчет реакции на событие
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39558929
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user89,

А можно поподробнее......
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39558958
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А одинаковые СУБД взять и настроить нормальную репликацию никак?
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39559056
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению разные ИС. И разве репликация будет работать через интернет?
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39559057
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

И по структуре это разные базы, нужно взять только небольшую часть, часть где указывается количество. фактически поля ID, Name,count
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39559304
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

Казалось бы, чего тут сложного. Коннект к одной базе, селект, сохранение данных в буфере. Коннект к дугой, данные из буфера заинсертить. Как связать серверы - есть варианты от "открыть доступ к СУБД наружу" до VPN или SSH-туннелей. А можно через вебсервер передать POST-запросом с соблюдением некоторых ограничительных мер. Тут мало интересного.
Другое дело, переливать ли всю большущую таблицу (или определенные её столбцы) целиком или только добавленные/изменившиеся строки. А ещё ж записи могут быть и удалены. Как узнать, что именно изменилось - вести лог изменений или, может, проще копию изменений делать в отдельных таблицах. Вопрос целостности данных, опять же. Прелили, к примеру, таблицу А, потом Б, а на таблице В то ли канал сдох, то ли сервер в ребут ушел... Сразу и не понятно, с какой точки продолжать процесс и как. В этом смысле, наверно, надежнее будет перегонять набор взаимосвязанных записей из разных таблиц (вроде транзакции). Опять же, какой-то лог синхронизации должен быть, наверно, чтобы после восстановления продолжить (сам лог тоже, кстати, при аварии может не записаться при самом отвратном стечении обстоятельств). Ну и приоритеты, когда одна и та же запись обновилось на обоих серверах и поля приняли различные значения - кто тут главнее будет при синхронизации.

Давно как-то решал немного похожую задачу (раз в сутки делать копию некоторых таблиц). Если интересно, сделал вот каким образом. По крону на одном сервере скриптом формировал файлик с текстом SQL-запросов (по сути, дамп), потом этот файлик и другой, с контрольной суммой (вроде, хеш md5 использовал), по FTP закидывал на другой сервер. Там, тоже по крону запускался скрипт, проверял наличие файла в обусловленном месте, его контрольную сумму, отрабатывал запросы, и, при успешном завершении, удалял присланные файлы.
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39559565
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Спасибо за рассуждение, да именно такие мысли приходят, непонятно за что взяться и какую методику использовать.

Исходя из ограничений, насчет крона отличная идея на первом это реально сделать, только вопрос как на второй передать, т.к. там виртуальный хостинг.
Проблема заключается еще в том, что какой объем передавать, это Вы тоже затронули, я думаю стоит попробовать передавать только те данные которые изменились в базе за определенное время. Если крон каждый час работает, тогда и данные передавать часовой разницы.
Много вопросов, буду думать, пробовать, спасибо что направили на какие то пути реализации, буду отписываться тут!
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39561699
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я у себя делал так:
При внесении в таблицу данных или их изменения,удаления , я сразу-же формировал sql запрос для второго сервера и помещал его в отдельную таблицу.
она имена формат id,sql,status
и по крону раз в х минут данные переносил с нужными лимитами (если таблицы массивные,статьи,картинки, то за раз 1-2)
Из минусов конечно если статью отредактировали 2-3 раза, то на том сервере придется выполнить те-же 2-3 запроса.
Репликацию это конечно-же не заменит, но вот целостность данных обеспечивает т.к. после того как сервер принял данные, от возвращает ответ, и если "ок", то ставим статус, что запрос выполнен., если что-то пошло нет так, не дошел ответ например, то лучше 2 раза выполнить запрос, чем не внести изменения. Конечно это увеличивает нагрузку на базу ведущего сервера.
...
Рейтинг: 0 / 0
Двусторонний обмен данными между разными базами
    #39561705
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, ориентир понял, как реализую, напишу! Спасибо огромное!!!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Двусторонний обмен данными между разными базами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]