Ищете хорошую реализацию, которая будет иметь доступ к нескольким базам данных одновременно - PullRequest
0 голосов
/ 30 апреля 2010

Я просто хочу выяснить, есть ли хорошая реализация (в C # / ASP.NET) для доступа к моим записям из разных баз данных одновременно. У меня есть это простое приложение, которое предполагает поиск в этих базах данных, а затем отображает запись, если определенное ключевое слово соответствует.

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

Какие-либо советы, комментарии или предложения?

Ответы [ 4 ]

1 голос
/ 30 апреля 2010

В зависимости от того, выполняете ли вы свои запросы на стороне сервера или на стороне приложения, на стороне сервера вы можете выполнить следующие действия:

[Server].[Database].[Schema].[Table]

В SQL Server имени таблицы может предшествовать имя сервера, имя базы данных и имя схемы. Если вы не хотите использовать имя схемы, но вам нужно указать базу данных, которая находится на том же сервере, вы можете написать следующее:

[Database]..[Table]

Если вы предпочитаете выполнять поиск с клиентской стороны, вы можете использовать Enterprise Library для простоты настройки именованных строк подключения и предлагаемой им абстракции.

Вы можете просто использовать BackgroundWorker , если хотите повысить производительность. Кроме того, это на стороне клиента.

1 голос
/ 30 апреля 2010

Вы бы использовали ту же методологию, которая использовалась для поиска в одной базе данных по каждой из других баз данных, используя разные строки подключения. Это было бы хорошим кандидатом для параллельных расширений в .NET 4.0 или версии библиотеки 3.5, которая была выпущена некоторое время назад. Если наборы результатов будут несколько идентичны, я бы также исследовал использование метода DataTable.Merge .

1 голос
/ 30 апреля 2010

Я не могу сказать, что для MySQL, но на сервере SQL вы можете выбирать из нескольких баз данных (при условии, что пользователь, к которому вы подключаетесь, имеет правильные разрешения). Если таблицы одинаковы во всех базах данных, вы можете сделать это за один запрос, объединив результаты вместе. Итак, если у вас было 3 базы данных (называемые DB1, DB2 и DB3), и у каждой была таблица с именем Records, то вы могли бы сделать это:

SELECT * FROM DB1.dbo.Records WHERE Name Like '%searchterm%'
UNION
SELECT * FROM DB2.dbo.Records WHERE Name Like '%searchterm%'
UNION
SELECT * FROM DB3.dbo.Records WHERE Name Like '%searchterm%'
1 голос
/ 30 апреля 2010

Имейте несколько экземпляров XXXConnection (MysqlConnection или что-то еще) и итерируйте их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...