DIKW

Uitleg belangrijkste (technische) programma's DIKW

In deze lijst worden de belangrijkste (technische) programma’s rondom business intelligence, data warehousing en kunstmatige intelligentie (AI) uitgelegd. Check deze pagina regelmatig wat deze wordt regelmatig geupdate.

Python

Docker

Apache Kafka en Apache Flink

Elasticsearch en Kibana

REST API

Neo4J en Graph databases

Machine learing


Python

Python is de meest populaire programmeertaal op dit moment. Toen bedrijven 10-15 jaar geleden er achter kwamen dat er waarde uit data te halen viel, zochten veel mensen een makkelijke programmeertaal om snel succes mee te boeken. Python ging op dat moment ook op hoog tempo mee met die ontwikkelingen. Een groot pluspunt is dat Python als het ware een app store heeft voor programmeer bibliotheken. Waar je bij andere talen eerst zo'n library moest downloaden, uitpakken en in de juiste directory moest zetten is het bij Python een kwestie van een commando. Wil je een krachtige library voor data analyse? pip install pandas. Wil je een library met veel wiskundige tools? pip install numpy. Wil je tooling voor data science? pip install scipy. 

Docker

Als je vroeger als bedrijf een applicatie ging bouwen, dan waren grote afdelingen bezig om allerlei onderdelen te ontwikkelen. En al dat ontwikkelde spul moest dan bij elkaar gaan draaien op een server en later op een virtuele machine. Op zo'n virtuele machine moest je dan een operating system installeren (Linux of Windows) en de nodige software en programmeerbibliotheken. In een weekend, waarin heel veel mensen opgetrommeld werden, moest dat dan uitgerold gaan worden en ging het daarna hopelijk werken. Want soms was niet alles bij elkaar getest. En dan moest je hopen dat het daarna ging werken. En performen.

Met Docker is dat anders geworden. Met Docker heeft men beoogd te doen wat de zeecontainer heeft gedaan voor het vrachtvervoer: standaardisatie. Als je iets met Docker runt, runt het dan ook in een zogeheten "container". In die container installeer je geen operating system. Dat is in de laag eronder al gedaan. In die container draait dus alleen alles wat jouw deel van de applicatie nodig heeft: een bepaalde versie van Python, bepaalde libraries die voor jouw deel van de applicatie nodig is, en je Python code. En dat kan allemaal omdat applicaties ook anders ontwikkeld worden. Er wordt niet langer in een opleverweekend een grote applicatie opgeleverd, de applicatie wordt onderverdeeld in zogenaamde "microservices." Nog een groot voordeel van Docker: het heeft een soort app store. Die heet Docker Hub. Een groot voordeel van Docker is ook dat je "Infrastructure as Code" kunt uitrollen. Moest je vroeger met de hand dingetjes installeren op virtuele machines, op Docker containers doe je dat niet. Je maakt een zogenaamde "Dockerfile" waarin beschreven staat hoe van jouw image (een soort blauwdruk) een container gerund moet worden. Wil je wat veranderen, dan rol je een nieuwe Dockerfile uit, waarmee je een nieuw Docker image bouwt. Dat is dan de volgende versie van jouw deel van de applicatie. Die Dockerfile is de code waarmee je als het ware je Infrastructuur opbouwt. Je kunt er dus ook versiebeheer op doen. Probeer dat maar eens met het gepiel met die virtuele machines waar iedereen in zat te werken.

Apache Kafka en Apache Flink

Kafka en Flink zijn open source streaming software. Je hebt klantdata in de ene database en verkoopgegevens in een data lake en van een partij buiten je bedrijf krijg je nog aanvullende gegevens. Maar ergens wil je dat die gegevens bij elkaar komen. Hoe zorg je dat die data bij elkaar komt? Streaming software. Streaming software is overigens een mogelijke oplossing. Maar in veel gevallen wordt een product als Kafka ingezet. Met Kafka kun je je data in de vorm van messages versturen (publishen) van machine 1 naar een centraal "topic". Een proces op een machine 2 kan dat topic uitlezen (consumen). Met Kafka kan ervoor gezorgd worden dat deze stromen redundant worden uitgevoerd (dus doordat je zaken dubbel of meer uitvoert, is de kans kleiner dat je data kwijt raakt).

