I have been working on a project to transform an in house rails application into a distributed SAAS solution. As with many rails apps it began as a simple crud interface, but inevitably became unsuitably complex and slow. At this point the application has almost become a feature complete ERP system (albeit a specialized one).
One of the primary requirements is that the system can return a constant stream of relatively complex data based on dynamic user provided queries. As such I replaced the current long polling implementation with web-sockets (via Sente). My current database of choice is Rethinkdb, largely because of its changefeed <https://rethinkdb.com/docs/changefeeds/javascript/> feature. Change feeds can be used to notify the server when a table changes. I would like to push the changes client side whenever they occur, but I've encountered a number of issues attempting to do so. - When a user updates their query what is the best way to update the changefeed? It seems the easiest route is to stop the change feed and start a new one, but there may be a more efficient route. - When should a changefeed be closed? - Changefeeds using the clojure driver <https://github.com/apa512/clj-rethinkdb> produce a map of core.async channels what is the best way to store these channels? So far I've been considering either keeping the resulting map in the user's session, or serializing the map and placing it into an in memory db like Redis. - While searching for solutions I also came across this link <http://lucumr.pocoo.org/2012/8/5/stateless-and-proud/>, it a nutshell it suggests using a micro-service architecture in which the stateful components could be completely decoupled from the business logic, and they would communicate via a messaging queue. But in may ways this feels like an unnecessary amount of additional complexity. At this point in the project I can still change my tool set without a considerable amount of lost productivity, so if anyone would like to suggest alternative tools to simplify the issue I'm open to the idea. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.