Databasanslutning - Database connection

En databasanslutning är en anläggning inom datavetenskap som gör att klientprogramvara kan prata med databasserverprogramvara , oavsett om det är på samma maskin eller inte. En anslutning krävs för att skicka kommandon och ta emot svar, vanligtvis i form av en resultatuppsättning.

Anslutningar är ett nyckelbegrepp i datacentrisk programmering. Eftersom vissa DBMS -motorer kräver lång tid att ansluta, uppfanns anslutningspoolning för att förbättra prestanda. Inget kommando kan utföras mot en databas utan en "öppen och tillgänglig" anslutning till den.

Anslutningar byggs genom att förse en underliggande drivrutin eller leverantör med en anslutningssträng , som är ett sätt att adressera en specifik databas eller server och instans samt användarautentiseringsuppgifter (till exempel Server = sql_box; Databas = Common; User ID = uid ; Pwd = lösenord; ). När en anslutning har byggts kan den öppnas och stängas efter behag, och egenskaper (t.ex. kommandotime-out-längd eller transaktion , om sådan finns) kan ställas in. Anslutningssträngen består av en uppsättning nyckel-/värdepar som dikteras av datatillgångsgränssnittet och dataleverantören som används.

Många databaser (t.ex. PostgreSQL ) tillåter bara att en operation utförs åt gången på varje anslutning. Om en begäran om data (en SQL Select -sats) skickas till databasen och en resultatuppsättning returneras, är anslutningen öppen men inte tillgänglig för andra operationer förrän klienten slutar konsumera resultatuppsättningen. Andra databaser, som SQL Server 2005 (och senare), föreskriver inte denna begränsning. Databaser som tillhandahåller flera operationer per anslutning medför dock vanligtvis mycket mer overhead än de som endast tillåter en enda operationsuppgift åt gången.

Poolning

Databasanslutningar är ändliga och dyra och kan ta oproportionerligt lång tid att skapa i förhållande till de operationer som utförs på dem. Det är ineffektivt för ett program att skapa, använda och stänga en databasanslutning närhelst den behöver uppdatera en databas.

Anslutningspoolning är en teknik som är utformad för att lindra detta problem. En pool av databasanslutningar kan skapas och sedan delas mellan de applikationer som behöver komma åt databasen.

Anslutningsobjektet som erhålls från anslutningspoolen är ofta en omslag kring den faktiska databasanslutningen. Omslaget förstår sitt förhållande till poolen och döljer detaljerna om poolen från applikationen. Till exempel kan wrapper -objektet implementera en "close" -metod som kan kallas precis som "close" -metoden på databasanslutningen. Till skillnad från metoden för databasanslutningen kan metoden på omslaget inte stänga databasanslutningen, utan istället returnera den till poolen. Applikationen behöver inte vara medveten om anslutningspoolen när den anropar metoderna på omslagets objekt.

Detta tillvägagångssätt uppmuntrar till att öppna en anslutning i en applikation endast när det behövs och stänga den så snart arbetet är gjort, snarare än att hålla en anslutning öppen för hela applikationens livslängd. På detta sätt kan ett relativt litet antal anslutningar betjäna ett stort antal förfrågningar. Detta kallas också multiplexing .

I en klient/serverarkitektur, å andra sidan, används vanligtvis en beständig anslutning så att servertillstånd kan hanteras. Detta "tillstånd" inkluderar markörer på serversidan, tillfälliga produkter, anslutningsspecifika funktionsinställningar och så vidare.

Ett programfel uppstår när anslutningspoolen överflödar. Detta kan inträffa om alla anslutningar i poolen används när ett program begär en anslutning. Till exempel kan programmet använda en anslutning för länge när för många klienter försöker komma åt webbplatsen eller en eller flera operationer blockeras eller helt enkelt är ineffektiva.

Se även

Referenser

  • IDbConnection Interface på MSDN
  • Hantera och övervaka .NET Connections -whitepaper.
  • Få och hålla kontakten whitepaper.
  • Hitchhiker's Guide to Visual Studio and SQL Server (7th Edition) Addison Wesley, William Vaughn, ISBN  978-0321243621

externa länkar