Database versioning in golang

18
Database Versioning In Golang

Transcript of Database versioning in golang

Page 1: Database versioning in golang

Database VersioningIn Golang

Page 2: Database versioning in golang

- Missing changes.- Code’s version and database’s version.- Missing setting’s versioning.

Problem

Page 3: Database versioning in golang

What way we have

Communication

Page 4: Database versioning in golang

Beego migration

Beego migration

Page 5: Database versioning in golang

Beego migration

Beego migration

- Miss version

- Can’t delete or edit

- Miss default setting

- Depend on beego framework

Page 6: Database versioning in golang

Good database versioning tool

Page 7: Database versioning in golang

mattes/migratehttps://github.com/mattes/migrate

- Versioning database.- Support default setting records.- Support rollback and change version.- Independence tool.

Page 8: Database versioning in golang

mattes/migrateSupported databases: - Postgresql - Mysql - Sqlite - CassandraAllows custom to add unsupported databases.

Page 9: Database versioning in golang

step 1: Create simple project:go get github.com/ledongthuc/simple-golang-app

cd $GOPATH/src/github.com/ledongthuc/simple-golang-app/

Page 10: Database versioning in golang

step 1: Create simple project:

Page 11: Database versioning in golang

step 2: Add mattes/migrate library

go get github.com/mattes/migrate

https://gist.github.com/ledongthuc/f452eb0d6dfe97d0b4de

Page 12: Database versioning in golang

step 2: Add mattes/migrate library

Add folder sql

Page 13: Database versioning in golang

Using with command line

Page 14: Database versioning in golang

1 - up all migration

Page 15: Database versioning in golang

2 - down all migration

Page 16: Database versioning in golang

3 - Redo an action

Page 17: Database versioning in golang

4 - Reset database

Page 18: Database versioning in golang

5 - Go to specific version