Как разрабатываешь архитектуру БД

«Как разрабатываешь архитектуру БД» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При разработке архитектуры БД в Go я придерживаюсь подхода Domain-Driven Design (DDD) с акцентом на:

  1. Анализ требований – выделяю сущности, их связи и бизнес-правила
  2. Нормализация – минимум до 3NF, но иногда допускаю денормализацию для производительности
  3. Миграции – использую инструменты вроде Goose или встроенный migrate пакет

Пример структуры для сервиса блога:

type Post struct {
    ID        uuid.UUID `db:"id"`
    Title     string    `db:"title"`
    Content   string    `db:"content"`
    AuthorID  uuid.UUID `db:"author_id"`
    CreatedAt time.Time `db:"created_at"`
}

type Comment struct {
    ID        uuid.UUID `db:"id"`
    PostID    uuid.UUID `db:"post_id"`
    AuthorID  uuid.UUID `db:"author_id"`
    Text      string    `db:"text"`
    CreatedAt time.Time `db:"created_at"`
}

Ключевые принципы:

  • Четкие границы агрегатов
  • Индексы для частых запросов
  • Подготовка к шардингу с первых дней