Теория по Базам данных
Представьте, что базы данных - это фундамент дома для ваших AI Агентов. Здесь мы разберём, как проектировать "хранилища памяти" для нейросетей, чтобы ваши системы могли быстро находить нужные данные, как библиотекарь в гигантской книжной вселенной. Вы научитесь выбирать между SQL и NoSQL (словно подбирать ключи к разным сейфам), оптимизировать запросы (как прокладывать скоростные магистрали для данных) и обеспечивать надёжность транзакций - именно эти навыки превратят вас из новичка в архитектора промышленных AI систем.
Инструкция к Ask AI
Так как данные темы не меняются со временем, лучше всего вам изучать их с персональным преподавателем - ChatGPT.
Процесс изучения должен быть следующим:
- вы составляете системный промпт для ChatGPT (шаблоны), где описываете свой бэкграунд, предпочтения, уровень подробности объяснений и т.д.
- копируете тему из списка (тройной клик), и просите ChatGPT объяснить вам эту тему
- при желании углубиться, задаете уточняющие вопросы
На данный момент это самый удобный способ изучения основ. Кроме концептов, вы можете изучать дополнительные материалы в секциях Gold, Silver, Extra.
- Gold - стоит обязательно изучить до общения с ChatGPT
- Ask AI - задавайте вопросы по каждой малознакомой теме
- Silver - второстепенные материалы
- Extra - углубленные темы
Golden
Merion Academy
bytebyte db playlist - https://youtube.com/playlist?list=PLCRMIe5FDPsdnSszazqVIQFh99t1ExH19&si=3tVd_dGWxmtQ2pQo
Fireship
Ask AI
Основные концепции баз данных
- Архитектура баз данных: основные компоненты и термины (Фундамент)
- Реляционные БД: от нормализации до связей между таблицами
- Ключи в БД: проектирование связей и целостности данных
- CRUD-операции: паттерны работы с данными (Практикум)
SQL и работа с данными
- SQL: синтаксис для повседневных задач (Шпаргалка)
- SELECT-запросы: продвинутые техники фильтрации
- JOIN-операции: визуализация связей между таблицами
- Транзакции: написание атомарных операций
NoSQL и современные подходы к хранению данных
-
SQL vs NoSQL: сравнение моделей данных
SQL vs NoSQL: сравнение моделей данных
-
Документоориентированные БД: MongoDB и работа с JSON-данными
-
ACID свойства: транзакции в базах данных
ACID свойства: транзакции в базах данных
Оптимизация и практические аспекты
-
Индексы в базах данных: принципы работы и оптимизация
-
ORM: преимущества и недостатки
-
Связи в базах данных: один-к-одному, один-ко-многим, многие-ко-многим
-
Пагинация: offset vs cursor-based подходы
Пагинация: offset vs cursor-based подходы
-
Ключ-значение хранилища: Redis и кеширование (Обзорно)
-
Графовые БД: основы работы с 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;
Задание:
- Объясните, почему запрос стал медленным
- Предложите решение через индексы
- Напишите SQL для создания индекса
- Объясните trade-offs вашего решения
Ответ
- Причина медленной работы: Отсутствие подходящего индекса для условий WHERE и ORDER BY
- Решение: Создать составной индекс, покрыващий фильтрацию и сортировку
- SQL:
CREATE INDEX idx_user_actions_composite ON user_actions
(user_id, action_type, created_at DESC);
- Trade-offs:
- Увеличение размера БД на ~15-20%
- Незначительное замедление операций INSERT/UPDATE
- Рекомендуется использовать CONCURRENTLY для создания в продакшене:
CREATE INDEX CONCURRENTLY idx_user_actions_composite ...;