I'm developing a chat project (server/client), so I will need an RDBMS for saving and loading user profiles, users logging-in etc., just like Skype does.

So my question is: which RDBMS will fit my needs?

There will be a lot of heavy queries like when users will log-in, all their profile information + their avatar picture will be queried from the DB and sent to the client app.

So imagine 1000 users are logging the same time, if successfully logged in then all these users will have their profile information + their avatar pic + their contacts list.


Pretty much any real RDBMS will do the job you describe. Possibly even SQLite could cope at the scale you're talking about, though not great.

Your main concern will actually be the write-rate. You'll want to do group commits / commit delays or enable asynchronous commits. Otherwise, unless you have some fast storage, you'll quickly find yourself limited by the commit rate as each message produces its own individual database commit.

You'll also want to find a way to avoid polling the database for new messages.

If I were designing this application I would use a message broker on top of the database, like RabbitMQ, ZeroMQ, etc etc. The database would be the persistent data store for the app, but real time user-to-user message exchange would happen through the message queue/broker, with the database serving to log the messages for offline retrieval, history, etc.

  • Thank you Craig , i will not use the database to save messages between users but just to save - load user profile + login credentials + user Online / offline / custom mood messages + control manager ... So how to avoid the heavy queries ? – randydom Jun 20 '14 at 11:49
  • Those queries won't be "heavy" with that many users, they'll be utterly trivial. My pocket calculator could handle that workload on a sanely designed database. – Craig Ringer Jun 20 '14 at 12:13
  • So Craig should i go with PostgreSQL ' because there will be no Revert or Undo at least for me ' ? – randydom Jun 20 '14 at 12:28
  • Er, what? I'm confused. What does "Revert" or "Undo" have to do with anything? What are they in this context? I have no idea what you are talking about. Any database will do the job fine, so pick the one you know best. – Craig Ringer Jun 20 '14 at 12:31
  • 1
    So many thanks Craig and all others . i will try first with PostgreSQL – randydom Jun 20 '14 at 12:37

Any RDBMS will be fine. It sounds like your main concern is the amount of queries, not the RDBMS features, so with a decently sized server there shouldn't be any issue with common RDBMS like MariaDB, MySQL, PostgreSQL, etc.

  • Franck many thanks , in reality yes my 1st concern is the amount of queries . – randydom Jun 19 '14 at 23:31
  • I've read that Skype itself uses PostgreSQL ? will that be my 1st choice ? – randydom Jun 19 '14 at 23:34
  • Well, Wikipedia is MariaDB (they switched to it around one year ago) :) – Franck Dernoncourt Jun 19 '14 at 23:43
  • Skype uses PostgreSQL with a lot of custom sharding and replication stuff on top - see Skytools. – Craig Ringer Jun 20 '14 at 1:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.