Af en toe onderzoek ik eens een andere database-oplossing die ik nog niet kende, over hoe die ineen zit en wat zijn sterktes zijn, en onderwijl zoek ik hoe ik er zo rechtlijnig mogelijk mee kan praten vanuit Delphi. MongoDB en PostgreSQL waren zo best leerzaam, maar toen ik las dat een Java project in C++ werd herschreven en het 10 keer beter werkte (!) had ik het op een lijstje gezet om later nog eens te bekijken.

Dus heb ik er recent eens een poging in ondernomen, maar ik begrijp iets niet denk ik. Als je een key-space aanmaakt, moet je direct zeggen hoe je de replicatie wil gaan afhandelen, en je wil dat je cluster kan groeien, met daarin natuurlijk welke kant je van het CAP-theorem wil uitkomen, zover ben ik nog mee. Maar als je die CQL van uit de hoogte bekijkt, dan zie je zo op het zicht al heel veel CREATE, ALTER en DROP, dan wat INSERT, UPDATE en DELETE, en een wel heel miezerig klein stukje over SELECT. Vreemd. JOINs? Vergeet het maar.

Is dat omdat het, vanuit de Java-wereld komende, vooral bedoeld is als de achterkant van een ORM? Of misschien toch om meer rijkere structuren binnen een record op te bouwen met gebruik van map<>,list<>,set<> en zo?

Voor wie het mocht interesseren, mijn voorlopige poging staat hier: Cassandra.pas, haal jsonDoc.pas van hier en simpleSock.pas uit het TMongoWire project.