Hi Monty, all On 07/08/2010, at 11:27 PM, Michael Widenius wrote:
We have plans to add dynamic columns into MariaDB soon. This will probably happen in 5.3, assuming there is some interest in this feature.
With dynamic columns you can store 'any' number of columns in a blob. In effect, each row in the database may have it's own set of columns. One will be able to trivially access and update data in the dynamic columns and also add/drop columns inside the blob.
Example usage:
SELECT column_get(blob, 1, varchar(100)) from table_with_dynamic;
UPDATE table_with_dynamic SET blob=column_add(blob, 2, "hello") where id=1;
UPDATE table_with_dynamic SET blob=column_del(blob,4) where id=5;
Note that 'column_add()' will replace any old value with the given column_id.
Future ideas: - Allow indexing with name instead of numbers. When this is done we can drop the type as part of column_get() - Allow indexing on dynamic fields.
You can find a full specification of this feature here: http://askmonty.org/worklog/Server-BackLog/?tid=34
The idea is good, based on what Google's BigTable (see the Hypertable specs) introduced. It provides a mild level of denormalisation, enabling better scalability. And in the case of MariaDB, you keep the same familiar and convenient API. That's important. I think the word "column" is very wrong in the above example. It's more like "subattributes". See what the terminology in bigtable/hypertable was... Perhaps Mark has insights on this too. I'm for it, it solves a real need that people are already trying to solve (with desperately bad design decisions ;-). Regards, Arjen. -- Arjen Lentz, Exec.Director @ Open Query (http://openquery.com) Exceptional Services for MySQL at a fixed budget. Follow our blog at http://openquery.com/blog/ OurDelta: packages for MySQL and MariaDB @ http://ourdelta.org