http://db.apache.org/ddlutils/ does schema evolution. The downside is
that the XML file formats are different, although you could use ddlutils
for your schema maintenance and write an XSLT converter to Cayenne
format.
DDLUtils looks very cool, although I haven't actually tried it because
I haven't had an excuse yet. You can point it at a database and read in
your data model (like Cayenne does) but with indexes and foreign keys,
etc. Then add/remove columns, indices, foreign keys, constraints, etc
and then have it update the schema with alter statements.
They are still working towards a 1.0 release so not all DBs work
equally well yet, but it looks like an exciting project to me. I expect
someone will create a database management web app or Swing UI using it
at some point.
- Jonathan
>>> andru..bjectstyle.org 2006-01-25 10:55:33 AM >>>
Bruce,
To the best of my knowledge there have been no substantial
improvements in this area so far.
Andrus
On Jan 24, 2006, at 10:51 PM, Bruce Alspaugh wrote:
> Have there been any updates to support schema evolution since this
> was posted? Is schema generation still all or nothing?
>
> Bruce
>
> On Jul 23, 2004, at 5:54 PM, Andrus Adamchik wrote:
>
> Hi Jonathan,
>
> As this raises a valid concern, it can't be "too critical" ;-) BTW,
> this has been discussed multiple times in the last few months.
So....
>
> 1. You are right - current Cayenne schema generation is all or
> nothing.
> You can drop and recreate your tables but there is no "merge".
>
> 2. In the future we will definitely improve that. This is in the
> plans.
> However there is a huge BUT, which lead us to (3)...
>
> 3. In a general case "merging" DB schema with the evolved model is
not
> just add/drop column. Most real life migrations between schema
> versions
> are incomparably more complex than that. They involve moving data
> within and between tables, modifying this data in the process,
> intermingling DDL and DML statements, and is generally impossible to
> automate.
>
> In my work as a consultant, I've spent a fair amount of time on
> various
> projects trying to automate or at least improve tedious database
> schema
> upgrade process between the code versions. My conclusion is that
full
> generic (and most importantly - working) automation is impossible.
If
> you have a production DB with lots of data, expect doing manual SQL
> coding. Somebody please prove me wrong on that!
>
> On a more optimistic note, we can still *greatly* improve this
> experience by providing a dumb generated "SQL patch" that compares
> current DB state and current Cayenne DataMap, and generates "create
> table/add column/drop column" statements without regards to the
actual
> data migration path... It can be saved and later manually customized
> for the actual DB run. That's where we are heading.
>
> A bit unrelated, I guess I should follow the suggestion made
privately
> by Michael Gentry and set up a Wiki for Cayenne, so that such
> discussions could leave a trail and an actual implementation
roadmap.
>
> Thanks
> Andrus
>
> On Jul 23, 2004, at 5:20 PM, Jonathan Carlson wrote:
>> I hope I didn't sound too critical in my note below. Cayenne is a
>> very easy to use tool and I'm sure it will only get easier to use
as
>> time goes on. My thinking that Cayenne might make this really easy
>> for me is a testament to how easy it is already.
>>
>> As I thought about it I realized that adding a column could be a
>> difficult thing for Cayenne to manage if the column was mandatory
>> because Cayenne does not yet allow a default value specification.
I'm
>> hoping that specifying a default value will be a new Cayenne
feature
>> soon since it seems like a useful feature and all databases (I
think)
>> support it at some level.
>>
>> Are these features "on the horizon" or "down the road further"?
>> (default column specification, and smarter schema evolution)
>>
>> Thanks,
>>
>> Jonathan
>>
>>
>>>>> "Jonathan Carlson" <Jonathan.Carlso..atun.com> 2004-07-23
1:37:07
>>>>> PM >>>
>> I did a quick test to see how Cayenne handled adding a new field
when
>> there was data already in the table. I was secretly hoping that
>> Cayenne would do the right thing and generate an add column
statement
>> rather than a create table statement, but it didn't.
>>
>> To top it off, clicking on the "Generate" button resulted in a
>> "Schema
>> Generation Complete" message as if the db schema now matched what
was
>> in Cayenne, which it didn't because no column was added.
>>
>> Is this a bug or just a missing feature? What's the best way for me
>> to handle this situation? Add columns manually?
>>
>> Thanks in advance!
>>
>> Jonathan
>>
>>
>>
>>
>
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________
______________________________________________________________________
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.
Katun Corporation -- www.katun.com
_____________________________________________________________________
This archive was generated by hypermail 2.0.0 : Wed Jan 25 2006 - 14:59:56 EST