performance - Postgres Hstore vs. Redis-prestazioni ragionevoli



postgresql node.js (2)

Ho letto di HStores su Postgres qualcosa che viene offerto anche da Redis.

La nostra applicazione è scritta in NodeJS. Due domande:

  • Per quanto riguarda le prestazioni, Postgres HStore è paragonabile a Redis?

  • per l'archiviazione di sessione, cosa consiglieresti: Redis o Postgres con qualche altro tipo di dati (come HStore, o forse anche la solita tabella relazionale)? E quanto è brutta un'opzione rispetto all'altra?

Un altro vincolo è che avremo bisogno di usare i dati già in PostgreSQL e combinarli con le sessioni attive (che non siamo sicuri di dove memorizzare a questo punto, se in Redis o PostgreSQL).

Da quello che abbiamo letto, ci è stato indicato come utilizzare Redis come gestore di sessione, ma a causa del vincolo di PostgreSQL, non siamo sicuri di come combinare entrambi i possibili problemi di prestazioni che potrebbero sorgere.

Grazie!


Answer #1

L'utilizzo di PostgreSQL come session manager è in genere una cattiva idea.

Per i più vecchi di 9.1 era il limite fisico di transazione al secondo in base ai parametri multimediali persistenti. Per la gestione delle sessioni di solito non è necessario MGA (perché non c'è collisione) e significa che MGA è overhead e database senza MGA e ACID devono essere significativamente più veloci (10 o 100).

Conosco un caso d'uso, in cui PostgreSQL è stato utilizzato per la gestione delle sessioni e Performance era davvero terribile e instabile - era eshop con circa 10.000 sessioni viventi. Quando la gestione delle sessioni è stata spostata su memcached, le prestazioni e la stabilità sono state notevolmente aumentate. PostgreSQL può essere usato per 100 sessioni di vita senza problemi probabilmente. Per numeri più alti ci sono strumenti migliori.


Answer #2

Redis sarà più veloce di Postgres perché Pg offre garanzie di affidabilità sui tuoi dati (quando la transazione è impegnata, è garantito che sia su disco), mentre Redis ha un concetto di scrittura su disco quando lo si sente, quindi non dovrebbe essere usato per dati critici.

Redis sembra una buona opzione per i tuoi dati di sessione, o addirittura memorizzare in un cookie o nel tuo client Javascript. Ma se hai bisogno di dati dal tuo database su ogni richiesta, allora potrebbe non valere la pena di coinvolgere Redis. Dipende molto dalla tua applicazione.





key-value-store