Take the 2-minute tour ×
Software Recommendations Stack Exchange is a question and answer site for people seeking specific software recommendations. It's 100% free, no registration required.

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.

share|improve this question
add comment

2 Answers 2

up vote 1 down vote accepted

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.

share|improve this answer
    
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 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 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 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 at 12:31
    
Craig i meant when i choose a database i will not think to choose an other DB that's it . really sorry for " Revert " and " Undo " –  randydom Jun 20 at 12:33
show 2 more comments

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.

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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