SQL vs. NoSQL: een uiteenzetting

Maat: px
Weergave met pagina beginnen:

Download "SQL vs. NoSQL: een uiteenzetting"

Transcriptie

1 SQL vs. NoSQL: een uiteenzetting Vervang deze tekst door een grafische illustratie van het project. Project aangeboden door Tim Dhondt voor het behalen van de graad van Bachelor in de New Media and Communication Technology Academiejaar Stageplaats : Carambla Stagementor : Francis De Brabandere Stagebegeleider : Steven Verborgh

2 Woord vooraf Ik ben Tim Dhondt en zit op het moment van dit schrijven in mijn laatste jaar NMCT (New Media and Communication Technology) aan Howest in Kortrijk. In het middelbaar koos ik al voor de wetenschappen, en om precies te zijn de Wetenschappen-Wiskunde richting. In combinatie met het feit dat ik al van kindsbeen gefascineerd was door de magische doos die de computer was en dat mijn vader in de IT-sector werkt, kon het bijna niet anders dan dat ik zelf ook de IT-richting uitging. Ik wil ook specifiek mijn dank betuigen aan twee personen, namelijk Francis De Brabandere en Steven Verborgh. Francis De Brabandere is mijn stagementor en co-founder van de start-up Carambla, waar ik stage loop. Hij heeft mij 13 weken bijgestaan op de stage, heel veel nieuwe dingen bijgeleerd van onschatbare waarde en mij bijgestaan waar hij kon voor mijn bachelorproef. Voor dit alles zeg ik: danku. Steven Verborgh, die vorig jaar een docent van mij was, is mijn stagebegeleider. Allereerst wens ik hem nog eens proficiat met het vaderschap tijdens mijn stage. Daarnaast wil ik hem bedanken voor de evaluaties, de tips en de bijsturingen die hij gaf voor zowel de bachelorproef als de eindpresentatie. Deze bachelorproef is geschreven als eindwerk voor de Professionele Bachelor in de New Media and Communication Technology. Met dit werk bewijs ik dat ik de competenties behaald heb die verwacht worden van een bachelor. Dit eindwerk is vooral geschreven voor mensen die zich willen verdiepen in de werking van databases, zowel beginners als meer gevorderden. Alsook voor mensen die applicaties bouwen en onzeker zijn over de keuze van het te gebruiken type database voor hun applicatie. Deze scriptie is bedoeld als leidraad voor diegene die twijfelen tussen het gebruik van een SQL of een NoSQL database, of als studiemateriaal voor de beginnende IT er die zich wil verdiepen in de wereld van SQL en consoorten. Tim Dhondt

3 Samenvatting Deze bachelorproef behandelt de discussie tussen de twee grote types databases: SQL en NoSQL. Dit onderwerp is sinds een paar jaar al oorzaak geweest van vele verhitte discussies over welk type nu de betere is: SQL databases aan de ene kant (relationele databases) en NoSQL databases aan de andere kant (niet-relationele databases). De scriptie zal daarom ook deze probleemstelling behandelen: welke van de twee is nu effectief beter? Is het SQL, omdat deze al sinds jaar en dag gebruikt wordt en meer built-in features heeft, of is het NoSQL? Want werken met Big Data en horizontaal schalen is hot stuff tegenwoordig. Om een vergelijking te kunnen maken, moeten we eerst grondig weten hoe beide in elkaar zitten en hoe ze data bewaren, kortom we moeten weten hoe ze er vanbinnen en vanbuiten uitzien. Hiervoor gaan we ze beide apart bestuderen en de geschiedenis, de eigenschappen, pro s en contra s, bekijken. Pas wanneer we van beide typen databases weten hoe ze in elkaar zitten, kunnen we ze in een één-tegen-één strijd tegenover elkaar plaatsen. Hierin bekijken we welke aspecten belangrijk zijn, en welke de beperkingen zijn. Zijn er ook ongelooflijke afknappers of juist ideale gelegenheden om zeker één van de twee (niet) te gebruiken? Door de reeds vele discussies verkondig ik niet dat ik een antwoord zal bieden op de vraag Welk type is er beter?, maar wel op de vraag Welk type is er beter in een specifieke situatie?. Hiervoor zal ik als laatste onderdeel van dit naslagwerk verschillende situaties beschrijven en bij elke situatie het best passende type voorstellen en ook argumenten waarom. Het uiteindelijke resultaat is wel te verwachten: er is geen betere, er is alleen maar een betere in bepaalde situaties. En zelfs dan kan je met relationele databases, wanneer je er goed mee vertrouwd bent, heel veel van use cases afhandelen zonder echt in de problemen te geraken. Natuurlijk is het niet gewenst om veel performantieverlies te lijden en zeker niet als je een IT-gigant bent als bijvoorbeeld Google of Amazon. De stelling die je zeker en vast moet onthouden omtrent databases in het algemeen (of ze nu relationeel zijn of niet) is hoe dan ook bezint eer ge begint. Tim Dhondt

4 Verklarende woordenlijst API API of application programming interface is een protocol dat gebruikt wordt door software componenten, zodat deze componenten gemakkelijk met elkaar in verbinding kunnen staan. Het is een protocol dat voor een bibliotheek van data zit, zodat deze bibliotheek op specifieke manieren kan worden aangesproken. Blob Een blob (of binary large object) is een verzameling van binaire data die als één en dezelfde entiteit worden bewaard in een DBMS. Over het algemeen gaat dit over multimediaobjecten zoals afbeeldingen en audio, maar soms ook over uitvoerbare code. Databasemanagementsysteem (DBMS) Een databasemanagementsysteem of DBMS is het programma dat alle data die aanwezig is in een database beheert. Dit is één van de drie onderdelen van een database, hiernaast zijn er nog de opgeslagen data zelf en de gebruikersinterface. Bekenden onder deze noemer zijn: MySQL, Microsoft SQL Server, Oracle, Denormalisatie Denormalisatie is het proces dat probeert de lees-performantie te verbeteren van een database door redundante data toe te voegen of data te groeperen. Horizontaal schalen Dit is één van de twee methodes om meer middelen toe te voegen aan een applicatie. Horizontaal schalen gaat meer eenheden (in het geval van databases zijn dit servers) toevoegen aan het systeem om zo de applicatie (en database) te gaan verdelen over meerdere eenheden. Met deze methode kan je zware taken uitvoeren die vroeger alleen maar door een heel erg krachtige wetenschappelijke computer konden worden uitgevoerd. En door de lagere kost van de standaard -modellen, is dit stukken goedkoper. NoSQL NoSQL slaat in tegenstelling tot SQL niet op een taal, maar enkel en alleen op het type van de database. Deze databases worden dan bestempeld als niet-relationeel, gedistribueerd, open-source en horizontaal schaalbaar. De oorspronkelijke intentie was om het te gaan gebruiken voor moderne web-databases, en dat sinds het jaar De gemeenschap is sindsdien erg gegroeid, en heeft de verklaring van NoSQL die oorspronkelijk stond voor geen SQL veranderd naar Not Only SQL (niet alleen SQL). Open source Open source is de benaming voor een product dat de bronnen openstelt voor het publiek. Een project kan tijdens de ontwikkeling open source zijn, maar eenmaal in productie gaat Tim Dhondt

5 het slot op de deur; het kan ook starten achter slot en grendel en bij productie zijn deuren openzetten; of over de hele lijn alle bronnen publiek te maken. Sharding Sharding is een design principe waarbij de rijen van een database afzonderlijk worden bewaard i.p.v. deze te gaan opsplitsen volgens kolommen. Elke rij is deel van een shard, en die shards kunnen op hun beurt op verschillende servers staan. SQL SQL staat voor Structured Query Language en is een standaardtaal die gebruikt wordt door relationele DBMS. Men kan met SQL verschillende taken uitvoeren waaronder data uit de database opvragen, deze gaan aanpassen of nieuwe data toevoegen. Thread Een thread is het kleinste op zichzelf staande proces dat kan beheerd worden door het operating systeem. Je kan een thread zien als de kleine vorm van een proces (een proces kan een applicatie zijn, een taak, ), zodoende bestaat 1 proces uit vele threads. Tuple Een tuple wordt gebruikt in de wiskunde of computer wetenschappen en is een gesorteerde lijst van elementen. Deze lijst kan verschillende types van elementen bevatten en elk element kan door middel van zijn index worden opgevraagd. UnQL UnQL staat voor Unstructured Query Language en de productie hiervan is gestart in 2011, dit met dezelfde reden als die waarom SQL tot leven is gekomen: een standaard. Verticaal schalen Dit is één van de twee methodes om meer middelen toe te voegen aan een applicatie. In tegenstelling tot horizontaal schalen, focust verticaal schalen zich maar op één eenheid. Er wordt dan in bijvoorbeeld een server meer geheugen gestoken of grotere harde schijven, in plaats van meer servers te plaatsen. Dit soort schalen is voordeliger voor virtualisatie omdat de draaiende operating systemen en applicaties dan meer middelen hebben om met elkaar te delen. Tim Dhondt

