2010-04-30 3 views
0

Je veux juste savoir s'il existe une bonne implémentation (en C#/ASP.NET) pour accéder simultanément à mes enregistrements de mes différentes bases de données. J'ai cette application simple qui suppose de rechercher sur ces bases de données, puis, afficher l'enregistrement si un certain mot-clé est apparié.Recherche d'une bonne implémentation qui accèdera simultanément à plusieurs bases de données

J'ai comme 5 bases de données (actuellement en utilisant MySQL) dans l'ensemble et l'étendra sur le futur (peut-être changer pour SQL Server). Je suis pleinement conscient de la façon de rechercher sur une seule base de données, alors que j'apprends toujours comment le faire dans plusieurs bases de données.

Des conseils, des commentaires ou des suggestions?

+1

Option 1: Serveurs liés dans MySQL. Je ne le recommanderai pas. Mais j'essaierais certainement pour Microsoft Data Application Block et utiliser MSDTC pour une connexion multiple, puis fusionner le résultat dans mon code C#. –

Répondre

1

Je ne peux pas dire pour MySQL, mais dans le serveur SQL, vous pouvez choisir parmi plusieurs bases de données (à condition que l'utilisateur auquel vous vous connectez ait les permissions correctes). Si les tables sont similaires dans toutes les bases de données, vous pouvez peut-être le faire dans une requête en UNIONING les résultats ensemble. Donc, si vous aviez 3 bases de données (appelées DB1, DB2 et DB3) et chacun avait une table appelée Records alors vous pouvez le faire:

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%' 
+0

Les bases de données doivent également être sur le même serveur, sauf si vous utilisez des serveurs liés. – Thomas

1

Possédez plusieurs instances de XXXConnection (MysqlConnection ou autre) et parcourez-les.

1

Vous utiliseriez la même méthodologie que celle utilisée pour rechercher une base de données unique par rapport à chacune des autres bases de données en utilisant une chaîne de connexion différente. Ce serait un bon candidat pour les extensions parallèles dans .NET 4.0 ou la version 3.5 de la bibliothèque qui a été publiée il y a quelque temps. Si les résultats vont être quelque peu identiques, je voudrais également étudier l'utilisation de la méthode DataTable.Merge.

1

Selon que vous effectuez vos requêtes sur le côté serveur ou client du application, vous pouvez aller de la façon suivante sur le côté serveur:

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

Dans SQL server, le nom de la table peut être préfixé par le nom du serveur, le nom de base de données et le nom du schéma. Si vous préférez ne pas utiliser le nom de schéma, mais vous devez spécifier la base de données qui est sur le même serveur, vous pouvez écrire:

[Database]..[Table] 

Si vous voulez plus de préférence faire votre recherche de Du côté client, vous pouvez utiliser Enterprise Library pour la facilité des chaînes de connexion nommées configurables et l'abstraction qu'il offre. Vous pouvez simplement utiliser un BackgroundWorker si vous souhaitez gagner en performance. Encore une fois, c'est du côté du client.

Questions connexes