golangのお勉強6
PostgreSQLに接続するためのライブラリ
database/sql
標準
jmoiron/sqlx
構造体を保存
jinzhu/gorm
メジャーなORM library
多機能でRails(CakePHP)的なイメージ
ngorm/ngorm
gormのフォーク。拡張gormと呼ばれるものかな。。
Masterminds/squirrel
SQLを書く時便利
go-gorp/gorp
シンプルなORM
go-xorm/xorm
けっこうスターの数が多い。
gormよりは自由度が高くアソシエーション周りの機能を持たないっぽい。
naoina/genmai
ORMではなくクエリーベース。
標準のオブジェクトを持っていてよびだせるらしい。
レポジトリのドキュメントに一通り例があってわかりやすいかも。
マイグレーションツール
docker、postgresql、を想定してマイグレーションツール。
コンテナを生成するときにマイグレーションを実行して初期化したりできるといいなと。
普通に使うならgoose
、awsとか考えるならmattes/migrate
とかなのかな。
対応DBMSが多くて特化した対応が微妙ということがないかとか勘ぐりつつ
mattes/migrate
をつかってみるか。
参考
-
差分や構造を意識した手法
Goでのmigrationについて ~ ddl-maker × schemalex ~ - KAYAC engineers' blog
http://techblog.kayac.com/2016/12/19/134515 -
最近のまとめ記事
Go製マイグレーションツールまとめ - Qiita
http://qiita.com/nownabe/items/1acce9f6b9f14f74c965#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86 -
候補
mattes/migrate: Database migrations. CLI and Golang library.
https://github.com/mattes/migraterubenv/sql-migrate: SQL schema migration tool for Go.
https://github.com/rubenv/sql-migrateGolang製DBマイグレーションツールgoose + MySQLを試してみた - Qiita
http://qiita.com/K_ichi/items/b9362e3a3c5688e494e2 -
驚くばかり
dhamaniasad/awesome-postgres: A curated list of awesome PostgreSQL software, libraries, tools and resources, inspired by awesome-mysql
https://github.com/dhamaniasad/awesome-postgres#utilities -
公式のライブラリのリンク
Projects · golang/go Wiki
https://github.com/golang/go/wiki/Projects -
最近の比較
Go schema migration tools - Povilas Versockas
https://povilasv.me/go-schema-migration-tools/
mattes/migrateを使って見る
DBMSごとに接続のインターフェイスが違う。。
調べて行くと、postgreのドライバとしてはgithub.com/lib/pq
を使っているみたい。
なんか、この辺り安定してない感じがするけどこれになれていくのがいいのかな。
昔perlを手探りしていた頃を思い出すわー。
接続さえしてしまえば、いろいろ共通の記述でできるのかな。。若干不安。
当面はpostgreにしかつかわないはずだけど。
Advanced Usage · GORM Guide
http://jinzhu.me/gorm/advanced.html#sql-builder
pq - GoDoc
http://godoc.org/github.com/lib/pq
gormのマイグレーション機能
サンプルコードがあるので実行してみた
構造体の定義がDB定義になっていてマイグレーションしてくれる
dropTableしなければ定義を毎回構造体に合わせて変更してくれるみたい。。
シンプルなデプロイをするならありなのか。。
なるほど、コードとは一体だと考えていいならこの方が整合性があるかしら。。
「コードファースト」という考え方なのかな。。
ActiveRecord的ともいうのかな。。
Go言語でのORMを色々検討してみた - タオルケット体操
http://hachibeechan.hateblo.jp/entry/2015/03/25/Go%E8%A8%80%E8%AA%9E%E3%81%A7%E3%81%AEORM%E3%82%92%E8%89%B2%E3%80%85%E6%A4%9C%E8%A8%8E%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F
genmaiがオススメってお話なのかな
プロトタイピングするときとかはマイグレーションよりも小回りが利きそうな気がする。。
gormの使い方
構造体の定義のこめんとでjsonとgormの両方の項目について記述してる。なるほど。
Go言語からORMマッパーをつかってMysqlを操作する - OngaLog
http://onga-tec.hatenadiary.jp/entry/2016/08/09/030319
jsonデータ型の扱い。
GolangでPostgreSQLのJSONデータ型を読み書きする - Qiita
http://qiita.com/qube81/items/8d4a766280c25d0ef16c
gorpってなんだ
メジャーでシンプルなormパッケージという印象。
xormについても特徴の説明がわかりやすい
Go言語でORマップ - Qiita
http://qiita.com/awakia/items/d3f216cbb7aa14a2eca1
xorm
gormが無難だけどxormも悪くなさそう。
ngormというフォークに言及あり。
golang + mysql の ORM を色々調べた感想とおすすめ - pospomeのプログラミング日記
http://pospome.hatenablog.com/entry/2017/02/18/172307
genmaiの拡張
Genmai と Gorp プチ比較 + おまけ - Qiita
http://qiita.com/jyagaimo_qiita_/items/707b53722b42e8c6eae9
接続情報
GORMの接続情報をtomlで設定できるようにした · polidog lab++
https://polidog.jp/2016/08/09/golang_gorm1/
結局
一旦、gormをつかってみて考えよう。
マイグレーションをどうするか。。
プロトタイピングではgormで、区切りでmattes/migrateとか?
合わせてメモリ上のsqliteで?sql.Open("sqlite3", ":memory:")
Author And Source
この問題について(golangのお勉強6), 我々は、より多くの情報をここで見つけました https://qiita.com/bonk/items/277773265250c42f3fd8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .