Semi-gestructureerde data heeft weliswaar een zekere mate van organisatie, maar past niet netjes in tabellen. JSON, XML, YAML en e-mailheaders vallen allemaal in deze categorie. De data heeft tags of sleutels die de structuur beschrijven, maar die structuur kan per record verschillen. Een JSON-object kan bijvoorbeeld een veld hebben dat een ander object mist. Elementen kunnen in een XML-document anders genest zijn dan in een ander document. Het schema is flexibel, ook wel schema-on-read genoemd. Je past de structuur toe wanneer je de data opvraagt, niet wanneer je deze opslaat.
Semi-gestructureerde data komt veel voor in moderne applicaties. API's retourneren JSON. Logbestanden gebruiken sleutel-waardeparen. Configuratiebestanden gebruiken YAML. NoSQL-documentdatabases slaan JSON van nature op. Deze flexibiliteit is nuttig wanneer het datamodel evolueert of verandert. Het vormt echter ook een uitdaging voor analyse. Het opvragen van semi-gestructureerde data vereist andere tools en technieken dan het opvragen van tabellen. Je moet door geneste structuren navigeren, ontbrekende velden afhandelen en arrays platmaken. SQL-engines hebben zich hieraan aangepast. PostgreSQL, MySQL en Snowflake ondersteunen allemaal JSON-functies. Je kunt query's uitvoeren binnen JSON-documenten zonder ze eerst te extraheren. Door de vervaging van de grenzen tussen gestructureerde en semi-gestructureerde data wordt het onderscheid minder relevant. De belangrijke vraag is niet of data semi-gestructureerd is, maar of je er effectief query's op kunt uitvoeren.
Semi-gestructureerde formaten
- JSON — sleutel-waardeparen, arrays, geneste objecten
- XML — getagde elementen, hiërarchisch
- YAML — een door mensen leesbare configuratie
- CSV — gescheiden door scheidingstekens, maar geen type-informatie
- Logbestanden — gebeurtenissen met tijdstempels en variabele velden
Semi-gestructureerde data is het middengebied. Het heeft voldoende structuur om bruikbaar te zijn en voldoende flexibiliteit om rommelig te zijn.
Comments (2)
Leave a comment