Where is the abstract-schema branch now? The only thing I remember about
that was a brief mailing list discussion (I think started by Daniel
Friesnen) about making such a format. What exactly were the hold-ups with
updates?
*--*
*Tyler Romeo*
Stevens Institute of Technology, Class of 2015
Major in Computer Science
| tylerromeo(a)gmail.com
On Mon, Feb 25, 2013 at 4:35 PM, Chad <innocentkiller(a)gmail.com> wrote:
On Mon, Feb 25, 2013 at 1:29 PM, Greg Sabino Mullane
<greg(a)endpoint.com>
wrote:
Mark A. Hershberger wrote:
How can we improve the support for databases like
PostgreSQL, Oracle,
DB2 and MS SQL?
Getting Jenkins involved in testing isn't the (only) answer, though it
would certainly help.
If developers who were interested in those databases could watch
includes/db, that would help, as well.
I've tackled this problem, and will share my experience. The problem
being
how
to keep all the schemas in sync. I looked at the
existing solution
someone
else started, but found it pretty rough. My idea
(I called it "abstract
schema")
was a central SQL file, which used a fairly
straightforward SQL-ish
syntax,
and then a parser that could read that file and
create versions for
MySQL,
Postgres, etc. Or just load that information into
memory for the install
and upgrade process. I actually had a working prototype for that, which
worked quite well. It made the upgrades in particular very smooth, as
there were no more patch files needed, the installer simply read the
current
canonical schema state and made the necessary
changes.
The big, showstopping problem was trying to map the existing tables.sql
file (the main MySQL one) into the new system. There is no
straightforward
mapping possible, as every single table in the
system I had to try and
figure out why column such-and-such was using this type, and why
sometimes
there was a default and other times not for
similar cases, etc. It was
quite
the nightmare, so that's why I eventually
abandoned the work. The
tables.sql
file is quite obviously organically grown, and
has little rhyme or
reason.
I did come up with some basic naming rules (esp.
for indexes), which
means
that the first release with the new system will
rename a lot of objects,
but as they are not referenced directly, that should not be a problem.
I'm happy to dig out my notes if anyone wants some examples of the
type mapping issues. I think an abstract tables.sql is a good general
approach, but getting from here to there is going to require a lot
of work slogging through those data types.
This was exactly what we tried with the abstract-schema branch,
before it was abandoned. The place we got stuck on was handling
updates.
-Chad
_______________________________________________
Wikitech-l mailing list
Wikitech-l(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l