Несколько обновлений базы данных в одном приложении - PullRequest
1 голос
/ 29 марта 2011

Я хочу создать небольшое приложение .net, которое может обновлять несколько баз данных одними и теми же данными. Это будет своего рода автоматическое приложение. Я имею в виду некоторую идею, но я ищу некоторые идеи от старшего сотрудника, прежде чем приступить к разработке. Пожалуйста, поделитесь своим мнением.

Ценю вашу помощь. Спасибо !!

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

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

С архитектурной точки зрения вам следует подумать об использовании шаблона проектирования прокси. Таким образом, вы будете использовать абстракцию IDatabase в своем приложении, но в любой момент переключитесь с прокси-сервера на реализацию с одной базой данных:

// database abstraction
interface IDatabase
{
    void SaveSomeData(IData data);
}

// example of implementation
class SQLDatabase : IDatabase
{
    public SQLDatabase(string connection)
    {...}

    abstract void SaveSomeData(IData data)
    {
        // establish db connection using given connection and run sql queries against it.
    }
}

// proxy which can save data to several databases.
class DatabaseSaver : IDataBase
{
    private IDatabase[] _databases;

    public DatabaseSaver(IDatabase[] databases)
    {
        _databases = databases;
    }

    void SaveSomeData(IData data)
    {
        foreach(var db in _databases)
            db.SaveSomeData(data);
        // TODO: error handling situations are omitted.
    }
}

Надеюсь, это поможет!

0 голосов
/ 29 марта 2011

Вы можете использовать DataSets

Их можно сериализовать, а затем применить к другой базе данных. Предполагая, что все целевые базы данных синхронизированы, это должно работать без особых проблем. Однако вам придется воздерживаться от использования хранимых процедур и других «интерактивных» функций базы данных.

По сути, вы будете использовать набор данных в автономном режиме, а затем применить изменения к базе данных «a». Повторите это, и вы обновите базы данных.

Обратите внимание, что вам, скорее всего, лучше обслужить некоторую репликацию на уровне БД (Mysql, Postgresql, Oracle, SQLServer все поддерживают это так или иначе)

...