Inhoudsopgave:
Video: Top hacker shows us how it's done | Pablos Holman | TEDxMidwest 2024
PL / SQL is de taal die moet worden gebruikt bij het schrijven van code die zich in de database bevindt. In het volgende artikel ziet u verschillende situaties waarin u PL / SQL nuttig vindt.
Gebruik van databasetriggers
A trigger is een gebeurtenis binnen de DBMS die ervoor kan zorgen dat bepaalde code automatisch wordt uitgevoerd. Er zijn vier typen databasetriggers:
- triggers op paginaniveau kunnen activiteit initiëren vóór of na een INSERT-, UPDATE- of DELETE-gebeurtenis. Deze worden meestal gebruikt om geschiedenisinformatie en databasewijzigingen bij te houden, om overbodige gegevens gesynchroniseerd te houden of om de beveiliging te verbeteren door te voorkomen dat bepaalde bewerkingen plaatsvinden.
- triggers op weergaveniveau zijn erg handig. Een weergave is een opgeslagen SQL-instructie die ontwikkelaars kunnen opvragen alsof het een databasetabel zelf betreft. Door INSTEAD OF triggers in een view te plaatsen, kunnen de opdrachten INSERT, MODIFY en DELETE op de view worden toegepast, ongeacht de complexiteit ervan, omdat de INSTEAD OF-trigger bepaalt wat er met de view kan worden gedaan.
- Triggers op databaseniveau kunnen worden geactiveerd bij opstarten en afsluiten. Wanneer de database wordt opgestart, wilt u bijvoorbeeld de beschikbaarheid van andere databases of webservices testen. Voordat u een database afsluit, wilt u mogelijk andere databases en webservices ervan op de hoogte stellen dat de database offline gaat.
- Triggers op sessieniveau kunnen worden gebruikt om specifieke informatie op te slaan. Wanneer een gebruiker zich bijvoorbeeld aan- of afmeldt, wilt u misschien code uitvoeren die de voorkeuren van de gebruiker bevat en deze in het geheugen laden voor snelle toegang. Wanneer de sessie wordt afgesloten, kan een trigger de voorkeuren opslaan voor toekomstig gebruik.
Scripten met snelheid
Wanneer u code schrijft, is het handig om een gedeelte van de code te typen en uit te voeren zonder deze eerst in de database op te slaan. Oracle biedt deze mogelijkheid, die wordt ondersteund door alle PL / SQL IDE's.
Code behouden serverzijde
Het grootste deel van de PL / SQL-code wordt opgeslagen als programma-eenheden op de server. Een typische toepassing heeft veel coderegels.
Sommige programmeurs, met name webgebaseerde ontwikkelaars die werken in de J2EE of. NET-omgevingen, probeer het grootste deel van hun code in de toepassingsserver in Java (voor J2EE-ontwikkelaars) of VB te schrijven. NET (voor.NET-ontwikkelaars). Dit is geen goede oefening. In een database-applicatie is veel van de logica gewijd aan het ophalen en bijwerken van informatie. Als de code voor het uitvoeren van deze taak zich bevindt in een toepassingsserver, moet deze via een netwerk een aanvraag naar de database verzenden. Vervolgens moet de database de aanvraag verwerken en de informatie terugsturen over het netwerk om de toepassing te verwerken.Omdat netwerken en computers nu erg snel zijn, zou je denken dat dit slechts een fractie van een seconde zou duren. Hoewel dit het geval is voor een enkel verzoek, als een zeer complexe toepassing miljoenen of zelfs honderden miljoenen interacties met de database vereist, kan het vermenigvuldigen van het aantal interacties met even fracties van een seconde tot zeer slechte prestaties leiden.
Zelfs relatief eenvoudige bewerkingen die slechts een paar databaseaanvragen vereisen, kunnen problematisch zijn als de applicatie wordt gebruikt door honderden, duizenden of tienduizenden gebruikers tegelijkertijd. Het is veel moeilijker om een database-intensieve applicatie te bouwen zonder gebruik te maken van server-side codering dan het schrijven van alle code die moet worden uitgevoerd in een applicatieserver.
Een van de argumenten tegen het schrijven van code aan de serverzijde is dat de toepassing niet draagbaar is (kan niet van het ene naar het andere platform worden verplaatst). De meeste organisaties die Oracle gebruiken, gebruiken het echter al heel lang (tien of meer jaar) en overwegen geen overstap naar een ander platform. Ook is de ontwikkeling van het web momenteel in een staat van snelle beweging. Organisaties wisselen vaak tussen. NET, J2EE en andere omgevingen voor hun webgebaseerde applicatie-ontwikkeling. Beide. NET en J2EE-omgevingen zijn ook in beweging. In de J2EE-omgeving bestond de industriestandaard voor webontwikkeling ongeveer een jaar geleden uit het maken van JavaServer-pagina's (JSP's). Momenteel is de industriestandaard om te werken in de JSP / Struts-omgeving. In het jaar erna zullen JavaServer Faces (JSF's) waarschijnlijk de industriestandaard worden. Daarom loopt de code die in de middelste laag geschreven wordt, een hoog risico om in de toekomst herschreven te moeten worden.
Code aan serverzijde wordt sneller uitgevoerd, is gemakkelijker te onderhouden en te testen en is minder vatbaar voor wijzigingen dan code die in de middelste laag is geplaatst. Daarom is het een betere benadering om grote delen van een toepassing in de database te maken.
Er zijn een aantal plaatsen waar u code kunt schrijven die uw toepassingen kunnen gebruiken:
Gedeelten van toepassingen:
- PL / SQL-programmeereenheden kunnen een reeks waarden (functies) of PL / SQL-routines retourneren kan databasebewerkingen (procedures) uitvoeren. Deze functies en procedures kunnen worden opgeroepen door andere functies en procedures of (in het geval van functies) die in SQL-instructies worden gebruikt. PL / SQL-routines kunnen zo groot en complex zijn als u wilt. Sommige complexe routines kunnen duizenden regels code bevatten. Volledige systemen kunnen miljoenen regels code bevatten. PL / SQL-code ingesloten in views:
- Met Oracle kunt u code insluiten in database-views. De code bevindt zich mogelijk op een van de twee plaatsen in de weergave. Ten eerste kunt u correct vervaardigde functies plaatsen door een waarde terug te geven in het SELECT-gedeelte van een SQL-instructie om extra informatie op te halen, die al dan niet deel uitmaakt van de tabellen die worden opgevraagd. U kunt PL / SQL ook insluiten IN PLAATS VAN triggers in een weergave. Met deze triggers kunt u bewerkingen INSERT, UPDATE en DELETE uitvoeren op complexe views, waarbij PL / SQL programmatisch verwerkt hoe deze bewerkingen moeten worden afgehandeld. Batchroutines:
- Batchroutines voer code uit die een groot aantal records op hetzelfde moment verwerkt. Het genereren van facturen voor elke klant in een systeem of het verwerken van salariscontroles voor een hele organisatie zijn voorbeelden van batchroutines. Deze routines zijn meestal groot, complex en database-intensief. Dit type routine zou zeker moeten worden geschreven in PL / SQL.