HBO/WO Afstudeeropdracht: automatic garbage collection

Ben je hbo’er of WO’er en zoek je een boeiende afstudeeropdracht? Wij hebben de volgende casus voor je klaar staan:

Garbage Collection Sequential Store

Bij Seecr is een zeer efficiënte manier ontwikkeld om een kleine hoeveelheid gerelateerde data efficiënt op te slaan. Deze opslag moet nu met de hand worden ontdaan van garbage. Dit proces moet worden geautomatiseerd.

Random access

De opslag van zeer kleine eenheden van informatie gaat in de vorm van Triples. Het opslaan van deze informatie in databases zoals Triple Stores of Relationele Databases is geoptimaliseerd voor random access. Dit vertaalt zich in de architectuur van de software, maar ook in de eisen die gesteld worden aan de onderliggende hardware. Er moet vaak veel geheugen beschikbaar zijn voor caching en indexen en dergelijke, en de toegang tot harde schijven moet een zeer lage latency hebben, het liefst als SSD.

Sequential

In veel gevallen is de toegang van de data echter niet random, maar sequentieel van aard. Dit komt omdat in de praktijk vaak gerelateerde gegevens worden opgevraagd, bijvoorbeeld om informatie omtrent een specifiek voorwerp of onderwerp weer te geven in een App of website. Het gaat dan ook al snel om honderden tot duizenden gerelateerde triples. Traditionele Triple Stores en Relationele Databases zijn hier slecht in doordat, eenvoudig gezegd, deze honderden tot duizenden triples allemaal als random access behandeld worden.

Ook is de overhead van de opslag vaak zeer groot: er wordt meer data opgeslagen dan dat er feitelijk informatie in zit. Een overhead van honderden procenten is niet vreemd.

Onze oplossing

Seecr heeft een storage ontwikkeld die zeer weinig geheugen nodig heeft en zeer lage eisen stelt aan de harde schijven. Tegelijk is de through-put in triples per seconde zeer hoog (>1.000.000/s) en ook de netto ingenomen ruimte op de harde schijf is zeer klein doordat de overhead zeer laag is.

Deze store noemen we de Sequential Store omdat hij is geoptimaliseerd voor sequentieel opslag en toegang.

De stores die we in gebruik hebben, bevatten honderden miljoenen triples. Een cruciale optimalisatie is het read-only behandelen van data en het slim bij elkaar opslaan van gerelateerde informatie. Dit betekent dat als er data moet worden verwijderd, dit niet fysiek, direct, gebeurt, maar alleen wordt geregistreerd. Daadwerkelijke verwijdering vindt pas plaats bij een (handmatige) garbage collect. Het is onze wens dat dit automatisch gaat gebeuren.

Hoe automatiseren?

De volgende uitdagingen komen hierbij kijken:

  1. De data is gecomprimeerd en heeft geen vaste lengte.
  2. De benodigde geheugenruimte is beperkt, niet de hele store past in het geheugen.
  3. De benodigde schijfruimte is beperkt en kan dynamisch variëren.
  4. Alle processen lopen door, en de indexen moeten correct blijven.

Voorlopige ideeën over hoe dit aan te pakken:

  1. Verdeel de sequential store in meerdere kleine read-only delen.
  2. Gebruik bijvoorbeeld merge sort om deze delen bijeen te voegen.
  3. Tijdens 2 verdwijnt de garbage en ontstaat een nieuw read-only deel.
  4. Voer dit periodiek uit, of na een trigger die een percentage garbage berekent.

Voor wie?

Deze boeiende stage of afstudeeropdracht is bedoeld voor laatstejaars studenten informatica HBO of WO met een sterke voorkeur voor geavanceerde datastructuren en kennis van de performancekarakteristieken van hardware.

Als IT-stagiair werk je samen met collega’s,  scrum-based, aan userstories. Je denkt mee over het ontwerp en de implementatie van oplossingen, die baanbrekend kunnen zijn voor de dienstverlening van onze klanten.

