Container-konceptet

Om att bygga en arkitektur för förändring

Container-konceptet är en idé om hur ett program kan förhålla sig till sin data och sin omgivning.

Ett stort problem som jag ser det, är att applikationer byggs som om datamodellen aldrig skulle ändras men det är bara att titta på vilket system som helst, så kommer de alla att förändras över tid. Ett problem med det vanliga sättet att hantera data gör att förändringar blir omfattande och det skapar svåra synkroniseringsproblem när flera ändringar måste synkroniseras samtidigt samt att de ökar behovet av test markant.

Konceptet kan användas för att förenkla en del av ett program eller kan implementeras komplett. Skall man börja använda den, så enklast och med mest nytta gör den för att hantera integrationer med andra system, ex för beskrivning av tjänster 

I slutet av 80-talet skulle jag ta fram en databasdesign för att hantera en mycket komplex datamodell för att beskriva ett media i ett bibliotek. För hälften av alla media i ett vanligt folkbibliotek (romaner) så är det rätt enkelt, att beskriva en roman med författare, titel, utgivning mm är inte så svårt. Komplexiteten ligger hos den andra halvan, som kan vara av så olika typer såsom kartor, skivor eller multipla verk som lexikon.

Datamodellen för att beskriva ett media blir väldigt komplex och för att kunna beskriva alla typer som finns på ett bibliotek behövs ca 1000 olika fält, där varje fält bör kunna ha obegränsat med längd, existera i oändligt antal. Dessutom är teckenuppsättningen ca 1000 olika tecken. Vi skulle stötta inte bara alla de latinska språken utan även grekiska, kyrilliska, matematiska formler mm. Dessutom skulle ett bibliotek kunna enkelt lägga till egna fält.

Relationsdatabaser är inte bra på att beskriva denna typ av komplexa data  så jag byggde en egen databasmotor som idag skulle kallas för NoSQL Document-oriented database. Erfarenheterna av att hantera data på detta sätt blev grunden till Container-konceptet

Biblioteksapplikationens användargränssnitt byggdes i Cobol och språket har många förtjänster men den klarar inte av att hantera komplexa datastrukturer. För att hantera det byggde vi hashtables i C plus en massa funktionalitet för att hantera dem. Cobol-programmet hanterade dem som en referens i en variabel som den flyttade runt. Det visade sig vara ett fantastiskt sätt och blev en av anledningarna till att vi på få man kunde leverera lätt-testade och väl fungerande system till många kunder

Det är mycket glädjande att NoSQL databaserna kommer på bred front och att de börjar användas. Jag är mycket förtjust i JSON och REST som är ett utmärkt sätt att hantera containers på vad gäller integrationer och Hashtables internt i applikationen. Många börjar idag att bygga sina applikationer som en uppsättning tjänster istället för en stor monolit. Här kan Container-konceptet göra stor skillnad.

Två dokument finns att läsa

Jag hoppas att Du skall finna mitt koncept intressant och det skulle glädja mig stort om Du har frågor, vill kommentera eller komplettera min text och det gör Du enklast med att skicka mig ett mail via sidan Kontakt

Läs gärna de övriga sidorna om min IT-historia