6 Inhoudstafel Woord vooraf... Samenvatting... Verklarende woordenlijst... Inhoudstafel... Carambla, een start-up als geen ander SQL Geschiedenis van de taal Waarom kwam SQL in de wereld? Hoe zit SQL in elkaar? Data Manipulation Language Data Control Language Data Definition Language Structuur van SQL databases Entiteiten Entiteit-types Attributen Regels van de opbouw Relaties Transacties Opbouw van queries SELECT-statement Onderdelen van de DML Onderdelen van de DDL Onderdelen van de DCL NoSQL Geschiedenis van de term UnQL Opbouw van queries Tim Dhondt

7 2.2.2 Hoe ver staat UnQL nu? Doel van niet-relationele databases Big Users Big Data Cloud Computing Type NoSQL Databases Key-Value Store Document Store Graph Database SQL vs. NoSQL Transacties Schaalbaarheid Locking Referentiële integriteit Beveiliging Use Cases Groei in data? Gebruikersexplosie Kan downtime geoorloofd worden? Gevoelige data overdracht? Specifieke data-modellen Geld is een struikelblok? Vertrouwde omgeving Conclusie Literatuurlijst Figurenlijst Tim Dhondt

8 Carambla, een start-up als geen ander Voor mijn stage zat ik bij een kleine start-up genaamd Carambla. Carambla is, op het moment van dit schrijven, gesitueerd aan de Zuiderpoort in Ledeberg (naast de Financiële Overheidsdienst Belastingen). De core business van het bedrijf is het idee om parkeerplaatsen te delen. Dit betekent dat mensen met privé parkeerplaatsen deze kunnen registreren op de website, zodat later mensen via de mobiele Carambla appgebruik kunnen maken van door particulieren ter beschikking gestelde plaatsen. Op dit moment kan je enkel nog maar instant parkeren, maar er wordt gewerkt om in de toekomst abonnementen en reservaties aan te bieden. Start-ups maken vaak gebruik van nieuwe en open-source technologieën. Mee zijn met de technologieën van het moment is soms een hele opdracht, maar het is wel cruciaal om het verschil te kunnen maken in een sector die constant verandert. Een start-up als Carambla heeft ook zijn eigen sfeer: met een kleine groep van mensen wordt de band tussen de verschillende werknemers ook groter. Los van dit alles vond ik het idee van het delen van privé parkeerplaatsen ook wel heel goed gevonden en de visie die ze hadden om Carambla wat bij te sturen is wat me volledig heeft binnengezogen. Deze open-source technologieën gebruiken heel vaak NoSQL-databases (aangezien deze ook over het algemeen open-source zijn). Ik kwam dus in mijn eerste weken op mijn stage constant in aanraking met een NoSQL database. Aangezien wij op school geen NoSQL in het lessenpakket hadden, wist ik hier aanvankelijk zeer weinig over, maar het intrigeerde me wel en ik ging op onderzoek. Later maakte ik dan ook gebruik van een SQL-database (PostgreSQL voor geo-locaties), en vroeg me af welk type database (SQL of NoSQL) nu eigenlijk beter was, en in welke situatie. Zo kwam ik bij het idee om de vergelijking te maken tussen beide, situaties te bedenken waarin databases gebruikt worden en dan te kijken welk van beide types het beste past. Voor een bedrijf is deze informatie heel belangrijk aangezien men dan voor de juiste situatie het juiste type database kan kiezen, zodat het systeem performant en schaalbaar is. Dit is voor een start-up misschien nog crucialer dan voor een KMO of een groot bedrijf. Tim Dhondt 8

9 1.1 Geschiedenis van de taal 1. SQL SQL 1 is ontstaan in de loop van de jaren zeventig, ze werd ontwikkeld door IBM, een bedrijf dat de dag van vandaag nog steeds actief is op het vlak van computer technologie. SQLdatabases zijn relationele databases, dit komt omdat de taal zelf gebaseerd is op de relationele algebra. Deze relationele algebra is enkel en alleen tot stand gekomen om een theoretische basis te bieden voor deze taal, en bij uitbreiding voor relationele databases. Deze wiskunde maakt gebruik van tuples 2 dit is een geordende lijst van variabelen en identificeert de aparte elementen door een naam (of attribuut). Dit is anders dan voor andere soorten verzamelingen waar de identificatie vooral gebeurt door een index. Hierdoor krijg je relaties: een attribuut die een bepaalde waarde bevat. Over de loop van zo n tien jaar zijn er verschillende vormen van SQL geweest, maar pas in de jaren tachtig werd SQL definitief gestandaardiseerd. Ondanks dat zijn er nog steeds nieuwe versies van SQL die het levenslicht zien, zo kwam er SQL 1999, SQL 2003, SQL 2008 en op dit moment SQL Dit is reeds de zevende revisie (sinds de standaardisering) van de taal in een loop van 25 jaar. 1.2 Waarom kwam SQL in de wereld? IBM ontwikkelde SQL in de eerste plaats voor de modale eindgebruiker, in dit geval business managers. Zo konden zij het bedrijf waar ze toe behoorden gaan analyseren om zo alles beter te weten te komen wat er zich speelde in het bedrijf. Maar om SQL te gebruiken had je kennis nodig over de database die je wil ondervragen, wat helemaal niet zo evident was voor business managers, aangezien zij vaak niet heel technisch zijn aangelegd, laat staan weten hoe de structuur van de database in mekaar steekt. Hierdoor is het gebruik van SQL overgeschakeld van de business managers naar de programmeurs. De programmeurs schreven dan applicaties met een gebruikers interface voor de business managers, zodat zij hun analyses konden blijven doen. Ontwikkelaars kunnen dan via een API 3 connectie maken met de desbetreffende database. Deze API s verschillen van programmeertaal tot programmeertaal. Zo is er voor Java JDBC en voor.net ODBC. 1 Zie verklarende woordenlijst 2 Zie verklarende woordenlijst 3 Zie verklarende woordenlijst Tim Dhondt 9

10 Het huidige doel van SQL is dus niet meer om een taal te bieden voor een eindgebruiker, maar om een ontwikkelaar toe te laten een connectie te maken tussen applicaties en databases. 1.3 Hoe zit SQL in elkaar? SQL bestaat uit drie grote onderdelen en deze zijn de Data Manipulation Language (DML), de Data Control Language (DCL) en de Data Definition Language (DDL) Data Manipulation Language De Data Manipulation Language (vrij vertaald: de Data Manipulatie Taal) is een taal die men gebruikt om gegevens aan de database toe te voegen, te verwijderen of te wijzigen. Deze taal omvat verschillende commando s die, zoals hierboven al vermeld, data kunnen manipuleren zonder de structuur van tabellen en database-objecten te wijzigen. In SQL zijn dit dan de INSERT-, DELETE- en UPDATE-commando s. De zuivere lees-vorm van SELECT (SELECT FROM ) manipuleert geen data en hoort dus volgens de standaard niet bij de DML. Er bestaat wel een vorm van de SELECT die wel data wijzigt (SELECT IN ) en deze zit dan wel in deze groep. Maar in alledaags gebruik wordt er geen onderscheid gemaakt tussen beide SELECT s en neemt men aan dat de SELECT een onderdeel is van de DML. De DM-talen kunnen in twee types worden onderverdeeld, namelijk imperatieve talen en declaratieve talen. De imperatieve talen beschrijven de procedures van hoe iets moet gebeuren of in elkaar zit, terwijl de declaratieve talen beschrijven wat een actie effectief doet. SQL zit geklasseerd onder de declaratieve talen aangezien elk commando vertelt wat de database moet doen Data Control Language De Data Control Language (vrij vertaald: de Data Controle Taal) is een taal die de toegang tot de database beheert. Hierin zitten dus de commando s om verschillende rechten toe te kennen aan bepaalde gebruikers voor deze database. Om rechten toe te voegen gebruik je het GRANT-commando (met daarbij het toe te kennen recht, bv.: GRANT CONNECT). Om rechten te verwijderen doe je juist hetzelfde, alleen vervang je het GRANT-commando door REVOKE. Andere commando s die ook aanwezig zijn in de DCL, maar geen betrekking hebben op de rechten van de database zijn onder andere CONNECT, COMMIT en ROLLBACK. CONNECT connecteert met de database, COMMIT gaat de acties van een vorig commando Tim Dhondt 10

