Учебное пособие по Golang: как перенести базу данных

Учебное пособие по 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.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE