What database WhatsApp used with Yaws?

WhatsApp used (or may be still they’re using) Yaws. What database they used with Yaws? I think Yaws only supported Mnesia, CouchDB, MongoDB, Redis and Riak.

So

  1. did they use one of these databases?
  2. Is it possible to create some compilicated system as WhatsApp using only Mnesia?
  3. Will a system solely based on Mnesia perform OK/better/worse than using something like Mongo or Postgres?
  4. Does Yaws support only the above 5 databased or does it also support MySQL or PostgreSQL ?
2 Likes

Yaws is a web server. It likely works with any database of your choice. From my understanding of previous Whatsapp talks, they relied a lot on Mnesia but such talks are at least 4 years old at this point.

A system based solely on Mnesia may perform OK, better or worse than using Mongo or Postgres. It really depends on your domain, your engineering team, your design and the guarantees you expect from the system.

5 Likes

As far as I know, Whatsapp relied on Mnesia only as database (for non media content). The Mnesia tables had to be fragmented to hold all data. Whatsapp contributed to some optimizations and improvements of the Erlang code base related to handling the Mnesia database.
Whatsapp does not store any messages on their servers, thought. Accordingly, the database was for user credentials, the roster, group chat meta infos, non delivered messages and presence info only.

3 Likes

WhatsApp still doesn’t store the message on their servers or did they change that strategy after being acquired by Facebook?

You’ll never know that. They can store it without telling they do :wink:

1 Like

Backend
Erlang
FreeBSD
Yaws, lighttpd
PHP
Custom patches to BEAM (BEAM is like Java’s JVM, but for Erlang)
Custom XMPP

Database: Mnesia
Offline database: SQLite

1 Like

@irfan.aloha You might want to indicate the source of this information.

2 Likes