11 bewaren (permanent maken) en ROLLBACK gaat in plaats van de acties permanent te maken, deze ongedaan maken (terugkeren naar een vorige versie) Data Definition Language De Data Definition Language of Data Description Language (vrij vertaald: Data Beschrijvingstaal) is een taal die de database tabellen definieert. De DDL is voor tabellen eigenlijk wat de DML is voor data: je kan een nieuwe tabel aanmaken (je kan een nieuwe record toevoegen), je kan een bestaande tabel verwijderen (je kan een bestaande record verwijderen) en je kan een bestaande tabel wijzigen (je kan een bestaande record wijzigen). De DDL heeft ook commando s hiervoor, maar onder een andere naam: CREATE (maakt een nieuwe tabel aan, equivalent van de INSERT), DROP (verwijdert een bestaande tabel, equivalent van de DELETE) en ALTER (wijzigt een bestaande tabel, equivalent van UPDATE). Met CREATE kan je niet alleen tabellen aanmaken, ruim gezien kan men database-objecten aanmaken en hieronder horen onder andere databases, indices en stored procedures (dit zijn subroutines die dan gebruikt kunnen worden door de applicaties die de database gebruiken). DROP kan dit database-object dan ook weer verwijderen, dus met DROP kan je naast tabellen ook databases, indices of views verwijderen. En hetzelfde geldt dan voor ALTER: hiermee kan je bestaande database-objecten wijzigen. De types database-objecten die je kan wijzigen met het ALTER-commando hangen af van welke DBMS 4 je gebruikt. Om nog even een vergelijking te maken met een andere taal, XML Schema is ook een voorbeeld van een DDL, maar dan voor XML. 1.4 Structuur van SQL databases Een SQL database bestaat uit drie onderdelen: entiteiten, entiteit-types en attributen Entiteiten Een entiteit is een object dat informatie bevat die interessant is voor de applicatie of gebruiker. Zo kan je een entiteit Persoon hebben of een entiteit Auto en deze hebben op hun beurt verschillende attributen. Een Persoon heeft bijvoorbeeld een naam, geboortedatum, geslacht en ga zo maar door. Terwijl de Auto-entiteit eerder de attributen bouwjaar, kleur, type zal hebben. Elke entiteit is uniek, zoals iedere mens uniek is. Je zou kunnen stellen dat alle mensen ter wereld een entiteit zijn met elk hun eigen attributen en nergens zullen er twee identiek dezelfde zijn. 4 Zie verklarende woordenlijst Tim Dhondt 11

12 De twee aangehaalde voorbeelden Persoon en Auto zijn fysieke objecten, maar een entiteit moet niet fysiek zijn: een entiteit Verkoop kan ook bestaan. Zolang het noodzakelijk is voor de applicatie en het attributen heeft met waarde, kan het opgenomen worden in de database als entiteit Entiteit-types Entiteit van hetzelfde type behoren tot eenzelfde entiteit-type. Dus een Persoon-entiteit A en Persoon-entiteit B behoren beide tot het entiteit-type Persoon. Men kan dus stellen dat een entiteit-type een verzameling is van alle entiteiten van dat type. Entiteit-types zijn zo mogelijk wel het belangrijkst van de drie onderdelen, want deze zullen de tabellen vormen in de database Attributen Attributen zijn de onderdelen van een entiteit die worden gedefinieerd in het entiteit-type. Dit zijn de karakteristieken voor die entiteit en bevatten interessante informatie voor de applicatie. Een persoon heeft bijvoorbeeld een huidstype, maar mogelijk is dit voor de applicatie niet van belang en dan zal dit ook niet opgenomen worden in de entiteit-definitie. De attributen worden in het database-model de kolommen van een tabel Regels van de opbouw Eens je entiteit-types hebt met attributen kan je hier niet zomaar een hele database mee construeren, je zal je moeten houden aan enkele regels. Elke tabel representeert exact één entiteit-type Er is één uitzondering op deze regel: indien twee entiteit-types dezelfde attributen hebben en een entiteit in beide entiteit-types kan worden ondergebracht, kunnen beide entiteittypes door dezelfde tabel worden gerepresenteerd. Het entiteit-type Folder (in een operating systeem) en het entiteit-type Subfolder hebben dezelfde attributen en een entiteit Subfolder kan zowel opgaan in het entiteit-type Folder als Subfolder. Dus kunnen beide voorgesteld worden in de tabel Folder. Alle kolommen moet atomisch zijn Om te kunnen weten of de definitie van de kolommen hieraan voldoet, moeten we eerst weten wat atomisch zijn betekent. Dit wil zeggen dat de kolommen zo ver mogelijk moeten opgesplitst worden onder de voorwaarde dat elk apart onderdeel nog waarde heeft. Een adres in de vorm van Straat Nummer, Postcode Stad wordt best niet opgenomen als één attribuut adres, want dit is niet atomisch. Het voorbeeld hier kan nog verder worden opgesplitst in straat + nummer (want een nummer alleen heeft geen waarde), postcode en stad. Een kolom kan maar één waarde bevatten Sommige entiteit-types kunnen attributen hebben die meerdere waardes bevatten, zoals bijvoorbeeld een parking operator. Een operator heeft een attribuut parkings wat dus Tim Dhondt 12

13 meerdere waarden kan bevatten. Wanneer dit voorvalt, is het best om nog een entiteit-type (tabel) te maken, en in het geval van het voorbeeld is dit Parking. En dan wordt er een oneto-many relatie gelegd van Parking naar Operator Relaties Relaties zijn natuurlijk van groot belang in een relationele database. Maar niet elke relatie is vanzelfsprekend, zo zijn er verschillende types die zeker aandacht verdienen. Figuur 1 Database-model met relaties van Public Parkings (stageproject) One-to-one relatie Een one-to-one relatie valt het best uit te leggen met een voorbeeld: in een monogame cultuur kan een man geen of één vrouw hebben en een vrouw kan geen of één man hebben. Indien Man een tabel is en Vrouw ook, zou er een one-to-one relatie zijn tussen beide tabellen. Ondanks het feit dat er een relatie is van de ene tabel naar de andere, zal er maar in één van de twee een foreign key aanwezig zijn One-to-many / many-to-one relatie Hier haal ik het voorbeeld aan van de operator en de parkings aan. Tabel A kan via één (of meerdere) van zijn attributen één waarde (entiteit) uit tabel B bevatten, terwijl die entiteit dan meerdere waarden (entiteiten) uit tabel A kan bevatten. Hier zal de foreign key aanwezig zijn in de tabel met de many-to-one declaratie (in dit geval: Parking). Tim Dhondt 13

14 Many-to-many relatie Het aloude voorbeeld van het recept en de ingrediënten. Een recept heeft meerdere ingrediënten nodig en een ingrediënt kan voor meerdere recepten gebruikt worden. Hiervoor wordt er in een database een tussentabel gemaakt (gewoonlijk met naam van de twee tabellen, vb: ReceptIngrediënt). Met hier dan twee foreign keys in naar de originele tabellen. 1.5 Transacties Een transactie is een gegeven van alles of niets. Om een simpel voorbeeld te geven: een geldtransactie. Deze bestaat uit twee delen, het verlagen van het saldo van de ene rekening en het verhogen van het saldo van de andere rekening. Indien het verlagen van het saldo gebeurt, maar door een stroompanne het verhogen niet gebeurd, dan is er een ongelijkheid (wat zeer onwenselijk is). We willen dat ofwel beide acties gebeuren ofwel geen van beide, en om dit op te lossen zijn transacties ontstaan. Een transactie is een reeks van commando s die na elkaar worden uitgevoerd. Indien alles goed en zonder fouten verloopt, zal er aan het einde van de reeks operaties een COMMITstatement toegevoegd worden, zodat de transactie effectief wordt doorgevoerd en finaal gemaakt. Op dit punt wordt dan ook een nieuwe Save Point gemaakt van de database. Dit is nodig indien er tijdens de transactie iets misloopt of er een operatie wordt uitgevoerd die niet gewenst is. Want in die gevallen kan dan een rollback worden uitgevoerd (indien er een fout optreedt bij een transactie, treed de rollback automatisch in actie), zodat de database terug kan worden gezet naar de staat sinds de laatste commit of rollback. Hierdoor kan je geen rollback meer doen na een transactie aangezien hij stopt bij de laatste commit. Transacties zijn dus heel krachtige, maar ook heel gevaarlijke mechanismen. Heb je ze niet nodig, dan gebruik je ze beter ook niet. Heb je ze wel nodig, dan ben je best wat voorzichtig, maar kan je ook eens glimlachen over hoe gemakkelijk het allemaal niet is. 1.6 Opbouw van queries SQL is opgebouwd op een manier zodat als je de query-structuur hardop leest, je ook precies weet wat je doet. Je zou bijna kunnen zeggen dat SQL een soort spreektaal is om een database te ondervragen. Als je enkel en alleen kijkt naar de pure definitie van de term query, slaat dit enkel en alleen op het SELECT-statement, aangezien dit een opvraging is van data. Terwijl de andere statements eerder opdrachten zijn om door de database te worden uitgevoerd, maar deze worden in de volksmond ook onder de noemer query geplaatst. Tim Dhondt 14

