Alternative DBMSs?

Has anyone run any comparisons using, say MariaDB or Percona? Both claim better performance, notably with MyISAM, and greater stability and manageability than MySQL, with binary compatibility. Ideally, Elgg would be DBMS-independent but these seem to offer some notable advantages without the need to rewrite anything.

We will be trying out MariaDB at Athabasca U and will report back here on anything we discover but I'd be interested to know whether anyone has gone this way already and whether there are any perceptible gains or pitfalls to be aware of. 


  • >  Elgg would be DBMS-independent

    There is no such thing as DBMS independent.  "DBMS independent" is the reason you get poor performance in the first place, not using databases properly.

    Having spend the last few days looking through the elgg source code for another reason, I can tell you that elgg isn't even using MYsql properly.... their way of calling the database, and the database layout itslef is ghastly.

  • Definitely wrote a big long reply under the assumption that MariaDB was NoSQL. That was dumb.

    Since it seems to be a drop-in replacement for MySQL, I'd say go for it. I don't think it's as widely available as MySQL which is why we don't support it, but I'd love to hear the results.

  • Thanks Evan - I did panic for a bit when I got the notification on the first message!

    We're massively under-resourced at the moment so moving at a snail's pace and no performance figures to report yet, but initial signs are good, inasmuch as MariaDB seems to just work: as far as Elgg is concerned it is talking to a MySQL database and everything appears to work as usual.

    MariaDB seems like a good idea. There is much more effort being put into MariaDB development than at least the open parts of MySQL, it is not bound to Oracle, and other people's performance comparisons suggest some modest gains, especially in MyISAM and when using many cores. The foundation looks pretty stable and well supported. We haven't looked far into its many alternative indexing options because that is a one-way path that would make it hard to change our minds later, but it looks like the Aria engine offers fairly high compatibility with MyISAM with better transaction support (that can be turned off for compatibility) and better performance. Definitely worth looking at.

    We have some serious performance issues - some pages with many widgets can take more than 30 seconds to load and some saves can take at least as long.

    A fair bit of the load time is taken up with client-side rendering - a lot of unnecessarily loading of JQuery etc is one problem we have identified. We have a lot of plugins so there is plenty of scope for optimization if we can get the developer time, but for now we are trying to pick off the low-hanging fruit that only requires a bit of admin time. Separating DBMS and web servers, using a faster DBMS and upgrading our hardware are among the ways we are looking at.

    The saving issues appear to be mainly connected with the wait for notifications to be sent, most notably affecting groups with many members or people with many friends, so we're looking at the Vroom plugin as a potential solution - this seems like a good idea for the core? 


  • Matt Beckett,

    The thing is still coded in the most ghastly manner... concatenations and all sorts of nasties in the php code (lots of scope for SQL injections) and the database schema is, well, not really a schema, you're trying to build a schema on top of a schema instead of letting the databse what it does best.

    I still maintain that the original poster's problem with scalability is not with Elgg's choice of database, but the way it is being queried and the layout of the schema.

  • @jondron -- core will have async notifications by default, so things should speed up dramatically if you have large groups. Vroom is a clever solution until then that didn't require new systems within Elgg. I recommend it if you're having problems that bad.

    More AJAX could alleviate the problem as well.

Performance and Scalability

Performance and Scalability

If you've got a need for speed, this group is for you.