1 Reply Latest reply on Dec 26, 2013 3:50 PM by abhay kumar

    Database vs Queue



      I would like to know which one will perform better in a given scenario .We have a application with high volume like 250 tps .We are capturing some audit information and would like to write to database , But as we are dealing with large volumes , we like to know should be consider adding a Queue and then process the data from the Queue ,If we try direct update to database it may have performance impact as it is synchronous , But i wonder will it take less time to write to a Queue than writing /updating to database directly.


      Any help appreciated.





        • 1. Re: Database vs Queue
          abhay kumar

          Writing to a queue would be faster than writing to a database.

          he phrase beats every time totally depends on what your requirements were to begin with. Certainly its not going to beat every time for everyone.

          If you are building a single system which is already using a database, you don't have very high performance throughput requirements and you don't have to communicate with any other teams or systems then you're probably right.

          For simple, low thoughput, mostly single threaded stuff, database are a totally fine alternative to message queues.

          Where a message queue shines is when

          • you want a high performance, highly concurrent and scalable load balancer so you can process tens of thousands of messages per second concurrently across many servers/processes (using a database table you'd be lucky to process a few hundred a second and processing with multiple threads is pretty hard as one process will tend to lock the message queue table)
          • you need to communicate between different systems using different databases (so don't have to hand out write access to your systems database to other folks in different teams etc)

          For simple systems with a single database, team and fairly modest performance requirements - sure use a database. Use the right tool for the job etc.

          However where message queues shine is in large organisations where there are lots of systems that need to communicate with each other (and so you don't want a business database to be a central point of failure or place of version hell) or when you have high performance requirements.

          In terms of performance a message queue will always beat a database table - as message queues are specifically designed for the job and don't rely on pessimistic table locks (which are required for a database implementation of a queue - to do the load balancing) and good message queues will perform eager loading of messages to queues to avoid the network overhead of a database.

          Similarly - you'd never use a database to do load balancing of HTTP requests across your web servers - as it'd be too slow - if you have high performance requirements for your load balancer you'd not use a database either.