15 1.6.1 SELECT-statement De select is opgebouwd uit minstens twee clauses : wat je wil selecteren en van waar. SELECT * FROM tabel, dit is de meest simpele SELECT-query die je kan doen, waarbij de asterisk een plaatsvervanger is voor de gehele entiteit. Maar deze query zal elke rij uit die tabel gaan ophalen wat in heel veel gevallen niet de bedoeling is. Er kunnen dus ook condities aan toegevoegd worden door de WHERE-clause: SELECT * FROM Koffiekoek WHERE prijs < Hierbij vraag ik alle koffiekoeken op die goedkoper zijn dan twee. Je kan ook verschillende condities achter elkaar hangen. Een lijst is vaak het mooist als die geordend is, en dit kan je met SQL dan ook vragen met de ORDER BY-clause: SELECT * FROM Koffiekoek WHERE prijs < 2.00 ORDER BY naam DESC. Ondertussen kan je wel raden wat hier gevraagd wordt, alle koffiekoeken goedkoper dan twee, geordend op naam aflopend. De laatste clause die heel veel voorkomt, is de JOIN-clause. Hiermee kan je meerdere tabellen tegelijk ondervragen. In dit geval worden de attributen expliciet voorafgegaan door de tabelnaam zodat er geen verwarring kan ontstaan bij welke die hoort: SELECT Boek.titel, Auteur.naam FROM Boek JOIN Auteur ON Boek.isbn = Auteur.isbn. Deze methode wordt vaak gebruikt om data van verschillende tabellen in één keer op te vragen of om deze data gemakkelijk te aggregeren Onderdelen van de DML Zoals eerder aangegeven zijn dit de INSERT-, UPDATE- en DELETE-statements. Een minder voorkomend, maar niet onbelangrijk statement dat hier ook nog bij hoort is MERGE. INSERT Dit statement wordt gebruikt om nieuwe data toe te voegen: INSERT INTO tabel (attr1, attr2, attr3) VALUES (5, voorbeeld, NULL). UPDATE De update wordt gebruikt om één of meerdere velden te wijzigen: UPDATE tabel SET attr1 = voorbeeld. DELETE Deze query verwijdert hele rijen uit een tabel: DELETE FROM tabel. MERGE Merge wordt gebruikt om data van verschillende tabellen samen te voegen, het is in feite een combinatie van INSERT en UPDATE: MERGE INTO nieuwe_tabelnaam USING tabel_referentie ON voorwaarde WHEN matched THEN UPDATE SET attr1 = NULL, attr2 = 5 WHEN NOT matched THEN INSERT attr1, attr2 VALUES (NULL, 5). Tim Dhondt 15

16 Opmerking: na UPDATE en DELETE kan je telkens ook de WHERE-clause plaatsen, zoals bij de SELECT, om je wijzigingen te verfijnen Onderdelen van de DDL Dit zijn dus de CREATE-, ALTER-, DROP- en TRUNCATE-statements. CREATE Met CREATE kan je database objecten creëren, in het bijzonder dus tabellen: CREATE TABLE tabel ( attr1 INT, attr2 varchar(12) NOT NULL, PRIMARY KEY attr1 ) ALTER Bestaande database objecten worden met het ALTER-statement gewijzigd op verschillende manieren (in onderstaand voorbeeld door een attribuut toe te voegen): ALTER TABLE tabel ADD attr3 TIMESTAMP NOT NULL. DROP Met DROP verwijder je een object, en dit is over het algemeen finaal. Dit wil zeggen dat er dan geen rollback kan gedaan worden om de DROP ongedaan te maken (terwijl dit bij een DELETE wel kan): DROP TABLE tabel. TRUNCATE TRUNCATE verwijdert heel snel alle rijen in een tabel (zonder de tabel te verwijderen). Over het algemeen wil dit zeggen dat het COMMIT-statement uitgevoerd wordt, waardoor er dan ook geen rollback meer kan worden gedaan: TRUNCATE TABLE tabel Onderdelen van de DCL Hier zijn er twee heel belangrijke: GRANT en REVOKE. GRANT GRANT zorgt ervoor dat één of meerdere gebruikers rechten krijgen om een operatie of een set van operaties uit te voeren op een database object: GRANT SELECT, UPDATE ON tabel TO gebruiker1, gebruiker2. REVOKE REVOKE maakt wat GRANT deed ongedaan. REVOKE SELECT, UPDATE ON tabel TO gebruiker1, gebruiker2. Tim Dhondt 16

17 2.1 Geschiedenis van de term 2. NoSQL De term NoSQL 5 kwam voor het eerst naar boven in 1998 toen Carlo Strozzi een relationele open-source 6 database had gemaakt die geen gebruik maakte van de standaard SQL. Later zei hij dat de term NoSQL niet correct was en dat NoREL geschikter was, aangezien de huidige NoSQLbeweging zo goed als volledig is overgestapt naar het niet- relationeel model. NoSQL kwam pas tien jaar later weer boven water, in 2009, wanneer Last.fm een evenement wou organiseren over open-source distributed databases. De naam NoSQL verwees naar een groot aantal niet-relationele, distributed databases die vaak niet alles in huis hadden Figuur 2 Carlo Strozzi om de klassieke relationele database systemen te overtreffen. Dit was zo op verschillende vlakken: atomair, consistent, geïsoleerd en duurzaam (ACID: atomicity, consistency, isolation en durability). In 2011 begon men uiteindelijk aan de productie van UnQL (Unstructured Query Language), specificaties om een taal te gebruiken in combinatie met NoSQL-databases. 2.2 UnQL Het UnQL-project is tot leven gekomen met de modale gebruiker in gedachte. Er zijn namelijk verschillende soorten NoSQL databases: van key-value stores tot document-stores en zelfs graph-databases met elk hun eigen manier om de database te ondervragen. De community rond NoSQL wou een standaard om deze verschillende types op eenzelfde manier te kunnen aanspreken, dus kan je stellen dat ze van UnQL de SQL van NoSQL databases wilden maken Opbouw van queries Voor je kan queries schrijven voor een NoSQL database, moet je eerst weten hoe deze in grote lijnen in elkaar zit. Een NoSQL database ziet er qua structuur een beetje hetzelfde uit als een SQL database. Een database bevat 0 of meerdere collecties (in de praktijk minstens 1), dit is de equivalent van tabellen. Een collectie kan 0 of meerder documenten bevatten, 5 Zie verklarende woordenlijst 6 Zie verklarende woordenlijst Tim Dhondt 17

18 dit kan je dan vergelijken met de rijen uit een SQL database. En als laatste bevat een document los-gedefinieerde velden die in zekere zin te linken zijn aan de kolommen van een tabel. SELECT Dit statement doet exact hetzelfde als wat het zou doen in SQL, alleen voor documenten: data opvragen. De standaard query ziet er als volgt uit: SELECT FROM collectie, op deze manier wordt het hele document opgevraagd, terwijl dit kan verfijnd worden door tussen de SELECT en FROM iets te plaatsen in de trend van {veld1: collectie.naam, veld2: collectie.leeftijd}. Je hebt dan wel verfijnd om niet het hele document te verkrijgen, toch wordt heel de collectie teruggegeven. Dit kan opgelost worden met het WHERE-keyword: WHERE collectie.leeftijd >= 20. Het resultaat wordt weergegeven als JSON-tekst. INSERT De data die je bewaart, kan eender welke correcte JSON-tekst zijn. Dit kan dus een getal of tekst zijn, maar ook complexere objecten: INSERT INTO collectie VALUE { naam: test, leeftijd: 21}. Opmerking: hieraan kunnen ook nog de optionele keywords GROUP BY, HAVING, ORDER BY en LIMIT OFFSET toegevoegd worden. UPDATE Indien je velden opsomt die nog niet bestonden in het document, dan zullen deze velden worden toegevoegd, anders worden ze gewijzigd: UPDATE collectie SET collectie.veld1 = testnaam, collectie.veld3 = {studies: NMCT }. UPSERT Een upsert is een update van een document, tenzij deze nog niet bestond, dan gebeurt er een insert. Onderstaand voorbeeld is om de teller op een website te verhogen: UPDATE collectie SET collectie.aantal = collectie.aantal+1 WHERE collectie.pagina == /pagina/een ELSE INSERT {pagina: "/pagina/een", aantal: 1}. DELETE Natuurlijk is het ook belangrijk om data te kunnen verwijderen: hiervoor gebruiken we, net als in SQL, het DELETE-statement. DELETE FROM collectie WHERE collectie.naam = NMCT CREATE Normaal wordt, in een NoSQL database, een collectie automatisch aangemaakt wanneer je de eerste keer een document toevoegt aan een nog onbestaande collectie, maar dit wordt in UnQL nog niet ondersteund. Vandaar dat het CREATE-statement dus nog in de taal aanwezig is: CREATE COLLECTION nieuwe_collectie. Tim Dhondt 18

