Samenvatting Basis scripting en databases
Boek: 114 bladzijden
Inhoudsopgave
Hoofdstuk 1: Oriëntatie op de module ........................................................................................................................2
Database: ..................................................................................................................................................................2
Algemene kennis van databases ...............................................................................................................................2
Verschillende soorten databasesystemen ................................................................................................................3
Veelgebruikte databaseservers: ................................................................................................................................4
Toepassing database scripting ..................................................................................................................................4
Rollen in de organisatie: ............................................................................................................................................5
Hoofdstuk 2: Inleiding MYSQL-DATABASE ...................................................................................................................5
Inleiding .....................................................................................................................................................................5
Basis van (MySQL-)databases ....................................................................................................................................5
Engines en opslag ......................................................................................................................................................8
Gebruikers en rechten...............................................................................................................................................9
Installeren van MYSQL ............................................................................................................................................10
Tooling .....................................................................................................................................................................10
Deployments en beheer ..........................................................................................................................................11
Schema scripts (SQL) genereren .............................................................................................................................11
Hoofdstuk 3: Scripttalen voor interactie met databases ...........................................................................................13
Scriptalen, API’s, tools en applicaties ......................................................................................................................13
Doelen van scriptalen ..............................................................................................................................................14
Security en databases .............................................................................................................................................16
Hoofstuk 4: Functionele aspecten databasescripting ................................................................................................18
Inleiding ...................................................................................................................................................................18
Praktische scripting van databases .........................................................................................................................18
Functionele en technische eisen .............................................................................................................................19
Database interactie .................................................................................................................................................21
Hoofdstuk 5: Scripting en operatingsysteem .............................................................................................................21
Inleiding ...................................................................................................................................................................21
Uitvoeren en debuggen van scripts.........................................................................................................................21
Uitvoeren van scripts ..............................................................................................................................................23
Planning van taken ..................................................................................................................................................24
, Hoofdstuk 1: Oriëntatie op de module
Database:
Een database is een georganiseerde collectie van data die in tabellen wordt opgedeeld en opgeslagen -> Deze
kunnen opgevraagd, samengevoegd of bewerkt worden.
Database Management Systeem (DBMS):
Een systeem dat helpt met het toegankelijk maken, beheren en beveiligen van de gegevens in een database.
Functies van DBMS:
• Serverrol: Treedt op als scheidsrechter om verbindingen tussen applicaties (clients) en de database te
faciliteren.
• Standaardisatie: Biedt methoden voor het onderling in verband brengen van gegevens en voor het
uitvoeren van gegevensopvragingen (queries).
Mogelijkheden van DBMS:
• Definieert datastructuren vooraf.
• Beheert de relaties tussen verschillende datatypes.
• Voert controles uit op de gegevens.
Algemene kennis van databases
Een computer bestaat uit de volgende componenten:
• CPU (Central Proccessing Unit): Dit component voert instructies uit met informatie vanuit het
geheugenregister (RAM).
• RAM (Random Acces Memory): Dit is het geheugenregister en bevat alle informatie voor de instructies die
de CPU moet uitvoeren.
• OI (In and Output devices): monitor, muis, keyboard, speakers.
• Opslag: HDD / SDD
Do one thing and do it well (DOTADIW): Kleine, onafhankelijke scripts die samenwerken om grotere functionaliteit
te bieden.
Keep is simple stupid (KISS): Hoe eenvoudiger hoe beter.
DDL (Data Definition language): Voor het definiëren en aanpassen van de databasestructuur.
DML (Data Manipulation Language): Voor het manipuleren van gegevens binnen de database.
DCL (Data Control Language): Voor het beheren van gebruikersrechten en permissies.
Structured Query Language (SQL) is ontstaan uit de wens om op een begrijpelijk manier met gegevens in een
database om te gaan en bevat de volgende kenmerken:
• Gebruikt voornamelijk Engelse woorden zoals Select, From en Where etc
• SQL-commando’s kunnen rechtstreeks op de databaseserver uitgevoerd worden zonder vooraf eerst
gecompileerd (vertaald naar machine code) te hoeven worden.
Database abstraction layer (DAL):
• Werkt als een tussenlaag om meerdere databasesystemen met elkaar te laten werken onafhankelijk van
het platform van de database.
• Voorbeelden zijn: Doctrine (PHP), Hibernate (Java)
Manieren van inzet van databases:
• Client-Server
• Multi-tier / Three – tier model
2
,Client-Server:
Applicaties die toegang willen tot de database verbinden direct met de databaseserver
Voordelen
• Eenvoudige Setup: Minimale configuratie nodig op de server.
• Snellere Verwerking: Vermindert de kans op conflicterende commando's door gelijktijdige uitvoeringen,
doordat er minder tijd zit tussen commando’s.
Nadelen
• Businesslogica: Moet geïmplementeerd worden op de databaseserver of in de clientapplicatie.
• Clientniveau: Dit leidt tot onafhankelijkheid van de database, maar kan inconsistenties veroorzaken door
de grotere afstand tussen data en logica en vereist dat alle clients dezelfde logica-versie gebruiken om
gedragsconsistentie te waarborgen
• Databaseniveau: Houdt de logica dicht bij de data, maar beperkt de portabiliteit.
Multi-tier/ Three – tier model
Dit model plaatst tussen de client en de database een derde laag: De (web) applicatie server.
• De applicatieserver verminderd inconsistentie en verminderd de hoeveelheid businesslogica in de client
aanzienlijk door enkele taken over te nemen van zowel de client als de database
• Feitelijk verbindt de applicatie server de client en de database en regelt het de interactie tussen de twee.
Verschillende soorten databasesystemen
In databases is er onderscheid te maken tussen general purpose en specific purpose systemen.
• General purpose: Dekken zoveel mogelijk functionele zaken.
• Specific purpose: Ontworpen voor een specifieke taak en zijn hiervoor geoptimaliseerd.
LAMP stack: Basis voor veel internetapplicaties, bestaande uit Linux, Apache, MySQL, en PHP.
NoSQL Databases: Vaak niet gebaseerd op tabellen en bieden flexibiliteit in dataformat.
Kenmerken:
• Niet gebonden aan tabellen, foreign keys, of joins.
• Elk record heeft een unieke identifier voor snelle toegang.
Voorbeelden:
• Document databases: Opslaan van complete datastructuren in één record.
• Key/value stores: Gebruikt voor het opslaan van logs of statistieken met een sleutel-waarde
opslagmethodiek.
• LDAP (Lightweight Directory Access Protocol): Hierarchische database voor het beheren van gebruikers en
hun permissies.
• SQLite: Lichte database-engine die platte bestanden als databron gebruikt, populair in mobiele en
embedded toepassingen.
• Graphdatabases: Lijkt op navigatiedatabases of het Document Object Model (DOM), geschikt voor
complexe dataverbindingen.
3
,Rest API’s
• Dit is een manier waarbij doormiddel van een URL van een webservice al voldoende informatie aan de
server te geven om het verzoek te kunnen verwerken zonder allerlei transactuele informatie naast de
inhoud van het bericht zelf.
• Deze API's worden gebruikt om te communiceren met NoSQL-databases via het web. Ze gebruiken HTTP-
webprotocollen en JSON (JavaScript Object Notation) voor data-uitwisseling.
Verbositeit: Dit betekent letterlijk ‘uitgebreid’ en in de XML-standaard is het de bedoeling dat alle elementen en
attributen zo duidelijk zijn beschreven in het bericht dat een webapplicatie deze makkelijk kan interpreteren
XML:
• Is uitgebreider dan JSON en bevat metadata en een markup (overheadinformatie).
• Is geschikt voor gebruik bij communicatie tussen systemen die geen directe relatie met elkaar hebben en
waarbij beiden kanten het duidelijk moet zijn over welke data het gaat en hoe deze gevalideerd moet
worden. (Bijvoorbeeld HR applicatie die data gebruikt van een financiële applicatie voor het koppelen van
personeelsdossiers aan uitbetalingen)
JSON
• Is sneller voor webapplicaties dan XML -> Bij XML moeten altijd eerst alle elementen en attributen
vertaald worden + omgezet worden in de juiste datastructuur in het geheugen van de server of applicatie
= Bij JSON hoeft dit niet omdat het meteen uitgelezen kan worden als Javascript code.
• Geschikt voor webapplicaties vanwege de duidelijke front-end & backend relatie van de applicatie
Big data: Alle vormen van databestanden die te groot zijn om met een enkele database server op een efficiënte
manier te kunnen verwerken.
Verschil tussen conventionele database vs big data:
• Klassieke database servers gaan ervan uit dat de volledige set van gegevens op iedere server aanwezig is.
• Big dataservers kunnen ook omgaan met situaties waarbij verschillende servers niet alle data van een
applicatie in het geheel bevatten, maar dat er aan spreiding (sharding) wordt gedaan.
Sharding: Het verspreiden (partitioneren) van data over meerdere servers.
Veelgebruikte databaseservers:
Naast MySQL zijn er andere populaire databases zoals:
• Microsoft SQL Server,
• Oracle
• IBM DB2,
• PostgreSQL (open source)
Toepassing database scripting
Databasescripts (SQL) kunnen zowel structuur als de data uit een database bevatten.
De volgende taken worden door SQL-scripts uitgevoerd:
• Back-upscripts maken voor databasemetadata en users/permissions
• Aanmaken of wijzigen van de databasestructuur
• Het bulk updaten van de data in de database.
• Migreren van data tussen verschillende (types) databaservers
• Herstellen van een databaseschema
• Leermiddel voor nieuwe developers
4
,Rollen in de organisatie:
Ontwikkelaar: Verantwoordelijk voor het schrijven van code en het ontwikkelen van applicaties, en moet ook
bekend zijn met databasestructuren en -beheer.
Security officer/data protection officer: Zorgt voor naleving van privacywetgeving en ontwikkelt beleid voor
informatiebeveiliging en -beheer.
Systeembeheerder: Functie is geëvolueerd naar een 'interne hostingprovider' voor applicaties binnen een
organisatie, zorgt voor het draaien en onderhouden van systemen.
Applicatiebeheerder: Beheert de basisfunctionaliteiten van applicaties, werkt samen met de systeembeheerder en
ontwikkelaar voor implementatie en onderhoud van applicaties.
Functioneel beheerder: Eerste contactpunt voor de eindgebruiker; verantwoordelijk voor het analyseren,
ontwikkelen en testen van gebruikersverzoeken.
Data-/Procesanalisten: Deze experts maken blauwdrukken van hoe een bedrijf werkt en gebruiken informatie. Ze
regelen de opzet van databases en zorgen dat alles klopt met de regels en het bedrijfsplan. Hun werk omvat ook
het maken van verslagen, het bewaren van informatie en het meten van bedrijfsprestaties met KPI's.
QA/Compliance: Zij zijn de 'regelwachters' die checken of een bedrijf zich houdt aan alle regels en wetten. Ze
werken met allerlei teams samen om te zorgen dat de regels gevolgd worden, vooral als het gaat om het veilig
houden van informatie en het volgen van het informatiebeleid.
Hoofdstuk 2: Inleiding MYSQL-DATABASE
Inleiding
Content managementsysteem (CMS): Een systeem dat de content van een website (zoals tekst, afbeeldingen)
scheidt van de structuur (HTML-code). De content wordt onafhankelijk beheerd en via PHP in de website geplaatst
-> Stelt mensen zonder kennis van HTML of PHP in staat om de inhoud van websites te beheren.
Voorbeeld:
<html>
<head>
<title>$paginaTitle</title>
</head>
</html>
Basis van (MySQL-)databases
Functionele Componenten van een Database:
• Server
• Storage Engines
• Drivers/Adapters
• Clients
Server (Database Server):
Functies als de 'scheidsrechter' die bepaalt hoe en wanneer gegevens worden opgevraagd of aangepast door
clients. Verantwoordelijk voor het afdwingen van de rechten van gebruikers.
Storage Engines:
Werkzaam aan de onderkant van de database server, communiceren direct met het bestandssysteem om
gegevens te lezen of te schrijven.
5
, Drivers/Adapters:
Zorgen voor de verbinding tussen de clients en de database server, maken het mogelijk om SQL-commando’s uit te
voeren vanuit de client.
Clients: Alles wat van buitenaf via een adapter verbinding maakt met de database server
Tabellen en Velden:
• Entiteiten: De tabellen binnen een database.
• Velden: De kenmerken van een entiteit, kunnen verschillende dataformats hebben zoals binair of
numeriek.
Relaties
Functie relaties: Zorgen dat bepaalde data niet op meerdere plekken gedupliceerd hoeft te worden door het leggen
van verwijzingen van records van de ene tabel naar de ander.
Referentiële Integriteit: Voorkomt het verwijderen van records waar nog verwijzingen naar bestaan (via foreign
keys), tenzij deze gelijktijdig worden geüpdatet.
Gestructureerde/relationele database: Database die bestaat uit gestructureerde tabellen en velden.
Views
View: een voorgedefinieerde query die opgeslagen is in de database, waardoor veel herhalend werk wordt
bespaard.
Stored procedures en triggers
Databases zijn behalve opslag van data ook scheidsrechter over de kwaliteit van die data
Applicatiesystemen kunnen bestaan uit meerdere frontends -> Er kunnen verschillen optreden in de manier
waarop verschillende clients bepaalde operaties uitvoeren -> Stored procedures en views voorkomen dit
Stored procedures: Soort van programmeerfuncties waarmee bepaalde bijzondere handelingen binnen de database
worden uitgevoerd.
Triggers: Triggers zijn automatische acties die worden uitgevoerd als reactie op bepaalde gebeurtenissen binnen de
database, zoals het invoegen of bijwerken van gegevens.
Verschillen stored procedures en triggers:
• Stored Procedures worden opgeroepen met een SQL-commando.
• Triggers worden automatisch uitgevoerd in reactie op databasemutaties.
Voordelen stored procedures en triggers:
• Zorgen voor consistentie, ongeacht hoe de database wordt benaderd (via scripts of een applicatieserver).
• Centraliseren de logica op de databaseserver, wat ontwikkelwerk bespaart en inconsistenties voorkomt.
Indices
Indexeren: Een techniek om snel gegevens binnen de database te kunnen zoeken, vergelijkbaar met een
telefoonboek.
Indices: Soort telefoonboeken binnen een database waarbij een bepaald record afzonderlijk van de tabel in een
geoptimaliseerd format worden bijgehouden. -> Deze kunnen hierdoor snel doorzocht worden
Primairy keys (tegenwoordig vervangen door GUID/ UUIDS)
• Deze key moet uniek zijn voor elk record in een tabel.
• Bevat meestal een key in de vorm van een Integer met een incrementele waarde (1,2,3)
• Kunnen uit een of meer velden bestaan = compound primary key
6