Postgres Hstore vs. Redis - производительность - PullRequest
23 голосов
/ 06 февраля 2012

I Читайте о В магазинах Postgres также есть что-то, что предлагает Redis.

Наше приложение написано на NodeJS.Два вопроса:

  • С точки зрения производительности, Postgres HStore сопоставим с Redis?

  • для хранения сессий, что бы вы порекомендовали - Redis,или Postgres с каким-то другим типом данных (например, HStore, или, может быть, даже с обычной реляционной таблицей)?И насколько плох один вариант по сравнению с другим?

Другое ограничение заключается в том, что нам нужно будет использовать данные, которые уже есть в PostgreSQL, и объединить их с активными сеансами (которые мы не рассматриваем).Не уверен, где хранить в данный момент, если в Redis или PostgreSQL).

Из того, что мы прочитали, мы указали на использование Redis в качестве диспетчера сеансов, но из-за ограничений PostgreSQL мы не уверены, как объединить и возможные проблемы с производительностью, которые могут возникнуть.

Спасибо!

Ответы [ 2 ]

26 голосов
/ 06 февраля 2012

Redis будет быстрее, чем Postgres, потому что Pg предлагает гарантии надежности ваших данных (когда транзакция зафиксирована, она гарантированно находится на диске), в то время как Redis имеет концепцию записи на диск, когда ему это нравится, поэтомуне может быть использован для критических данных.

Redis кажется хорошим вариантом для данных сеанса, или, черт возьми, даже для сохранения в cookie или на вашем клиентском Javascript.Но если вам нужны данные из вашей базы данных при каждом запросе, возможно, вам даже не стоит привлекать Redis.Это очень сильно зависит от вашего приложения.

3 голосов
/ 06 февраля 2012

Использование PostgreSQL в качестве менеджера сессий, как правило, плохая идея.

Для более старых, чем 9.1, был физический лимит транзакций в секунду на основе постоянных параметров носителя. Для управления сеансами вам обычно не нужен MGA (потому что нет столкновений), и это означает, что MGA перегружен, а базы данных без MGA и ACID должны быть значительно быстрее (10 или 100).

Мне известен пример использования, когда PostgreSQL использовался для управления сессиями, а производительность была действительно ужасной и нестабильной - в этом магазине было около 10000 живых сессий. Когда управление сессиями было перенесено в memcached, производительность и стабильность значительно увеличились. PostgreSQL может использоваться без проблем на 100 живых сессиях, вероятно. Для больших чисел есть лучшие инструменты.

...