19 2.2.2 Hoe ver staat UnQL nu? Eén van de grootste problemen met UnQL is dat het probeert om een standaard te zijn voor elke database (wat goed is), maar dan ook voor elke functionaliteit van deze database (wat minder is). In plaats van te starten met de standaard te leggen voor de basissen van elke database, wilden de oprichters van het project rechtstreeks naar de top: alles of niets. Dit bleek dus in het begin van 2012, na een ontwikkeling van geen jaar, niks te worden. 2.3 Doel van niet-relationele databases NoSQL is eigenlijk tot stand gekomen omdat de computerwereld meer en meer veranderde (en nog steeds aan het veranderen is) naar een wereld van Big Users, Big Data en Cloud Computing Big Users Met Big Users bedoelt men dat het aantal gebruikers van een website of applicatie in de laatste jaren onnoemelijk is gestegen. Vroeger was een dagelijks quota van 1000 gebruikers normaal voor een applicatie of website, terwijl als je dit de dag van vandaag haalt als een groot internationaal bedrijf, dit eigenlijk niks waard is. Tegenwoordig zijn er meer dan twee miljard mensen geconnecteerd met het wereldwijde web. En de tijd die ze daar doorbrengen groeit een klein beetje elke dag, waardoor er meer en meer gelijktijdige gebruikers zijn. Je kan nooit perfect voorspellen hoeveel gebruikers een applicatie zal hebben, dus is het belangrijker om een flexibele carrosserie te hebben, die eventueel een explosie aan gebruikers wel aankan. Dit is dan ook onmiddellijk één van de redenen waarvoor men NoSQL gebruikt: veel gebruikers die gelijktijdig data opvragen of wijzigen. Het is van cruciaal belang dat er bij geen enkele van die gebruikers iets misloopt of, zeker vandaag, een operatie te traag verloopt, want dan bestaat de kans dat je die gebruiker niet meer terug ziet Big Data Tegenwoordig kunnen we op elk moment van de dag data aanmaken, data versturen en deze dan gaan opslaan, bv.: een foto trekken, een tweet versturen, een URL opslaan, Veel van deze data is door de gebruiker gegenereerde inhoud (UGC: User Generated Content) en is dus heel vaak niet- of bijna niet-gestructureerd, waardoor niet ieder type data dezelfde eigenschappen bevat. Een SQL database werkt per tabel met vaste kolommen, dus om al deze verschillende types data te ondersteunen, zouden er heel veel tabellen nodig zijn. Daarom stappen er veel mensen over naar NoSQL databases, want in plaats van tabellen hebben zij dus die collecties met documenten en los-gedefinieerde velden. Deze velden zijn door hun definitie optioneel en daarom kan een document in collectie A er helemaal anders uitzien dan een ander Tim Dhondt 19

20 document in diezelfde collectie. Maar over het algemeen worden documenten in dezelfde collectie geplaatst wanneer ze dezelfde globale betekenis hebben (maar niet altijd dezelfde velden). Om dus het voorbeeld te nemen van de UGC: om 5 verschillende types data te bewaren in een SQL-database is de kans groot dat je 5 verschillende tabellen nodig hebt (tenzij een paar types gelijkaardig zouden zijn), terwijl je deze in een NoSQL-database allemaal in één en dezelfde collectie kan plaatsen Cloud Computing Vroeger gebruikte men een twee-tier (lees: twee niveaus) client-server architectuur om een applicatie te bouwen. Dit wil zeggen dat er aan de ene kant een server stond die alle binnenkomende connecties opving en waarop ook de database draait. Deze connecties kwamen binnen van de client-applicaties en deze twee stonden dus rechtstreeks met elkaar in verbinding. Maar dit alles kon alleen met de server binnen dezelfde firewall als die van de clients en er stond ook een limiet op het aantal gelijktijdige gebruikers. Tegenwoordig is de drie-tier meer in trek: de server moet zich niet meer in dezelfde firewall netwerkomgeving bevinden als de gebruikers, sterker nog, deze draait in de cloud met daarbij verschillende servers om de gebruikers te ontvangen en nog eens verschillende servers voor de databases. Voor iedere zoveel gebruikers kan je in deze architectuur een bijkomende applicatie- en database-server opzetten. Hiervoor was het cruciaal dat de databases konden schalen in de breedte 7, en niet noodzakelijk in de hoogte 8. Dus om dan zomaar en database-server bij te plaatsen, was niet praktisch, men zocht dus een type database dat gemakkelijk schaalbaar was in de breedte. Dit is wat een NoSQL-database dan ook kan, ze zijn immers van in het begin gebouwd om distributed te zijn en gemakkelijk schaalbaar in de breedte. 2.4 Type NoSQL Databases Aangezien er zoveel verschillende soorten data kan bewaard worden in NoSQL databases, zijn de type databases ook heel erg uiteen gaan lopen, waarvan de drie populairste (bekendste) de key-value store, de document-store en de graph-database zijn. 7 Zie verklarende woordenlijst 8 Zie verklarende woordenlijst Tim Dhondt 20

21 2.4.1 Key-Value Store De key-value store is waarschijnlijk het simpelste type database onder de NoSQL databases. De meeste onder deze databases hebben een API die een variatie is op het volgende in Java: - void put(string key, byte[] data) - byte[] get(string key) - void remove(string key) Dit zijn dan ook de drie belangrijkste operaties die je nodig hebt in een database: insert (put), select (get) en delete (remove). Een key-value store bewaart een waarde d.m.v. een key. En zoals je reeds kon zien aan de methoden uit de API draait ook alles rond die key. Dit komt omdat de key uniek is en zo kan je dus ondubbelzinnig een object definiëren. De waarde op zich is een blob 9, hierdoor hoeft de database zich niet te bekommeren om wat er bewaard zal worden, de enige die hier rekening zal moeten mee houden is de applicatie die in contact staat met de database, want daar zal het parsen moet gebeuren. Op deze manier is het gemakkelijk om een key-value store te bouwen en zelfs nog gemakkelijker om de database achteraf te schalen Document Store Het belangrijkste concept achter de document store of document-georiënteerde database is natuurlijk dat van het document. Dit is in elke database wel anders, maar het basis principe blijft hetzelfde: het omvatten en encoderen van data of informatie d.m.v. een standaard formaat. De meest gebruikte hieronder zijn XML, JSON en BSON, maar ook binaire formaten als PDF en Microsoft Office documenten. Zoals al eerder vermeld zijn documenten gelijkaardig aan rijen in een SQL database, maar deze zijn niet verplicht om een bepaald model te volgen om te kunnen worden opgenomen in de database. Documenten kunnen op twee manier opgevraagd worden: aan de hand van de key (zoals bij een key-value store) en aan de hand van wat er in de data zit (zoals bij SQL databases wordt gedaan). Zoals bij een key-value store is de key die aan een document gelinkt is uniek en op deze manier kan elk document ondubbelzinnig worden opgeslagen. Waar we bij SQL de WHERE-clause kunnen gebruiken om data te specifiëren, kunnen we gelijkaardige dingen doen in NoSQL databases om hetzelfde resultaat te bekomen. Dit verschilt van DBMS tot DBMS, maar bijvoorbeeld in MongoDB kan je een JSON-object meegeven waar de data moet aan voldoen om deel te nemen aan de operatie. 9 Zie verklarende woordenlijst Tim Dhondt 21

22 2.4.3 Graph Database Graph databases gebruiken de grafen-structuur met knopen, lijnen en attributen om data op te slaan en weer te geven. In het algemeen kan je stellen dat iedere database die werkt met indexvrije verbindingen tussen entiteiten, een graph database is. De knopen in zo n structuur lijken heel erg veel op objecten uit object-georiënteerde programmeertalen en valt dus voor programmeurs over het algemeen vlot aan te leren. Figuur 3 Voorstelling van een simpele graaf Het hoofdonderdeel zijn dus de knopen die vergelijkbaar zijn met entiteit in een SQL database. Je kan dus meerdere knopen hebben van hetzelfde type. Iedere entiteit heeft attributen en dit is met knopen niet anders. Stel dat je een knoop van type Persoon hebt, kan je attributen hebben als naam, geboortedatum, geslacht, Als laatste heb je de lijnen en deze stellen de relatie voor tussen twee knopen of tussen een knoop en zijn attributen. De belangrijkste informatie van die relatie wordt dan ook in de lijn zelf bewaard. Als je graph databases vergelijkt met relationele databases zijn de eerste vaak sneller, omdat objecten direct aan elkaar gelinkt zijn. Dankzij deze eigenschap zijn er dus geen index opzoekingen meer nodig en kan alles vlotter opgehaald worden. Dit geldt echter enkel voor kleine tot middelgrote databases, wanneer de database groot is, zal een relationele database (door de index opzoekingen) sneller werk leveren. Nog een groot voordeel dat graph databases bieden, is het feit dat wanneer je een constantveranderend database-model hebt, dit voor graph databases geen enkel probleem is. Tim Dhondt 22

23 3. SQL vs. NoSQL 3.1 Transacties SQL databases bevatten standaard transacties zonder dat je zelf heel veel moet doen, terwijl NoSQL databases dit niet standaard ondersteunen. Je kan wel degelijk transacties verkrijgen, maar dan zal je heel veel handmatig werk moeten uitvoeren. Je zou dan kunnen zeggen dat SQL hier het voordeel heeft, want daar zijn er transacties aanwezig en bij NoSQL niet, maar zoals reeds eerder aangehaald, heeft niet iedere applicatie transacties nodig. Dit is bijvoorbeeld het geval bij de applicatie die ik heb helpen schrijven op mijn stage: om de tien minuten starten er een aantal jobs die een API uitlezen en de data opslaan in de database (om deze dan in de front-end te gaan weergeven). Figuur 4 Uitlezen JSON van API Stad Gent Na het inlezen van de JSON zal deze natuurlijk eerst nog moeten geparset worden zodat de correcte data wordt meegenomen naar de database. Tim Dhondt 23