Wat kenmerkt ons

Via onze maandelijkse retrospectives verbeteren we continu onze processen en onze interactie met elkaar en onze omgeving continu. Onze werkdag is ingedeeld in vier blokken, ieder voorafgegaan door een stand-up. Zo houden we elkaar scherp, zijn we bij elkaar betrokken, en zijn we wendbaarder door de dag heen. Iedereen denkt met elkaar mee.

Je zult begeleid worden door onze senior developers op WO- en hbo-niveau. Met hen kun je de diepte in over de uitdagingen die je tegenkomt.

Ervaring en skills die je nodig hebt

Dit ben jij:

  • Je volgt een hbo- of universitaire ICT-opleiding (eindstage).
  • Je bent integer en respectvol.
  • Je kunt in teamverband én zelfstandig werken.

Als je een goed idee hebt,  krijg je de tijd voor research en toepassing binnen projecten.

Wat wij bieden

  • Je werkt mee aan IT-projecten bij de grootste klanten van Seecr.
  • Het is een uitdagende stage binnen een professionele, platte organisatie. Collegialiteit en samenwerken bepalen de sfeer. Iedereen denkt graag met je mee.  We staan open voor nieuwe ideeën.
  • We hebben een stagevergoeding en reiskostenvergoeding; een (h)eerlijke lunch met tweemaal per week versgebakken brood uit eigen oven, gekookte eitjes en biologisch broodbeleg en zuivel van onze Streekleverancier.  Er is altijd vers sinaasappelsap en fruit op kantoor. De eerlijke koffie uit ons Barista apparaat, komt hier vandaan. We hebben verrassende uitjes en ontmoeten graag inspirerende mensen op congressen zoals de XP Days en TEDx-bijeenkomsten.

Waar je gaat werken

Ons ruime kantoor ligt hier.  Onze medewerkers wonen verspreid in de wijde regio, dus meerijden kan een mogelijkheid zijn.

Reageren

Geïnteresseerd of vragen? Neem dan contact op met Marjanne van Arendonk (communicatie) marjanne@seecr.nl,  of bel 06 – 207 042 96.

Afstudeeropdracht: RDF in Lucene

