Ich stehe gerade vor einer Entscheidung bei unserem neuen Projekt und bin mir unsicher. Wir müssen eine Menge halbstrukturierter Logdaten speichern, die sich im Laufe der Zeit in ihrem Schema wahrscheinlich ändern werden. Ich habe viel mit traditionellen relationalen Datenbanken gearbeitet, aber hier fühlt sich das irgendwie nach einem schlechten Fit an. Ein Kollege erwähnte, dass wir vielleicht eine dokumentenorientierte Datenbank in Betracht ziehen sollten. Das klingt für den Use Case plausibel, aber ich habe einfach keine praktische Erfahrung damit. Ich frage mich, ob der Wechsel die Komplexität nur nach hinten verschiebt, besonders bei Abfragen über verschiedene Dokumente hinweg.
Dokumentendatenbank klingt verlockend für halbstrukturierte Logs doch der Nachteil liegt oft in der Abfrage über viele Dokumente hinweg und im Umgang mit Beziehungen. Auch wenn man JSON in PostgreSQL nutzt bleibt einiges an Komplexität in der Abfragelogik und Indizierung. Berücksichtigt welche Abfragen wirklich häufig sind und wie Indizes helfen. Wie sieht eure typische Abfragepipeline aus?
Die Idee einer Dokumentendatenbank ist plausibel denn semi strukturiertes logschema verändert sich oft. Aber das bedeutet nicht das alles automatisch einfacher wird denn die Komplexität verschiebt sich in den Abfragen und in der Indexierung der Felder die neu auftreten. Vielleicht lohnt ein hybrider Ansatz mit einer dokumentenorientierten Speicherung für die Logs und einer relationalen Schicht für OLAP oder zentrale Sichten. Welche Felder erwarten wir in Zukunft am häufigsten?
Ich dachte erst ihr wollt unbedingt weg von relationalen Systemen doch in vielen Fällen funktioniert auch eine relationale Lösung mit json spalten und schemaveränderungen die flexibel bleiben bleibt eine Herausforderung. Ihr würdet dann JSON Dokumente statt Tabellen nutzen aber eigentlich bleibt es relational nur mit verschachtelten Feldern.
Es fühlt sich gerade stressig an ich denke die Flexibilität ist attraktiv doch die Unsicherheit bleibt. Mir persönlich fehlt manchmal die klare Antwort und ich frage mich ob der Wechsel wirklich die Komplexität senkt oder nur verschiebt.
Statt gleich zu entscheiden könnte man den Fokus auf Schema Evolution legen und sich fragen welche Ziele wirklich wichtig sind im Projekt Soll die Lösung schnell an neue Felder anpassen oder schnell globale Abfragen unterstützen Ein kleiner Pilot mit beiden Ansätzen könnte Orientierung geben?