24 Figuur 5 Geparsete data wordt weggeschreven naar database Indien je dit transactioneel opslaat en er loopt iets fout, gebeurt er helemaal niks en krijg je gaten in je data flow. Sla je de data op zonder transactie en er loopt iets mis, dan zal je enkel data missen van de onderdelen waar de fout zich voordeed en niet van alle data. 3.2 Schaalbaarheid Schaalbaarheid is waarschijnlijk de grootste factor waardoor er zo n verschil is tussen SQLen NoSQL-databases. Maar dit ligt niet alleen aan de schaalbaarheid zelf, aangezien beide types databases perfect te schalen zijn (op een andere manier weliswaar), maar aan vele onderliggende aspecten Locking Als we het Engelse woord lock vertalen, betekent dit slot. In het algemeen gesproken in de computer wereld is een lock een mechanisme die het aantal gelijktijdige gebruikers van bepaalde data beperkt. Als we spreken over gebruikers zijn dit de threads 10 van een programma of operating systeem. In deze context, als er over een lock gesproken wordt, zal dit een database-lock zijn. Een database-lock doet exact wat de definitie voorschrijft, maar in dit geval gaat het specifiek over een rij, meerdere rijen of soms zelfs hele tabellen. Locking is dus nodig aangezien de threads binnen eenzelfde proces dezelfde resources met elkaar delen, dus kunnen ze die gelijktijdig ook gaan opvragen of wijzigen. Om alles in goede banen te leiden zijn er twee soorten locks: de optimistic lock en de pessimistic lock. 10 Zie verklarende woordenlijst Tim Dhondt 24

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Informatie & Databases

Informatie & Databases Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

NHibernate als ORM oplossing

NHibernate als ORM oplossing NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een

Nadere informatie

Thinking of development

Thinking of development Thinking of development Databases Arjan Scherpenisse HKU / Miraclethings Agenda voor vandaag Opdracht tussenstand State diagram / Observer pattern Bret Victor Databases 2/42 Opdracht tussenstand Slides

Nadere informatie

Query SQL Boekje. Fredrik Hamer

Query SQL Boekje. Fredrik Hamer Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

Databases en SQL Foundation (DBSQLF.NL)

Databases en SQL Foundation (DBSQLF.NL) Databases en SQL Foundation (DBSQLF.NL) EXIN Hét exameninstituut voor ICT ers Janssoenborch - Hoog Catharijne Godebaldkwartier 365 3511 DT Utrecht Postbus 19147 3501 DC Utrecht Nederland T +31 30 234 48

Nadere informatie

Connect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB

Connect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB Connect Social Business Plan van Aanpak voor mijn stage bij ConnectSB Joey Kaan September 28, 2014 Inhoudsopgave 1 Achtergronden 1 2 Probleemstelling & Doelstelling 2 2.1 Leren Professioneel Functioneren..................

Nadere informatie

Connect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB

Connect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB Connect Social Business Plan van Aanpak voor mijn stage bij ConnectSB Joey Kaan September 21, 2014 Inhoudsopgave 1 Achtergronden 4 2 Probleemstelling & Doelstelling 5 2.1 Leren Professioneel Functioneren..................

Nadere informatie

Hoofdstuk: 1 Principes van databases

Hoofdstuk: 1 Principes van databases DBSQLF Databases en SQL Hoofdstuk: 1 Principes van databases aant Css: 4 732 blz 9 1.1 Doel ve database - om op het juiste moment op de juiste plaats de juiste gegevens beschikbaar te hebben richten we

Nadere informatie

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten. MySQL talk Trage website? Het optimaliseren van een bestaande website die een MySQL database heeft is niet altijd even makkelijk. Het probleem kan namelijk op veel verschillende plekken zitten: de database

Nadere informatie

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.

Nadere informatie

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank v Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank 1 Introductie: data en informatie 1.0 Wat leer je in dit hoofdstuk? 1.1 Verschil tussen gegevens en

Nadere informatie

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

12. Meer dan één tabel gebruiken en sub-queries

12. Meer dan één tabel gebruiken en sub-queries 12. Meer dan één tabel gebruiken en sub-queries 12.1. Inleiding In de vorige hoofdstukken heb je telkens queries uitgevoerd op één tabel. In de praktijk is het raadplegen van gegevens over het algemeen

Nadere informatie

1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model...

1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model... 1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model... 4 1.1.4. Wat is SQL?... 6 1.1.5. Verschillende categorieên

Nadere informatie

Les 11 : Basis SQL (deel2).

Les 11 : Basis SQL (deel2). Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit

Nadere informatie

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat Wat is een database? Een verzameling van georganiseerde data Een database bestaat uit applicaties, SQL en het DBMS Watis eendbms? EenDBMS

Nadere informatie

Technische nota AbiFire Rapporten maken via ODBC

Technische nota AbiFire Rapporten maken via ODBC Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern

Nadere informatie

EXIN Databases en SQL Foundation

EXIN Databases en SQL Foundation EXIN Databases en SQL Foundation Preparation Guide Editie 201608 Copyright 2016 EXIN All rights reserved. No part of this publication may be published, reproduced, copied or stored in a data processing

Nadere informatie

Connect Social Business

Connect Social Business Connect Social Business Joey Kaan September 2014 Inhoudsopgave 1 Achtergronden 4 2 Probleemstelling & Doelstelling 5 2.1 Leren Professioneel Functioneren.................. 5 2.2 Facebook API leren door

Nadere informatie

6. Het maken van een database

6. Het maken van een database 6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor

Nadere informatie

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64 Klas Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters JONGENS Number Integer MEISJES Number Integer Lessen Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters DOCCODE Short Text 3 Characters

Nadere informatie

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Op dit moment gebruiken

Nadere informatie

Les 2 Eenvoudige queries

Les 2 Eenvoudige queries Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten

Nadere informatie

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Studenten: Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters Inhoudsopgave

Nadere informatie

Secure Application Roles

Secure Application Roles Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam

Nadere informatie

Na bestudering van dit hoofdstuk moet je tot het onderstaande in staat zijn:

Na bestudering van dit hoofdstuk moet je tot het onderstaande in staat zijn: 15. Toegangsbeheer Tot nu toe heb je gewerkt met DML en DDL statements. Echter de DCL statements zijn nog niet aan bod geweest. DCL commando s gebruik je voor de beveiliging van je database. Wie mag wat

Nadere informatie

SQL SERVER 2008. Werking van Database Snapshots

SQL SERVER 2008. Werking van Database Snapshots KATHOLIEKE HOGESCHOOL KEMPEN GEEL SQL SERVER 2008 Werking van Database Snapshots ELINE STEYVERS BRAM DE SMEDT JOEY LEMMENS WOORD VOORAF Werking van Database Shapshots is bedoeld om mensen wegwijs te maken

Nadere informatie

1. * Database worden vaak gebruikt in Client-Server architectuur.

1. * Database worden vaak gebruikt in Client-Server architectuur. Naam Studentnummer Klas Herkansing [ ] ja, nee [ ], zoja uit welk jaar? kernbegrippen relationele database Minimaal drie van de vijf vragen goed beantwoorden. 1. * Database worden vaak gebruikt in Client-Server

Nadere informatie

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster 4. 4. Inhoud rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 4 Databank Terminologie, Navigeren, Importeren Tabellen Records/Velden manipuleren Queries (Vragen) [Ook in SQL] sorteren filter volgens

Nadere informatie

Introductie (relationele) databases

Introductie (relationele) databases Eerste les Introductie (relationele) databases Database en DBMS Een verzameling van gestructureerd opgeslagen gegevens Dus ook een kaartenbak is een database Van oudsher waren er hiërarchische en netwerkdatabases

Nadere informatie

Les 10 : Aanmaken van een database (deel2).

Les 10 : Aanmaken van een database (deel2). Les 10 : Aanmaken van een database (deel2). Wat is een database? Een centrale opslagruimte voor gegevens. Alle informatie wordt centraal opgeslagen en kan door iedereen geraadpleegd worden. Voordelen van

Nadere informatie

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................

Nadere informatie

Technische nota AbiFire5 Rapporten maken via ODBC

Technische nota AbiFire5 Rapporten maken via ODBC Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...

Nadere informatie

SQL datadefinitietaal

SQL datadefinitietaal SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen

Nadere informatie

Normaliseren versie 1.1

Normaliseren versie 1.1 Normaliseren versie 1.1 Datamodellering 27 1 Wat is normaliseren? Data organiseren in tabelvorm, zó dat: er minimale redundantie is update operaties (toevoegen, wijzigen, verwijderen) eenvoudig zijn uit

Nadere informatie

Inleiding... 3. 1 Databases en Data Base Management Systems... 3. 2 Tabellen... 3. 3 Wat is SQL?... 5

