PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgresql JSONB kommt. Was jetzt verwenden? Hstore? JSON? EAV?

Es hängt davon ab, ob. Wenn Sie viele Benutzer, ein sehr hohes Transaktionsvolumen oder eine wahnsinnige Anzahl von Attributabrufen pro Abfrage erwarten, würde ich sagen, verwenden Sie HSTORE. Wenn Ihre App jedoch klein anfängt und im Laufe der Zeit wächst oder relativ wenige Transaktionen hat, die Attribute abrufen, oder nur wenige pro Abfrage abruft, verwenden Sie JSON. Auch im letzteren Fall, wenn Sie nicht viele Attribute abrufen, sondern häufig einen oder zwei Schlüssel im WHERE überprüfen -Klausel Ihrer Abfragen können Sie zur Beschleunigung einen funktionalen Index erstellen:

CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));

Nun, wenn Sie WHERE bar ->> somekey haben , es sollte den Index verwenden.

Und natürlich wird es einfacher, verschachtelte Daten zu verwenden und auf jsonb zu aktualisieren, sobald es für Sie verfügbar ist.

Ich würde mich also eher für JSON entscheiden, es sei denn, Sie wissen sicher, dass Sie Ihrem Server mit dem häufigen Einsatz von Schlüsselabrufen in den Arsch treten werden, bevor Sie die Möglichkeit haben, auf 9.4 zu aktualisieren. Aber um sicher zu sein, würde ich sagen, führen Sie jetzt ein Benchmarking mit erwarteten Abfragevolumina durch und sehen Sie, was für Sie am besten funktioniert.