2016-04-04 8 views
0

Also ich baue eine Tabelle/Datenbank in Postgres mit seiner JSONB-Funktion. Meine Frage ist, wie man die Tabelle/Abfrage gegen sie strukturiert. Ist es schneller, eine separate relationale Spalte mit einem Fremdschlüssel zu verwenden, der sich auf Benutzer bezieht? Oder speichern Sie einfach einen Benutzer in den JSON-Daten und fügen Sie ihn in Ihre JSON-Abfrage ein.Postgres JSONB-Tabellenabfragestruktur?

Ein Beispiel:

| userID |   json   | 
|  1  |  { 'userID': 1,  | 
|   |  'something': 5 } | 

Oder einfach:

|   json  | 
| { 'userID': 1, | 
| 'something': 5 } | 

Antwort

1

Es hängt ein wenig, wenn Sie einen echten Fremdschlüssel oder nicht wollen. Sie können nicht wirklich eine fremde Nachricht an json->userId erstellen. Wenn Sie einen Index für schnelle Joins erstellen möchten, können Sie einen funktionalen Index unter json->userId erstellen oder einen GIN-Index für das gesamte Dokument erstellen.

Wenn Sie tatsächlich einen Fremdschlüssel erstellen und dort entsprechende Einschränkungen haben möchten, lohnt es sich, ihn in eine tatsächliche Spalte zu übersetzen.