Datakälla - Datasource

DataSource är ett namn som ges till anslutningen som är inställd på en databas från en server . Namnet används ofta när du skapar en fråga till databasen. Den datakällan namn (DSN) behöver inte vara densamma som filnamn för databasen. Till exempel kan en databasfil med namnet friends.mdb ställas in med ett DSN från skolan . Då skulle DSN- skolan användas för att referera till databasen när du utför en fråga.

Suns version av DataSource [1]

En fabrik för anslutningar till den fysiska datakällan som detta DataSource-objekt representerar. Ett alternativ till DriverManager-anläggningen, ett DataSource-objekt är det bästa sättet att få en anslutning. Ett objekt som implementerar DataSource-gränssnittet registreras vanligtvis med en namntjänst baserad på Java Naming and Directory Interface (JNDI) API.

DataSource-gränssnittet implementeras av en drivrutinsleverantör. Det finns tre typer av implementeringar:

  • Grundläggande implementering - producerar ett standardanslutningsobjekt
  • Connection pooling implementering - producerar ett Connection-objekt som automatiskt kommer att delta i anslutningspooling. Denna implementering fungerar med en mellanliggande pooling manager.
  • Implementering av distribuerad transaktion - producerar ett anslutningsobjekt som kan användas för distribuerade transaktioner och nästan alltid deltar i sammankopplingspooling. Denna implementering fungerar med en mellanliggande transaktionshanterare och nästan alltid med en manager för anslutningspooling.

Ett DataSource-objekt har egenskaper som kan modifieras vid behov. Till exempel, om datakällan flyttas till en annan server, kan egenskapen för servern ändras. Fördelen är att eftersom datakällans egenskaper kan ändras behöver inte någon kod som får åtkomst till den datakällan ändras.

En drivrutin som nås via ett DataSource-objekt registrerar sig inte hos DriverManager. Snarare hämtas ett DataSource-objekt genom en uppslagsoperation och används sedan för att skapa ett anslutningsobjekt. Med en grundläggande implementering är anslutningen som erhålls via ett DataSource-objekt identisk med en anslutning som erhållits via DriverManager-anläggningen.

Suns DataSource-översikt [2]

Ett DataSource-objekt representerar en datakälla i Java-programmeringsspråket . I grundläggande termer är en datakälla en möjlighet för lagring av data. Det kan vara lika sofistikerat som en komplex databas för ett stort företag eller så enkelt som en fil med rader och kolumner. En datakälla kan finnas på en fjärrserver eller så kan den finnas på en lokal stationär dator. Applikationer får åtkomst till en datakälla med hjälp av en anslutning, och ett DataSource-objekt kan ses som en fabrik för anslutningar till den specifika datakälla som DataSource-förekomsten representerar. DataSource-gränssnittet tillhandahåller två metoder för att upprätta en anslutning med en datakälla.

Att använda ett DataSource-objekt är det föredragna alternativet till att använda DriverManager för att upprätta en anslutning till en datakälla. De liknar den grad att DriverManager-klassen och DataSource-gränssnittet båda har metoder för att skapa en anslutning, metoder för att få och ställa in en tidsgräns för att skapa en anslutning och metoder för att få och ställa in en ström för loggning.

Deras skillnader är dock mer betydelsefulla än deras likheter. Till skillnad från DriverManager har ett DataSource-objekt egenskaper som identifierar och beskriver den datakälla det representerar. Ett DataSource-objekt fungerar också med en JNDI-namngivningstjänst (Java Naming and Directory Interface) och kan skapas, distribueras och hanteras separat från de applikationer som använder den. En drivrutinsleverantör kommer att tillhandahålla en klass som är en grundläggande implementering av DataSource-gränssnittet som en del av dess Java Database Connectivity (JDBC) 2.0 eller 3.0-drivrutinsprodukt. Vad en systemadministratör gör för att registrera ett DataSource-objekt med en JNDI-namntjänst och vad ett program gör för att få en anslutning till en datakälla med hjälp av ett DataSource-objekt som är registrerat med en JNDI-namntjänst beskrivs senare i detta kapitel.

Att vara registrerad hos en JNDI-namntjänst ger ett DataSource-objekt två stora fördelar jämfört med DriverManager. För det första behöver ett program inte hårdkoda förarinformation, som det gör med DriverManager. En programmerare kan välja ett logiskt namn för datakällan och registrera det logiska namnet med en JNDI-namntjänst. Applikationen använder det logiska namnet och JNDI-namntjänsten levererar DataSource-objektet som är associerat med det logiska namnet. DataSource-objektet kan sedan användas för att skapa en anslutning till den datakälla det representerar.

Den andra stora fördelen är att DataSource-anläggningen tillåter utvecklare att implementera en DataSource-klass för att dra nytta av funktioner som kopplingspool och distribuerade transaktioner. Anslutningspooling kan öka prestandan dramatiskt genom att återanvända anslutningar istället för att skapa en ny fysisk anslutning varje gång en anslutning begärs. Förmågan att använda distribuerade transaktioner gör det möjligt för en applikation att utföra stora företags tunga databasarbeten.

Även om en applikation kan använda antingen DriverManager eller ett DataSource-objekt för att få en anslutning erbjuder användningen av ett DataSource-objekt betydande fördelar och är det rekommenderade sättet att upprätta en anslutning.

Sedan 1.4

Eftersom Java EE 6 kan en JNDI-bunden DataSource alternativt konfigureras på ett deklarativt sätt direkt inifrån applikationen. Detta alternativ är särskilt användbart för självförsörjande applikationer eller för transparent användning av en inbäddad databas.

Yahoos version av DataSource [3]

En DataSource är en abstrakt representation av en levande uppsättning data som presenterar ett gemensamt förutsägbart API för andra objekt att interagera med. Arten av dina data, dess kvantitet, dess komplexitet och logiken för att returnera frågeresultat spelar alla en roll för att bestämma din typ av DataSource. För små mängder enkel textinformation är en JavaScript- array ett bra val. Om dina data har ett litet fotavtryck men kräver ett enkelt beräknings- eller transformationsfilter innan de visas kan en JavaScript-funktion vara rätt metod. För mycket stora datamängder - till exempel en robust relationsdatabas - eller för att komma åt en tredjeparts webbtjänst måste du säkert utnyttja kraften i en Script Node eller XHR DataSource.

Referenser