Возвращение к основам: Написание приложения с помощью Go и PostgreSQL с pgx

Прочитав это руководство, вы узнаете, как использовать PostgreSQL с языком программирования Go с помощью драйвера и набора инструментов pgx очень продуктивным образом.
Кроме того, с помощью предоставленного исходного кода вы сможете научиться писать эффективные и надежные модульные и интеграционные тесты, готовые к запуску локально или в среде непрерывной интеграции, такой как GitHub Actions.
Используйте оглавление, чтобы перейти к определенной части этого длинного поста.
Не забудьте ознакомиться с сопутствующим репозиторием github.com/henvic/pgxtutorial.

Контекст

PostgreSQL, также известный как Postgres, является расширяемой многофункциональной объектно-реляционной системой управления базами данных, которая почти на 100% соответствует стандартам SQL и выпускается как программное обеспечение с открытым исходным кодом под разрешительной лицензией.

Большая часть содержания этого учебника основана на опыте, который я приобрел, работая в HATCH Studio, хотя мне не хватило чуть меньше десяти месяцев.
Мои первые задания были связаны с улучшением некоторых структур данных, которые мы использовали внутри компании, и привели к обсуждению в команде вопроса о переходе от базы данных на основе документов к более традиционной реляционной базе данных перед лицом некоторых проблем.
Затем мы провели мозговой штурм, на котором собрали нашу команду бэкенда, чтобы проанализировать ситуацию и обсудить варианты. У меня уже был небольшой опыт использования PostgreSQL с pgx для домашнего проекта, и я был рад обнаружить, что остальные члены команды также считают PostgreSQL отличным выбором для удовлетворения наших потребностей: большой опыт разработчиков, производительность, надежность и масштабируемость.

Для нашей поисковой инфраструктуры мы начали использовать Amazon OpenSearch Service.
Мы слушаем изменения в базе данных PostgreSQL через протокол логической потоковой репликации и получаем данные в поисковую систему OpenSearch/Elasticsearch через легкий коннектор, созданный собственными силами.

Это работает аналогично подключению Apache Kafka, но проще в использовании и позволяет нам двигаться быстрее, не ломая вещи: запуск интеграционных тестов на машине разработчика занимает всего несколько секунд: большая часть из которых — перебор time.Sleep(), так что мы никогда не тратим время на flaky тесты, вызванные возможными характеристиками согласованности поисковой системы.
Это решение будет представлено не сейчас, а в будущем.

tl;dr

Чтобы поиграть с ним, установите Go на свою систему.
Вам нужно будет подключиться к базе данных PostgreSQL.
Вы можете проверить, работает ли соединение, вызвав psql.

# Clone my repository with any of the following commands:
$ gh repo clone henvic/pgxtutorial
$ git clone https://github.com/henvic/pgxtutorial.git
$ git clone git@github.com:henvic/pgxtutorial.git
# then:
$ cd pgxtutorial
# Create a database
$ psql -c "CREATE DATABASE pgxtutorial;"
# Set the environment variable PGDATABASE
$ export PGDATABASE=pgxtutorial
# Run migrations
$ tern migrate -m ./migrations
# Run all tests passing INTEGRATION_TESTDB explicitly
$ INTEGRATION_TESTDB=true go test -v ./...
# Execute application
$ go run ./cmd/pgxtutorial
2021/11/22 07:21:21 HTTP server listening at localhost:8080
2021/11/22 07:21:21 gRPC server listening at 127.0.0.1:8082
Войдите в полноэкранный режим Выход из полноэкранного режима

Продолжение статьи в блоге на моем сайте по адресу henvic.dev/posts/go-postgres.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *