Vous cherchez une bonne mise en œuvre qui accédera à plusieurs bases de données simultanément
-
02-10-2019 - |
Question
Je veux juste savoir s'il y a une bonne mise en œuvre (en C # / ASP.NET) sur la façon d'accéder à mes dossiers de mes différentes bases de données simultanément. J'ai cette application simple qui suppose de rechercher sur ces bases de données, puis, afficher l'enregistrement si un certain mot clé correspond.
J'ai comme 5 bases de données (MySQL) actuellement à l'aide dans l'ensemble et sera étendons sur l'avenir (peut-être changer à SQL Server). Je suis pleinement conscient sur la façon de rechercher sur une seule base de données, alors que je suis en train d'apprendre comment le faire dans plusieurs bases de données.
Des conseils, des commentaires ou des suggestions?
La solution
Je ne peux pas dire pour MySQL, mais dans le serveur SQL, vous pouvez sélectionner à partir de plusieurs bases de données (tant que l'utilisateur que vous connectez les autorisations appropriées). Si les tables sont similaires dans toutes les bases de données, vous pouvez alors peut-être le faire dans une requête par UNIONING les résultats ensemble. Donc, si vous aviez 3 bases de données (appelé DB1
, DB2
et DB3
) et chacun avait une table appelée Records
alors vous pouvez faire ceci:
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%'
Autres conseils
plusieurs instances de XXXConnection (MySQLConnection ou autre) et itérer à travers eux.
Vous devez utiliser la même méthode utilisée pour rechercher une base de données unique contre 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é il y a quelque temps. Si les resultsets vont être un peu identique, j'enquête également l'utilisation de la balise la méthode de DataTable.Merge.
Selon que vous effectuez vos requêtes sur le côté serveur ou client de l'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 ce qui suit:
[Database]..[Table]
Si vous voulez plus de préférence faire votre recherche à partir du côté client, vous pourriez souhaiter utiliser Enterprise Library pour la facilité de chaînes de connexion nommées configurables et l'abstraction qu'elle offre.
Vous pouvez simplement utiliser un BackgroundWorker si vous souhaitez gagner en performance. De nouveau, qui est sur le côté client.