Inleiding... 3. 1 Databases en Data Base Management Systems... 3. 2 Tabellen... 3. 3 Wat is SQL?... 5 1 Inhoudsopgave. Inleiding.... 3 1 Databases en Data Base Management Systems.... 3 2 Tabellen.... 3 3 Wat is SQL?... 5 4 Gegevens opvragen (deel 1).... 5 4.1 Boolean operatoren.... 7 4.2 IN en BETWEEN

Nadere informatie

Connect Social Business

Connect Social Business Connect Social Business Plan van Aanpak Joey Kaan September 2014 Inhoudsopgave 1 Achtergronden 4 2 Probleemstelling & Doelstelling 5 2.1 Leren Professioneel Functioneren.................. 5 2.2 Facebook

Nadere informatie

Zonnepanelen Hoe krijg je de data op je website?

Zonnepanelen Hoe krijg je de data op je website? Zonnepanelen Hoe krijg je de data op je website? Beste website-bezoeker, Omdat ik al heel wat vragen kreeg over het gedeelte zonne-energie op mijn website, heb ik besloten om de werkwijze die ik gevolgd

Nadere informatie

SQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003

SQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003 SQL Aantekeningen 3 Maarten de Rijke mdr@science.uva.nl 22 mei 2003 Samenvatting In deze aflevering: het selecteren van tuples, operaties op strings, en aggregatie functies. Verder kijken we naar iets

Nadere informatie

Technisch Ontwerp W e b s i t e W O S I

Technisch Ontwerp W e b s i t e W O S I Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept

Nadere informatie

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2 v Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2 1 Introductie: data en informatie 3 1.0 Wat leer je in dit hoofdstuk? 3 1.1 Verschil tussen

Nadere informatie

[TOETS SQL INLEIDING]

[TOETS SQL INLEIDING] 2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10

Nadere informatie

Data Definition Language

Data Definition Language Data Definition Language We gaan hier dezelfde database gebruiken als in de vorige les. Nu gaan we deze echter maken met behulp van DDL gedeelte van SQL. Om in het SQL deel van Microsoft Access te komen

Nadere informatie

SQL & Datamodelleren

SQL & Datamodelleren SQL & Datamodelleren HVA-CMD-V1-datamodelleren Algemene handleiding bij het lesprogramma 2012-2013 Inhoud Inhoud... 2 Inleiding... 3 Leerdoelen:... 3 Plaats in het leerplan:... 3 Werkwijze:... 3 Lesstof:...

Nadere informatie

En hoe gaan ze dit allemaal terugvinden?

En hoe gaan ze dit allemaal terugvinden? En hoe gaan ze dit allemaal terugvinden? Taak 1.2.10 Thomas Muller Paul van der Linden MT1A Tutor: van Griensven Docent: van den Biggelaar Gemaakt door Thomas Muller en Paul van der Linden Pagina 1 van

Nadere informatie

DB architectuur.

DB architectuur. DB architectuur joost.vennekens@kuleuven.be DB - logisch perspectief - DB - fysisch perspectief - DBMS Fysische details van databank beheren Zodat gebruiker zich enkel om logische perspectief moet bekommeren

Nadere informatie

Les 15 : updaten van gegevens in de database (deel2).

Les 15 : updaten van gegevens in de database (deel2). Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken

Nadere informatie

Object Oriented Programming

Object Oriented Programming Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

Nadere informatie

DB architectuur. joost.vennekens@denayer.wenk.be

DB architectuur. joost.vennekens@denayer.wenk.be DB architectuur joost.vennekens@denayer.wenk.be DB - logisch perspectief - DB - fysisch perspectief - DBMS Fysische details van databank beheren Zodat gebruiker zich enkel om logische perspectief moet

Nadere informatie

Access voor beginners - hoofdstuk 25

Access voor beginners - hoofdstuk 25 Access voor beginners - hoofdstuk 25 Handleiding van Auteur: OctaFish Oktober 2014 Werken met Klassemodules Tot nu toe heb ik in de cursus Access veel gewerkt met formulieren, en met procedures en functies.

Nadere informatie

Datamodelleren en databases 2011

Datamodelleren en databases 2011 Datamodelleren en databases 21 Capita selecta 1 In dit college Modelleren Normaliseren Functionele afhankelijkheid 1-3N M:N-relaties, associatieve entiteittypes, ternaire relaties Weak entiteittypes Multivalued

Nadere informatie

Software Design Document

Software Design Document Software Design Document Mathieu Reymond, Arno Moonens December 2014 Inhoudsopgave 1 Versiegeschiedenis 2 2 Definities 3 3 Introductie 4 3.1 Doel en Scope............................. 4 4 Logica 5 4.1

Nadere informatie

EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen

EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen Inleiding In het boek Databases & SQL wordt beschreven hoe opdrachten in de programmeertaal SQL gebruikt worden om de inhoud van een relationele database te raadplegen en te bewerken. SQL wordt daarbij

Nadere informatie

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0 Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0 Behoudens uitzondering door de wet gesteld, mag zonder schriftelijke toestemming van de rechthebbende op het auteursrecht van

Nadere informatie

Tinus Plotseling 29-12-2002. MySQL

Tinus Plotseling 29-12-2002. MySQL Tinus Plotseling 29-12-2002 MySQL Inhoudsopgave Inleiding... 3 MySQL Geschiedenis... 3 MySQL Toepassingen... 3 MySQL Voordelen... 4 MySQL Nadelen... 4 MySQL bij ASCI... 4 PostgreSQL... 5 ORACLE... 6 MS

Nadere informatie

Beveiligingsbeleid. Online platform Perflectie

Beveiligingsbeleid. Online platform Perflectie Beveiligingsbeleid Online platform Perflectie 2018 Beveiligingsbeleid Perflectie Versiebeheer Naam Functie Datum Versie Dimitri Tholen Software Architect 12 december 2014 1.0 Dimitri Tholen Software Architect

Nadere informatie

Het omzetten van een ER-diagram naar SQL

Het omzetten van een ER-diagram naar SQL Het omzetten van een ER-diagram naar SQL Huub de Beer Eindhoven, 4 juni 2011 Omzetting ER-diagram naar SQL in twee stappen 1: ER-Diagram relationeel model Onderwerp van hoofdstuk 3 Entiteittype relatie,

Nadere informatie

Een introductie tot gegevensbanken

Een introductie tot gegevensbanken Een introductie tot gegevensbanken Kris Luyten Tom Van Laerhoven Expertisecentrum Digitale Media Limburgs Universitair Centrum Wetenschapsdagen 2002 1. Overzicht Wat zijn gegevensbanken? Bestanden versus

Nadere informatie

Inhoudsopgave. Theorie... 14 Praktijk... 14. Gegevens uit Database halen... 13 DML commando s... 14

Inhoudsopgave. Theorie... 14 Praktijk... 14. Gegevens uit Database halen... 13 DML commando s... 14 SQL 2013 Inhoudsopgave Inhoudsopgave... 2 SQL begrippen... 3 Maken Database... 4 Rechten voor een Database... 4 User aanmaken... 5 Rol Toekennen aan een user... 5 Backup... 6 Theorie... 6 In SQL... 6 SQL

Nadere informatie

Relationele Databases 2002/2003

Relationele Databases 2002/2003 1 Relationele Databases 2002/2003 Hoorcollege 4 8 mei 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 Plan voor Vandaag Praktische dingen 3.1, 3.2, 3.3, 3.4, 3.5. SQL Aantekeningen 2 Tabellen. Theorie

Nadere informatie

1. Databanken. Wat is een databank? Verschillende opslagmethodes

1. Databanken. Wat is een databank? Verschillende opslagmethodes 1. Databanken Wat is een databank? Verschillende opslagmethodes Tekst bestanden Spreadsheet Relationele gegevensbanken Relationeel model De gestandaardiseerde opvraagtaal SQL Beheer van een mysql databank

Nadere informatie

Relationele Databases 2002/2003

Relationele Databases 2002/2003 Relationele Databases 2002/2003 Hoorcollege 4 8 mei 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 1 Plan voor Vandaag Praktische dingen Huiswerk 3.1, 3.2, 3.3, 3.4, 3.5. SQL Aantekeningen 2 Tabellen.

Nadere informatie

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren Handleiding om te beginnen met mysql WorkBench. In twee stappen 0. WorkBench verbinden met mysql 1. een hallo

Nadere informatie

Excel Controller. Handleiding Excel Controller Wizard

Excel Controller. Handleiding Excel Controller Wizard Excel Controller Handleiding Excel Controller Wizard 1 Inhoud Inleiding... 3 Eigen SQL... 3 Stap 1 Eigen SQL... 3 Stap 2 Testen SQL... 8 Stap 3 Wizard... 11 Stap 4 Parameters... 13 Voorbeeld Eigen Parameter...

Nadere informatie

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat: Training Trainingscode Duur Gepubliceerd Taal Type Leermethode Kosten SF2015V8 4 dagen 02/02/2015 Nederlands & Engels Developer, basis Invidueel & klassikaal Op aanvraag Deze training richt zich op het

