Coder Social home page Coder Social logo

addendum's Introduction

ADDENDUM

Ordered database schema migrations.

    Home: http://bigeasy.github.com/addendum

    Source: http://github.com/bigeasy/addendum/tree/master
    Documentation: http://wiki.github.com/bigeasy/addendum

    Issues and Tasks: http://bigeasy.lighthouseapp.com/projects/28792

    Contact: [email protected]

MOTIVATION

Addendum was written after I was tripped up by automatic schema updates via JPA
and Hiberate. The automatic updates were not magic enough to implement all of
the changes I wanted to see in my underlying schema.

Additionally, there was a time when changes to file system directory structures
accompanied a schema update. I wanted to run some Java code to shuffle the
files, based on the changes to the schema.

Automatic building of schemas by Hibernate created more problems than it solved.
Addendum builds a database from a bootstrap point, adding changes one after
another.

Assuming a linear progression of changes, updates and not merges, you can deploy
an application and have it patch the schema from where ever it last left off, or
you can deploy an application for the first time, and have it build a database
by applying patches from zero.

Addendum delegates DDL to a dialect library that will generate SQL DDL based on
a domain-specific language. You use the DSL to describe the tables that back the
object in your application using either Java types or abstracted SQL types. The
dialect will map your type definitions to the specific SQL type definitions of
the underlying database.

LIMITATIONS

Unlike Ruby on Rails migrations, Addendum provides no facility for undoing an
addendum. That adds a lot of code for something that never really works. If you
want to be able to reset the database to a previous state, make sure to create a
backup using the backup facilities of RDMS.

There are helper methods for generating SQL in the DSL, but they do not ensure
the type safety of the SQL statements. Addendum will not trap the use of the DSL
to generate an insert statement to populate an SQL NUMBER column with a 'Hello,
World!' string.

addendum's People

Contributors

bigeasy avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.