Ich suche mit PostgreSQL jsonb
Spaltentyp für ein neues Back-End-Projekt, das hauptsächlich als REST-ful JSON API dienen wird. Ich glaube, dass PostgreSQLs jsonb
eine gute Passung für dieses Projekt sein wird, da es mir JSON-Objekte geben wird, ohne dass eine Konvertierung auf dem Backend erforderlich ist.JSONB und primäre/Fremdschlüssel: welche besser in PostgreSQL führt?
Ich habe jedoch gelesen, dass der jsonb
-Datentyp verlangsamt, wenn Schlüssel hinzugefügt werden, und mein Schema muss Primärschlüssel und Fremdschlüsselverweise verwenden.
Ich frage mich, ob Primärschlüssel/Fremdschlüssel in ihren eigenen Spalten (in der Standard-relationalen Datenbank Weg) und dann eine jsonb
Spalte für den Rest der Daten wäre vorteilhaft, oder würde dies Probleme verursachen (ob jetzt oder die Straße hinunter)?
Kurz gesagt würde:
table car(id int, manufacturer_id int, data jsonb)
durchführen besser oder schlechter als:
table car(data jsonb)
Vor allem, wenn häufig Fremdschlüssel aufzublicken?
Wäre es aus der Perspektive der Performance oder des Schemas Nachteile für den ersten?
Warum möchten Sie 'jsonb' überhaupt verwenden? Klingt so, als ob Sie ein mehr oder weniger festes Schema haben und das Konvertieren von Zeilen in JSON sollte schnell genug sein, damit Sie sich keine Sorgen machen müssen. –
Gute Frage: Ich habe eine gute Vorstellung von den Beziehungen, die mein Schema benötigt, aber zu diesem Zeitpunkt habe ich kein konkretes Verständnis der Informationen, die jede Tabelle benötigt, und ich konnte jedes Mal Datenbankmigrationen durchführen Ich denke, dass ich mit jsonb eine gute Leistung zusammen mit einer einfachen Möglichkeit, Dinge schnell hinzuzufügen, würde. Vielleicht kann ich später, wenn ich ein konkreteres Verständnis der benötigten Daten habe, zu einem guten Beziehungsaufbau zurückkehren. Aber das ist neben der Frage, die lautet: Leistet man besser/schlechter als die andere? –
Aber du wirst sowieso eine Reihe von Migrationen machen müssen, um dein JSON neu zu schreiben, ein paar ALTER TABLEs hier und dort sollte nicht beängstigend sein und wenn sie dann all deine Daten und Code neu schreiben um ein sich ständig änderndes Schema zu verfolgen beängstigender sein. Was die Beantwortung der Frage betrifft, müssen Sie zuerst die richtige Frage stellen. Ich denke, Sie müssen herausfinden, wie Ihre Daten aussehen, bevor Sie beginnen, Daten herumzuschleppen. Wenn du denkst, dass du es flügelst und dann zurück gehst und die Datenbank neu entwirfst, ist es fast sicher falsch, wird es nicht passieren. –