Учебное пособие по Golang: как перенести базу данных
9 апреля 2022 г.Какими способами и как я это делаю как Rubyist
Golang набирает популярность с момента своего появления. Это простой язык с производительностью, не уступающей низкоуровневому языку, такому как C++. Принятие Golang в веб-разработке стремительно растет.
Я начал свой путь веб-разработки с Ruby on Rails. Я влюбился в Active Record. Я был поражен, увидев ORM, который был таким простым в использовании. Он прекрасно справляется с миграциями баз данных, делая их частью вашего кода.
Как выполняется миграция БД в Rails (с Active Record)
Честно говоря, Rails и Active Record сделали меня ленивым. Active Record и ее миграция БД были настолько просты в использовании, что я перестал напрямую писать SQL-запросы.
Чтобы создать таблицу, вы создаете новую миграцию, которая выглядит следующим образом:
Таблицу достаточно легко изменить, написав аналогичную миграцию.
Помимо миграций, Active Record имеет самые простые модели взаимодействия с базой данных. Вам не нужно указывать каждый столбец в модели, он берет имена столбцов из таблицы.
ORM Голанга
Есть много библиотек ORM для Go, например gorm, xorm, [sqlboiler] (https://github.com/volatiletech/sqlboiler), реформа и многие другие. GORM — самая популярная ORM для Go. Он имеет много общего с Active Record.
Как обрабатывать миграции БД с помощью GORM
В отличие от Active Record, вы указываете структуру в модели, которая определяет таблицу. например таблицу blogs можно указать так —
Просто указание структуры не вносит изменений в базу данных. Вам нужно явно вызвать метод AutoMigrate для каждой модели, чтобы выполнить миграцию БД.
Что произойдет, если вы измените структуру?
- Добавить столбец
- Изменение таблицы — это не просто изменение таблицы. Если вы добавите столбец в таблицу, вам просто нужно добавить столбец в структуру. Когда приложение запускается, оно добавляет столбец в таблицу.
- Удалить столбец
- Когда вы удаляете столбец из структуры, миграция данных не удаляет столбец из таблицы. Чтобы удалить столбец, вам нужно явно написать такой код:
Другие сценарии
Существуют способы обработки таких сценариев, как —
- Создание таблицы
- Бросаем стол
- Переименование таблицы
- Внесение изменений в столбец
- Индексы
Для получения более подробной информации ознакомьтесь с этой [документацией] (https://gorm.io/docs/migration.html).
Заключительные слова
Нет правильного или неправильного способа сделать это. У разработчиков есть свои предпочтения и навыки, которые помогают им принимать такие решения.
Что я предпочитаю?
Хотя функции переноса данных GORM способны справиться с любым сценарием, существует кривая обучения. И если вы используете автоматическую миграцию, вам нужно знать, как она работает.
По этим причинам я предпочитаю писать операторы SQL для управления схемой БД. Я знаю, что это старая школа, но мне это легко.
В одном из проектов, который является потомком проекта Rails, я также использую миграции Active Record для поддержки схемы БД проекта Golang.
Оригинал