Nehmen wir an, ich habe drei Arten von Daten: A
's, B
' s und C
's. A sieht wie folgt aus:Wie sortiere ich Feeds verschiedener Typen in PostgreSQL am besten?
{
"id": "4ccdfb68-ce18-4361-bd90-e61f1fcf8d2b",
"created_at": "2016-11-27 02:24:12.889637+00",
"author": "7d16389b-2d66-4c59-bb6a-87992a60d112",
"foo": "bar",
"baz": "zab",
"nak": "kan"
}
und C sieht wie folgt aus:
{
"id": "4ccdfb68-ce18-4361-bd90-e61f1fcf8d2b",
"created_at": "2016-11-27 02:24:12.889637+00",
"author": "7d16389b-2d66-4c59-bb6a-87992a60d112",
"baz": "zab",
"cat": "dog"
}
Es gibt (eher klein) Variationen in ihren Feldern, aber sie haben
{
"id": "4ccdfb68-ce18-4361-bd90-e61f1fcf8d2b",
"created_at": "2016-11-27 02:24:12.889637+00",
"author": "7d16389b-2d66-4c59-bb6a-87992a60d112",
"foo": "bar",
"baz": "zab",
"cat": "dog"
}
B wie folgt aussieht einige konsistente Felder (sozusagen "Metadaten"). Jede von ihnen stellt ihren eigenen Datentyp dar - B ist nicht A mit verschiedenen Feldern. Jedoch zu einem späteren Zeitpunkt muß ich die jüngsten alle drei in ein „Futter“ kombinieren:
[{
"id": "4ccdfb68-ce18-4361-bd90-e61f1fcf8d2b",
"type": "A",
},
{
"id": "4ccdfb68-ce18-4361-bd90-e61f1fcf8d2b",
"type": "B",
},
{
"id": "4ccdfb68-ce18-4361-bd90-e61f1fcf8d2b",
"type": "C",
}]
Soll ich eine einzelne Tabelle alle drei mit ihren gemeinsam genutzten Feldern erstellen darstellt und ein JSONB Feld, oder sollten sie eigene Tabellen haben und eine Gewerkschaftsabfrage an ihnen durchführen? Um es klar zu sagen, der Feed hat nur gemeinsame Felder. Ich brauche das auch, um vorwärtskompatibel zu sein - ich weiß in der Tat, dass zukünftige Typen eine ID, ein created_at-Feld und einen Autor haben werden, aber darüber hinaus ist es faires Spiel.
Danke! Fühlen Sie sich frei, nach Details zu fragen.
Bearbeiten: Ah, ja, ich vergaß zu erwähnen, dass ich auch (zu einem späteren Zeitpunkt) Indizes auf ein Feld machen möchte (wenn die Zeile es hat), so dass ich nach allen Zeilen suchen kann, wo "foo "==" bar ". Wenn eine Zeile nicht foo hat, sollte das nicht brechen.
Ich habe vergessen, eine 'Spalte Baumuster zur aufzunehmen. Es existiert :) – AniSkywalker