Apache Flink is ook een streaming pakket, maar je kunt het ook voor batch gewijze doorvoer van data gebruiken. Bij zowel Kafka als Flink kun je data analyseren terwijl het naar je toe stroomt. In beide gevallen kun je bijvoorbeeld SQL queries runnen tegen de binnenkomende data.

Elasticsearch en Kibana

Pakweg 10 jaar geleden kwamen zogenaamde NoSQL databases steeds meer in zwang. Niet omdat ze "no SQL" konden. NoSQL stond meer voor Not Only SQL. Achter de term NoSQL gaan totaal verschillende typen databases verborgen die heel anders werken. Wat ze gemeen hebben, is dat ze niet werken zoals de relationele databases (SQL Server, MySQL, Oracle, PostgreSQL) die iedereen daarvoor gewend was. Wat vooral mensen niet prettig aan relationele databases vonden, was dat je van te voren eerst je data model moest uitspellen, voordat je eindelijk eens wat data kon gaan opslaan. Tegen de tijd dat het zover was, was de situatie al weer gewijzigd. Tal van bedrijven kwamen daarom met nieuwe oplossingen. Een van die bedrijven, was Elastic. Elasticsearch biedt die flexibiliteit, maar ook een hoge performance. Dat maakte Elasticsearch een populaire database. Elasticsearch is onderdeel van de zogenaamde ELK stack: Elasticsearch, Logstash en Kibana. Logstash is een tool om data in Elasticsearch te brengen (een beetje wat Kafka ook voor je had kunnen doen, maar dan anders). En Kibana is dashboarding/rapportage software, waarmee je snel data inzichtelijk kunt maken. Kijk hier naar een uitleg van Elasticsearch: https://youtu.be/4UilfVKf_cA Dat was voor dat je er SQL tegen kon praten en je dus het eigen taaltje eerst moest leren, voor dat je er mee kon werken.

REST API

REST APIs zijn een soort websites zonder opmaak. Het enige waar ze voor dienen, is de uitwisseling van data. Voor de CDEP cursus heb ik een paar voorbeelden opgezocht. Zo is de Star Wars API een API waarmee je gegevens over Star Wars films kunt uitlezen. Zie hier bijvoorbeeld de Star Wars people API, met personages in Star Wars films: https://swapi.dev/api/people/ Wat je in je browser ziet, is data in JSON formaat. Deze data is heel makkelijk te gebruiken in bijvoorbeeld Python.

Neo4J en Graph databases

Graph databases zijn een speciaal type databases gericht op relaties tussen data onderling. Een tabel in een gewone relationele database doet denken aan een lijstje in Excel met rijen en kolommen. Dat vergt wel een heel andere opzet van je data. Je beschrijft wat de relaties tussen je data is. Bijvoorbeeld in een boekwinkel: Het boek "Lord of the Rings" heeft een relatie met de schrijver Tolkien. Maar ook een relatie met het personage Frodo en Frodo heeft een relatie met het personage Sam en met het personage Gandalf. En "Lord of the Rings" heeft een relatie dat het o.a. geïnspireerd is door het verhaal van Beowulf. Dat is een totaal andere manier van denken. Kijk hier naar een uitleg van Neo4J: https://youtu.be/JhECZExouFQ.

Bij DIKW zit kennis delen in het DNA. Omdat we al meer dan 20 jaar in het vakgebied actief zijn, hebben we veel ervaring opgedaan in hoe we de dingen aan moeten pakken. Maar nog belangrijker, hoe we ze niet moeten aanpakken. Deze ervaring bundelen we in modellen, methodieken, blogs, evenementen en opleidingen die we graag delen,  zodat onze klanten daar optimaal gebruik van kunnen maken.