Перейти к основному содержимому

Теория по Базам данных

Представьте, что базы данных - это фундамент дома для ваших AI Агентов. Здесь мы разберём, как проектировать "хранилища памяти" для нейросетей, чтобы ваши системы могли быстро находить нужные данные, как библиотекарь в гигантской книжной вселенной. Вы научитесь выбирать между SQL и NoSQL (словно подбирать ключи к разным сейфам), оптимизировать запросы (как прокладывать скоростные магистрали для данных) и обеспечивать надёжность транзакций - именно эти навыки превратят вас из новичка в архитектора промышленных AI систем.

Инструкция к Ask AI
инструкция

Так как данные темы не меняются со временем, лучше всего вам изучать их с персональным преподавателем - ChatGPT.

Процесс изучения должен быть следующим:

  • вы составляете системный промпт для ChatGPT (шаблоны), где описываете свой бэкграунд, предпочтения, уровень подробности объяснений и т.д.
  • копируете тему из списка (тройной клик), и просите ChatGPT объяснить вам эту тему
  • при желании углубиться, задаете уточняющие вопросы

На данный момент это самый удобный способ изучения основ. Кроме концептов, вы можете изучать дополнительные материалы в секциях Gold, Silver, Extra.

  1. Gold - стоит обязательно изучить до общения с ChatGPT
  2. Ask AI - задавайте вопросы по каждой малознакомой теме
  3. Silver - второстепенные материалы
  4. Extra - углубленные темы

Golden

Merion Academy

bytebyte db playlist - https://youtube.com/playlist?list=PLCRMIe5FDPsdnSszazqVIQFh99t1ExH19&si=3tVd_dGWxmtQ2pQo

Fireship

Ask AI

Основные концепции баз данных

  1. Архитектура баз данных: основные компоненты и термины (Фундамент)
  2. Реляционные БД: от нормализации до связей между таблицами
  3. Ключи в БД: проектирование связей и целостности данных
  4. CRUD-операции: паттерны работы с данными (Практикум)

SQL и работа с данными

  1. SQL: синтаксис для повседневных задач (Шпаргалка)
  2. SELECT-запросы: продвинутые техники фильтрации
  3. JOIN-операции: визуализация связей между таблицами
  4. Транзакции: написание атомарных операций

NoSQL и современные подходы к хранению данных

  1. SQL vs NoSQL: сравнение моделей данных

    SQL vs NoSQL: сравнение моделей данных
  2. Документоориентированные БД: MongoDB и работа с JSON-данными

  3. ACID свойства: транзакции в базах данных

    ACID свойства: транзакции в базах данных

Оптимизация и практические аспекты

  1. Индексы в базах данных: принципы работы и оптимизация

  2. ORM: преимущества и недостатки

  3. Связи в базах данных: один-к-одному, один-ко-многим, многие-ко-многим

  4. Пагинация: offset vs cursor-based подходы

    Пагинация: offset vs cursor-based подходы
  5. Ключ-значение хранилища: Redis и кеширование (Обзорно)

  6. Графовые БД: основы работы с Neo4j (Концепт)

Silver

I replaced my entire tech stack with Postgres...

Exercises

Упражнение: Оптимизация медленных запросов в PostgreSQL

Ситуация: У нас есть таблица user_actions в PostgreSQL с 10 млн записей:

CREATE TABLE user_actions (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
action_type VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
metadata JSONB
);

Проблема: Следующий запрос выполняется 2.8 секунды:

SELECT * FROM user_actions 
WHERE user_id = 123
AND action_type = 'search'
ORDER BY created_at DESC
LIMIT 100;

Задание:

  1. Объясните, почему запрос стал медленным
  2. Предложите решение через индексы
  3. Напишите SQL для создания индекса
  4. Объясните trade-offs вашего решения
Ответ
  1. Причина медленной работы: Отсутствие подходящего индекса для условий WHERE и ORDER BY
  2. Решение: Создать составной индекс, покрыващий фильтрацию и сортировку
  3. SQL:
CREATE INDEX idx_user_actions_composite ON user_actions 
(user_id, action_type, created_at DESC);
  1. Trade-offs:
  • Увеличение размера БД на ~15-20%
  • Незначительное замедление операций INSERT/UPDATE
  • Рекомендуется использовать CONCURRENTLY для создания в продакшене:
CREATE INDEX CONCURRENTLY idx_user_actions_composite ...;