Nadere informatie

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn: 5. De oefendatabase 5.1. Inleiding In de volgende hoofdstukken ga je oefenen / werken met SQL. Om te kunnen oefenen heb je natuurlijk wel een database nodig. In dit hoofdstuk wordt besproken hoe je deze

Nadere informatie

DataFlex 19.0 SQL Server

DataFlex 19.0 SQL Server Connections to SQL Server 1 Agenda Connecties Aanpassingen in applicaties 2 Connecties Kort overzicht 3 SQL manier Connectie maken met een server (login) Connectie stelt je in staat om tabellen in een

Nadere informatie

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1 relationele databases 9.1 hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit Als voorbeeld nemen we een eenvoudige database, bestaande uit twee tabellen. De

Nadere informatie

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers Verslag SE Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers In dit verslag zullen wij een beschrijving geven, over welke

Nadere informatie

Planbord installatie instructies

Planbord installatie instructies Planbord installatie instructies Uit Comprise Wiki Inhoud 1 Basis installatie 1.1 Installeren 1.1.1 Microsoft Data Access Components 1.2 De eerste keer starten 2 Veelgestelde vragen 2.1 "Network resource

Nadere informatie

Gimme Five! Op weg naar TYPO3 5.0 'Phoenix'

Gimme Five! Op weg naar TYPO3 5.0 'Phoenix' Gimme Five! Op weg naar TYPO3 5.0 'Phoenix' Waarom TYPO3 5.0? Waarom TYPO3 5.0? Enkele redenen: Waarom TYPO3 5.0? Enkele redenen: Complexiteit De TYPO3 Core architectuur heeft zijn limiet bereikt en is

Nadere informatie

Waarom Cloud? Waarom nu? Marc Gruben April 2015

Waarom Cloud? Waarom nu? Marc Gruben April 2015 Waarom Cloud? Waarom nu? Marc Gruben April 2015 Waarom Daarom Cloud? Cloud! Waarom Daarom nu? nu! Marc Gruben April 2015 Wie ben ik? Informatie analist Project/development manager Developer/architect Wie

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren November 2014 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 1 Inhoudstafel 1 Introductie 3 1.1

Nadere informatie

DATAMODELLERING ER DIAGRAM

DATAMODELLERING ER DIAGRAM DATAMODELLERING ER DIAGRAM Inleiding In dit whitepaper wordt de datamodelleervorm ER diagram beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil je een beeld krijgen

Nadere informatie

Oracle-database creëren

Oracle-database creëren Datum: maart 2014 Versie: 3.1 2014 Perceptive Software. Alle rechten voorbehouden. Perceptive Software is een gedeponeerd handelsmerk van Lexmark International Technology S.A. in de VS en andere landen.

Nadere informatie

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho.

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho. Automatisering voor Financiële Dienstverleners Werken met Queries en Merge Documenten For more information visit our website at www.pyrrho.com Date: Document Nr: 30 maart, 2007 UBizzMerge, Versie 4.0 Status:

Nadere informatie

Leerjaar 1/2 ICT-Academie. Niveau 4. Applicatie ontwikkeling

Leerjaar 1/2 ICT-Academie. Niveau 4. Applicatie ontwikkeling Databases SQL Leerjaar 1/2 ICT-Academie Niveau 4 Applicatie ontwikkeling Auteur: R. Meijerink Datum: Januari 2013 0. Inleiding Databases / SQL In deze lessen wordt je geleerd databases te bouwen in SQL-code.

Nadere informatie

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% Naam project Lost And Found Animals Url Lokaal gehost Groepsleden Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% 1. Beveiliging in de toepassing Naam gebruiker Wachtwoord

Nadere informatie

Miniles gegevensbanken bevragen met SQL

Miniles gegevensbanken bevragen met SQL Miniles gegevensbanken bevragen met SQL In deze miniles gaat het over gegevensbanken of databases. Dit zijn bestanden waarin gegevens kunnen worden opgeslagen. Het is dan van belang dat je op een eenvoudige

Nadere informatie

Dataconversie met Oracle Spatial

Dataconversie met Oracle Spatial Realworld klantendag 19 september 2013 Voorstellen 1 2 Computer Science & Engineering (TU/e) 3 Realworld Systems 4 Datamigraties Alliander Stedin Agenda 1 Architectuur Inleiding Ontwerp migratie 2 Rapportage

Nadere informatie

Beheer van databanken

Beheer van databanken Beheer van databanken Wim De Proost Jan Jochems Pieter Van den Akkerveken Departement Handelswetenschappen en Bedrijfskunde Bachelor Informatica 3 de jaar Academiejaar 2011-2012 2 Inhoud INLEIDING... 3

Nadere informatie

Titel Uw processen transparant met SAP Process Mining.

Titel Uw processen transparant met SAP Process Mining. 1 Titel Uw processen transparant met SAP Process Mining. Introductie SAP Process Mining powered by Celonis is een nieuwe component van SAP op HANA. Process Mining gaat niet uit van vooraf gedefinieerde

Nadere informatie

Gebruik van verschilbestanden

Gebruik van verschilbestanden Gebruik van verschilbestanden Inhoud Gebruik van verschilbestanden 1 Inhoud 2 1 Verschilbestanden 3 1.1 Inleiding 3 1.2 Bestanden en identificatoren 3 1.3 Onderzoeken waar de actuele versie verschilt van

Nadere informatie

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC Aantekeningen IRDB Vak: IRDB > Infrma1ca Rela1nele DataBase Onderstaande database scripts zijn gebaseerd p PstgreSQL. Standaarden Schrijf SQL wrden al1jd in hfdlefers, k al werkt het met kleine lefers;

Nadere informatie

Versieperikelen. Bijlage C

Versieperikelen. Bijlage C Bijlage C Versieperikelen In dit boek beschrijven we PL/SQL aan de hand van Oracle versie 11g. Alle eigenschappen die in dit boek behandeld worden, zijn in deze versie van Oracle (en in nog te verschijnen

Nadere informatie

Client Applicaties (Browser+Desktop) http/https. Apache Webserver. http proxy. WMS WFS Adm SLD Tomcat. Tomcat. GeoServer. PostGIS

Client Applicaties (Browser+Desktop) http/https. Apache Webserver. http proxy. WMS WFS Adm SLD Tomcat. Tomcat. GeoServer. PostGIS WMS voor Kadastrale kaart Limburg GEORZ-lab Datum: 17 juli 2009 Auteur: GEORZ-lab, Just van den Broecke Versie: 2 Contact: Ebrahim Hemmatnia (Adviseur PPI GEO, Kadaster), tel. 088 183 22 16. Inleiding

Nadere informatie

ProjectHeatmap. Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar

ProjectHeatmap. Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar ProjectHeatmap Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar 1 Inhoudsopgave Inleiding...3 Gheat...4 Info...4 Voordelen...4 Nadelen...4 Google Fusion Tables...5 Info...5 Voordelen...5 Nadelen...5 OLHeatmap...6

Nadere informatie

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen: Transit Herkent u het? Steeds dezelfde uitdagingen in migratieprojecten; meerdere variabelen, in verschillende stadia en in een blijvend veranderende omgeving, managen. Grote hoeveelheden gegevens over

Nadere informatie

11. Het selecteren van gegevens deel II

11. Het selecteren van gegevens deel II 11. Het selecteren van gegevens deel II 11.1. Inleiding In hoofdstuk 7 heb je kennis gemaakt met het statement Select. In dit hoofdstuk ga je wat dieper in op het statement. Je gaat sorteren / groeperen

Nadere informatie

SQL & Relationele datamodellen in interactieve media

SQL & Relationele datamodellen in interactieve media SQL & Relationele datamodellen in interactieve media HVA-CMD-V1-datamodelleren oefeningen deel 1: SQL 2012-2013 Inhoud Inhoud... 2 Selecties uit een enkelvoudige datatabel... 3 Selecties uit een meerdere

Nadere informatie

Relationele Databases 2002/2003

Relationele Databases 2002/2003 1 Relationele Databases 2002/2003 Hoorcollege 3 24 april 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 Plan voor Vandaag Praktische dingen 2.1, 2.3, 2.6 (alleen voor 2.2 en 2.3), 2.9, 2.10, 2.11,

Nadere informatie

Beveiligingsbeleid Perflectie. Architectuur & Procedures

Beveiligingsbeleid Perflectie. Architectuur & Procedures Beveiligingsbeleid Perflectie Architectuur & Procedures 30 november 2015 Versiebeheer Naam Functie Datum Versie Dimitri Tholen Software Architect 12 december 2014 0.1 Dimitri Tholen Software Architect

Nadere informatie

9. Het wijzigen van gegevens

9. Het wijzigen van gegevens 9. Het wijzigen van gegevens Voor het wijzigen van gegevens wordt het DML-statement UPDATE gebruikt. Om dit statement correct te kunnen gebruiken moeten enkele zaken bekend zijn: In welke tabel moeten

Nadere informatie