3 ms·
What's the use case that raises these requirements? Or, more politely, what problem are you solving with this setup?
by bigethan 15y ago
What's the use case that raises these requirements? Or, more politely, what problem are you solving with this setup?
- antimora 15y agoPrimarily I wanted it to be really fast, be able to invalidate session, and be available on any node via active replication. If I used Beaker, I had to use memcached which is not replicated (by default setup), and each validation would have required 2 round trips to memchached (validation, update stamp). It's easier to write my own with ZeroMQ and I can build with custom logic at demon level.
- espeed 15y agoAwhile back I looked into Mongo for sessions, but it isn't really designed to do this. Sessions are temporal, and AFAIK Mongo doesn't have a built in mechanism for expiring them, plus session data is usually small -- there are other datastores better suited for this type of data.
- antimora 15y agoPrimarily sessions will live in RAM. And I was going to use MongoDB to persist sessions just in case the daemon dies or session is not found in RAM as a fallback. The reason for using MongoDB is because it's my primary database. But your concern about growing table of sessions is valid, which I will handle by periodically archiving the old sessions so that index sizes remain small.
- shazow 15y agoYou don't have to use memcached, the beaker extensions let you use whichever backend storage mechanism you want. Redis Cluster can be replicated and would work fine for this, for example. I don't have a good grasp of what you're trying to achieve and why, but my overengineering alarms are going off.
- antimora 15y agoThanks for the suggestion. I haven't considered Redis Cluster, but I definitely will.