PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgresql JSONB sta arrivando. Cosa usare ora? Hstore? JSON? EAV?

Dipende. Se prevedi di avere molti utenti, un volume di transazioni molto elevato o un numero folle di recuperi di attributi per query, direi di utilizzare HSTORE. Se, tuttavia, la tua app inizierà in piccolo e crescerà nel tempo, o ha relativamente poche transazioni che recuperano gli attributi o ne recupera solo alcuni per query, usa JSON. Anche in quest'ultimo caso, se non stai recuperando molti attributi ma controllando spesso una o due chiavi nel WHERE clausola delle tue query, puoi creare un indice funzionale per velocizzare le cose:

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

Ora, quando hai WHERE bar ->> somekey , dovrebbe utilizzare l'indice.

E, naturalmente, sarà più facile utilizzare i dati nidificati e aggiornare a jsonb quando saranno disponibili.

Quindi mi orienterei verso JSON a meno che tu non sappia per certo che prenderai a calci in culo il tuo server con un uso massiccio di recuperi di chiavi prima di avere la possibilità di eseguire l'aggiornamento a 9.4. Ma per esserne sicuro, direi, fai un po' di benchmarking con i volumi di query previsti ora e vedi cosa funziona meglio per te.