Migration là gì?
Migration là một cơ chế cho phép quản lý các thay đổi cấu trúc của cơ sở dữ liệu thông qua các file chứa câu lệnh định nghĩa (SQL hoặc code). Như là tạo bảng mới, thêm, sửa, xóa, cột, thêm index, tạo quan hệ giữa bảng
Ưu điểm
-
Đồng bộ: Mọi môi trường cùng một schema.
-
Có lịch sử: Dễ dàng xem thay đổi ai tạo, tạo khi nào.
-
Rollback nhanh: Khắc phục lỗi nhanh chóng.
-
An toàn hơn: Không cần chạy SQL thủ công trực tiếp trên production.
Cấu trúc file Migration (Goose)
-- +goose Up
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
-- +goose Down
DROP TABLE users;
Cách chạy
1 .Tạo migration
goose create create_users_table sql
2. chạy migration
goose postgres "postgres://user:pass@localhost:5432/dbname?sslmode=disable" up
3. cách rollback
goose postgres "postgres://user:pass@localhost:5432/dbname?sslmode=disable" down
Bài viết khác
Return first
Return first là gì Khi trong hàm gặp một trường hợp đặc biệt (như lỗi, dữ liệu không hợp lệ…), ta trả về kết quả ngay lập tức và kết thúc hàm. Lợi ích khi dùng Return First trong Go Code gọn, dễ đọc Ít phải thụt dòng. Đọc từ trên xuống dưới như một […]
RabbitMQ
RabbitMQ là gì ? RabbitMQ là một hệ thống Message Broker, cho phép các thành phần trong hệ thống giao tiếp với nhau bằng cách gửi và nhận các tin nhắn thông qua các hàng đợi. Các thành phần chính trong RabbitMQ Producer là nơi gửi tin nhắn vào RabbitMQ (có thể là một api […]
Naming convention
Naming convention là gì? Naming Convention – là một tập hợp các tiêu chuẩn được quy định sẵn dùng để biểu thị cho các thành phần: tên biến, tên hàm, kiểu dữ liệu,… Phong cách đặt tên phổ biến 1. Camel Case Camel Case là kiểu đặt tên con lạc đà. Quy tắc: Chữ cái đầu tiên được viết […]
Seed Data(Goose)
Seed Data là gì? Seed data là tập hợp các cậu lệnh sql hoặc đoạn code để đưa dữ liệu ban đầu vào CSDL. Mục đích Khởi tạo hệ thống với dữ liệu mặc định. Tạo dữ liệu test nhanh chóng. Hỗ trợ kiểm thử tự động (unit test, integration test). Tạo môi trường demo cho […]
Ngôn ngữ lập trình Golang
Golang là gì? Go (hay còn gọi là Golang) là một ngôn ngữ lập trình được thiết kế dựa trên tư duy lập trình hệ thống. Go được phát triển bởi Robert Griesemer, Rob Pike và Ken Thompson tại Google vào năm 2007. Điểm mạnh của Go là bộ thu gom rác và hỗ trợ […]
Tìm hiểu Git và GitHub
Git là gì? Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS), nó là một trong những hệ thống quản lý phiên bản phân tán phổ biến nhất hiện nay. Git cung cấp cho mỗi lập trình viên kho lưu trữ (repository) riêng chứa toàn bộ lịch sử thay đổi. Version Control System […]