Apache Jena (https://jena.apache.org) is een raamwerk dat Sparql zoekvragen begrijpt, ontleedt, en via een domeinspecifiek algebra doorstuurt voor verdere verwerking. De verwerking wordt gedaan door een backend, wat zorg draagt voor efficiënte opslag en uitvoering van basale zoekvragen in termen van triples. Jena heeft zelf een backend met de naam TBD.  Seecr is gestart met een back-end die gebaseerd is op Apache Lucene (https://lucene.apache.org). Deze opdracht bestaat uit het uitwerken van de interface tussen Jena en Lucene.

De uitdaging

De belangrijkste reden dat we begonnen zijn met dit project is dat we een Sparql-compliant triple store nodig hebben met specifieke performance karakteristieken die andere open source triple stores niet hebben. Vrijwel alle triple stores zijn geoptimaliseerd voor het volgende gebruik:

  • Laadt (veel) data.
  • Wacht hier (lang) op.
  • Ga grasduinen in de data met Sparql.
  • Antwoord binnen een seconde is heel snel.
  • De triple store draait kort: uren, dagen, hooguit weken.

Echter, het gebruikspatroon wat wij graag willen ondersteunen is:

  • Laadt voortdurend nieuwe data.
  • Verwijder niet meer relevante data.
  • Doe continu queries.

Snel is als het onder de 100 ms is, maar liever onder de 10 ms.  De triple store draait maanden lang door.

Oplossingsrichting

We testen regelmatig triple stores, en we zien hierin maar weinig verbetering. Vooral het voortdurend bijwerken van de data zorgt voor instabiele systemen en voor het uit-sync raken van indexen waardoor het zoeken steeds trager wordt.
Ons inziens ligt dit er vooral aan dat de triple stores vaak nog nieuw zijn en onvoldoende uitontwikkeld. Nu is Sparql-verwerking misschien wel vrij nieuw, maar de benodigde indexen in back-end zijn niet nieuw. Toch worden deze back-end van van de grond af opnieuw ontwikkeld. Dat is de oorzaak van veel problemen, want het maken van een robuuste database met indexen is veel werk en kost veel tijd om stabiel te krijgen.
Er is echter al lange tijd een open source project wat in staat is zeer flexibel indexen van allerlei soorten te maken én om die zeer efficiënt en betrouwbaar up-to-date te houden: Apache Lucene. Zo is het idee ontstaan om Lucene te gebruiken als Back-end voor Jena. Dit idee is niet geheel nieuw, want er zijn twee onderzoekers van verschillende universiteiten die het al eens eerder uitgezocht hebben. De code is echter nergens te vinden.
Dit idee werkt en is ook toepasbaar in serieuze systemen; dat hebben we de afgelopen periode vastgesteld. Verdere doorontwikkeling gaat nu over het implementeren van alle Sparql features en de tuning voor performance. Ons doel is 1 miljard triples op één relatief eenvoudige machine.

Past dit bij jou?

Dit is een zeldzame kans om op zeer fundamenteel niveau bezig te zijn. Een goed begrip van algebra en de toepassing hiervan in de informatica is een pré. Net als kennis van Lucene en Jena. Dit is een opdracht voor een laatste jaar WO-student informatica.

Hoe je dit gaat doen

Als IT-stagiair werk je samen met collega’s,  scrum-based, aan userstories. Je denkt mee over het ontwerp en de implementatie van oplossingen, die baanbrekend kunnen zijn voor de dienstverlening van onze klanten.

Wat kenmerkt ons

Via onze maandelijkse retrospectives verbeteren we continu onze processen en onze interactie met elkaar en onze omgeving continu. Onze werkdag is ingedeeld in vier blokken, ieder voorafgegaan door een stand-up. Zo houden we elkaar scherp, zijn we bij elkaar betrokken, en zijn we wendbaarder door de dag heen. Iedereen denkt met elkaar mee.

Je zult begeleid worden door onze senior developers op WO- en hbo-niveau. Met hen kun je de diepte in over de uitdagingen die je tegenkomt.

Ervaring en skills die je nodig hebt

Dit ben jij:

  • Je volgt een universitaire ICT-opleiding (eindstage).
  • Je bent integer en respectvol.
  • Je kunt in teamverband én zelfstandig werken.

Als je een goed idee hebt,  krijg je de tijd voor research en toepassing binnen projecten.

Wat wij bieden

  • Je werkt mee aan IT-projecten bij de grootste klanten van Seecr.
  • Het is een uitdagende stage binnen een professionele, platte organisatie. Collegialiteit en samenwerken bepalen de sfeer. Iedereen denkt graag met je mee.  We staan open voor nieuwe ideeën.
  • We hebben een stagevergoeding en reiskostenvergoeding; een (h)eerlijke lunch met tweemaal per week versgebakken brood uit eigen oven, gekookte eitjes en biologisch broodbeleg en zuivel van onze Streekleverancier.  Er is altijd vers sinaasappelsap en fruit op kantoor. De eerlijke koffie uit ons Barista apparaat, komt hier vandaan. We hebben verrassende uitjes en ontmoeten graag inspirerende mensen op congressen.

Waar je gaat werken

Ons ruime kantoor ligt hier.  Onze medewerkers wonen verspreid in de wijde regio, dus meerijden kan een mogelijkheid zijn.

Reageren

Geïnteresseerd of vragen? Neem dan contact op met Marjanne van Arendonk (communicatie) marjanne@seecr.nl,  of bel 06 – 207 042 96.