"The past year I've been learning a lot of Scala and I'm currently working on a new project using Scala. I use LiquiBase, which is a database-independent library for tracking, managing and applying database changes.
I'm also using the simple-build-tool (SBT) for my project. So I've put together a little SBT plug-in for running LiquiBase maintenance commands (update, rollback, …) from within SBT.
For example, whenever I want to apply new database changes with LiquiBase I can now simply run sbt liquibase-update which sets up a new instance of LiquiBase and executes the LiquiBase update command which migrates my database to the latest version.
At the moment the plug-in supports the following commands: liquibase-update, liquibase-drop, liquibase-tag, liquibase-rollback and liquibase-validate.
What are the benefits of using the plug-in and not just the LiquiBase CLI?
* no download/install of LiquiBase
* classpath handled by SBT
* no need to provide a big list of parameters or writing shell scripts
The plug-in is called liquibase-sbt-plugin and you can find it here on GitHub. Feel free to use it or fork it and suggest changes.
I'm still relatively new to Scala and especially SBT so any remarks are very welcome."
t just works - Migrate from any version (incl. an empty database) to the latest version of the schema
Automatic migration on startup - Ship migrations together with the application and run them automatically on startup
Convention Over Configuration - Classpath Scanning to automatically discover Sql and Java migrations
Plain Old Sql - SQL scripts for regular migrations (incl. placeholder replacement). No proprietary XML formats, no lock-in.
No limits - Java classes for advanced migrations
Highly reliable - Safe for cluster environments (Multiple machines can migrate in parallel)
Maven support - Maven plugin for migrating manually
Fail fast - Inconsistent database or failed migration prevents app from starting.
Schema Clean - Drop all tables, views, triggers, ... from a schema without dropping the schema itself
Teiid is a data virtualization system that allows applications to use data from multiple, heterogenous data stores.
Teiid is comprised of tools, components and services for creating and executing bi-directional data services. Through abstraction and federation, data is accessed and integrated in real-time across distributed data sources without copying or otherwise moving data from its system of record.