Fang relational an, außer du hast einen konkreten Grund dagegen. Postgres gibt dir Transaktionen, Joins, Constraints und einen Query Planner, was die meisten Workloads abdeckt und dir Optionen offenhält. Greif zum Document Store, wenn das Zugriffsmuster wirklich ein Key auf einen Blob ist, wenn das Schema pro Datensatz tatsächlich variiert, oder wenn du mehr Write-Durchsatz brauchst, als ein einzelner Primary schafft.
Warum Interviewer das fragen
Der Interviewer will sehen, ob du Infrastruktur nach Anforderungen wählst oder nach Mode. Er hört auf einen ehrlichen Default, auf das Verständnis, dass relationale Datenbanken weiter skalieren als viele annehmen, und auf das Bewusstsein, dass der Verzicht auf Joins und Transaktionen echte Kosten sind, die du später im Anwendungscode bezahlst. Wer sagt, NoSQL sei schneller, ohne das einzuschränken, hat meist keins von beiden im großen Maßstab betrieben.
So baust du deine Antwort auf
- Nenn deinen Default und warum er dein Default ist.
- Zähl die Zugriffsmuster auf, die deine Meinung ändern würden.
- Benenne, was du aufgibst, wenn du relationale Features streichst.
- Weis darauf hin, dass Datenmodelle Services überleben.
Beispielantwort
Mein Default ist Postgres, und ich will davon abgebracht werden statt überzeugt. Der Grund ist, dass mir eine relationale Datenbank Transaktionen, Joins und Constraints gratis gibt, ich muss meine Zugriffsmuster also nicht an Tag eins richtig raten. Datenmodelle überleben die Services, die sie schreiben, und ich behalte die Flexibilität lieber im Query Layer als im Storage Layer. In bestimmten Fällen greife ich schon zum Document Store. Wenn jeder Datensatz wirklich in sich abgeschlossen ist, wenn die Form pro Tenant variiert, oder wenn ich mehr Write-Durchsatz brauche als ein einzelner Primary schafft, geht der Trade auf. Ehrlich sein will ich beim Preis: Ohne Joins wird jede Beziehung zu Anwendungscode, und ohne Transaktionen wird jedes Update über mehrere Dokumente zu einem Idempotenzproblem. Im letzten Projekt haben wir die Kernentitäten in Postgres gelassen und ein Event-Log mit hohem Volumen dort abgelegt, wo genau das hingehört, was uns Skalierung gab, wo wir sie brauchten, ohne überall sonst Korrektheit aufzugeben.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie weit würdest du eine einzelne Postgres-Instanz treiben, bevor du shardest?
- Wie modellierst du eine Many-to-Many-Beziehung in einem Document Store?
- Wann würdest du JSONB-Spalten statt einer separaten Datenbank nehmen?
Weitere Fragen für Softwareentwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen