I like the theory behind the design of Metabase, especially the
uniform XML-based representation of data structures. However, I do
not feel that it is ready for incorporating into my PHP application
mainly because of the lack of more robust database features which I
rely on.
Mainly I am interested in:
1. Foreign key support. In my experience this is an essential feature
for db integrity assurance. Also, possibly greater support for more
datatypes, plus support for functions/operators such as time interval
comparisons, date calculations, string operations... all typical stuff
which seems to vary slightly in different databases.
2. The capability to reverse engineer the database -- basically to
query metadata and rebuild the XML schema from the tables themselves.
For example, a 'cluster' optimization in postgres will re-organize the
physical placement of data in the table according to an index, but
will also destroy all indexes on the table -- Metabase should be able
to detect the missing indexes and re-create them from the XML source.
3. More adaptive functionality to automate database alterations,
especially within postgres which does not support alter table as well
as mysql. In the case of Postgres, I think that a proper adaptation
to Metabase, probably with the help of #2 could perform more advanced
table alterations.
Another point of contention is that as a Linux/Postgres/PHP user I am
not really interested in the ultimate cross-database portability. I
feel this compatibility issue may force Metabase to adapt to the
lowest-common feature set, which kind of makes it pointless to use a
more powerful DBMS like Postgres, Oracle or DB2.
Another point to consider is given my orientation towards using only
Postgres maybe it would be more appropriate to incorporate the
XML-based interface into the Postgres tree itself rather than as an
external PHP application.
I am comfortable with large PHP-based projects and use XML heavily, so
I feel that I could probably help directly in the Metabase project but
I am not sure what the long-term goals of the Metabase are:
compatibility vs features and how that fits in with my needs.
Any comments?