← Back to team overview

maria-discuss team mailing list archive

The future of Dynamic Columns


I've been excited about the potential uses of Maria's Dynamic Columns
(MDC) since I first read about the them. Now I am starting a new
application development and want to use MDC. It's a server-side PHP webapp
using the Yii 2.0 MVC framework.

These days, for typical webapp pages, I seldom write SQL and use the ORM
instead. So I started writing an extension to the Yii 2.0 Active Record
ORM to provide an abstract interface to read and write structured dynamic
attributes as well as use them in queries. I'm trying to do it so that I
can make the same API work using PostgreSQL jsonb and perhaps other things.

While this is very interesting work, I have developed a vague
uncomfortable feeling about MDC. I have the sense that this wicked
powerful feature is suffering from atrophy and possibly apathy.
Contributing to this sense:

  1. I haven't been able to discuss MDC with anyone who uses it. (If you
do, contacts below).

  2. In at least two places (one was here
 I've read text with the implied meaning, "we may improve such-and-such
about MDC if and when people start actually using it."

  3. The MDC syntax is so clunky I worry that people who might find it
useful are turned away.
  4. Did the 5.3 version with numbers for column names turn people off MDC
for good?

  5. The requirement to specify datatype when querying a dynamic column is
agonizing. The manual says it is a limitation of SQL itself (presumably
immutable) but PostgreSQL manages to avoid it when querying jsonb doc

  6. The lack of indexing of dynamic columns is a severe limitation but
PostgreSQL manages to index jsonb document properties.

And then...

  7. I head a rumor that some kind of JSON features are coming to Maria.

So, do Maria's Dynamic Columns have a future? Are my fears that MDC will
be neglected as some better solution to the same problem receives all the

Basically, I'm trying to gauge the risk vs. return in my investment in
developing the ORM extension I mentioned at the top.

tom[] on Freenode

Follow ups