2012-05-02 2 views
0

У меня есть проект, который включает в себя Программное обеспечение как услугу. Приложение имеет один SystemDB и несколько баз данных клиентов. Базы данных клиентов абсолютно одинаковы (все таблицы равны). Системные базы данных содержат таблицу со всеми сведениями из баз данных клиентов, таких как dbname, dbPassword, dbUsername и т. Д.Вставка/обновление строки в нескольких базах данных

Как я могу выполнить обновление для всех баз данных и убедиться, что обновление верное. Например, . все db имеют таблицу переводов. Я хочу добавить слово ко всем таблицам. Или я хочу обновить слово с ошибкой. У меня есть более 50 дБ, которые мы будем поддерживать. поэтому ручная работа невозможна.

Любые предложения по программному обеспечению или фреймворкам, которые могут это сделать.

Я использую PHP5.4.0, но никаких конкретных рамок не yet.as DB мы используем MS SQL 2008R2

Спасибо,

+0

В той же ситуации у меня есть одна таблица, в которой перечислены все dbs. то я просто прохожу через все с изменениями –

+0

Стоит ли считать эту таблицу переводов в своей собственной базе данных и позволить всем проектам получить доступ к этому значению из этой базы данных? –

+0

@RobinCastlin Я не могу этого сделать. его не только таблица переводов. их гораздо больше таблицы, которую я должен держать в раковине +, если я отправлю всех в один бит.Я думаю, что у нас будут проблемы с балансировкой нагрузки. –

ответ

1

У нас есть ситуация simillar для чтения из нескольких баз данных, наш pl является C# .net. Для этого мы написали код C# .net, который запускает и подключается к каждой базе данных один за другим и управляет данными на одном сервере. Я предлагаю вам идти именно так, и любые сценарии, такие как update или insert sripts, должны использоваться как Excecute Query в .Net. В этом случае вы избежите ручной работы по подключению и обновлению.

+0

Это звучит интересно, но как вы управляете согласованностью? Я имею в виду, что, если в середине обновления ваш сервер останавливается? Тогда их часть на сегодняшний день, но остальное остается незатронутым? Как вы справляетесь с этим? –

+1

Когда мы загружаем данные с любого сервера, мы сначала полностью загружаем его в CSV-файл, а затем читаем файл для загрузки в базу данных. Таким образом, файл CSV выступать в качестве среднего слоя, и если в сервере останавливается такая ошибка ... CSV-файл не будет генерировать. – Pratik

0

использование триггеров базы данных для обновления таблиц в других базах данных.

0

Я боюсь, нет волшебной палочки для этого. но если вам действительно нравится делать какую-то магическую попытку, используя ORM. это облегчает жизнь.

мои любимый

Doctrine ORM - http://www.doctrine-project.org/

конечно есть много другие, тоже нравится. Propel, RedbeanPHP.

+0

Хотелось бы, чтобы это было так просто :(Проблема в том, что приложение более или менее работает и написано уже. Раньше это было только для одной компании, но они хотят расширить ее по всем своим офисам :( –

1

Я бы применил это с помощью репликации, которая неявно поддерживается SQL Server. Репликация позволяет публиковать определенные таблицы в вашей системной базе данных (издателя) и подписываться на изменения данных из одной или нескольких баз данных клиентов (подписчиков). Поскольку вы только толкаете данные в одном направлении и зеркалируете определенные таблицы и системную базу данных, это будет хорошо работать для вас.

Вы можете настроить репликацию из SSMS. Разверните ветвь репликации под сервером в проводнике объектов, щелкните правой кнопкой мыши «Локальные публикации» и выберите «Создать публикацию». Мастер проведет вас через процесс публикации. Сделайте то же самое для подписки и создайте подписку для каждой из ваших баз данных клиентов.

Поскольку у вас много баз данных клиентов, вам будет полезно создавать подписку с использованием t-sql, а затем дублировать этот код во всех ваших целевых базах данных. Посмотрите на http://msdn.microsoft.com/en-us/library/ms147346.aspx для получения инструкций о том, как это сделать.

+0

Спасибо за комментарий, который я собираюсь проверить, это решение, которое я думаю. –

Смежные вопросы