Архитектура
База | DATABASE Физическое объединение таблиц.
Схема - логическое объединение таблиц в базе данных. Исходя из статьи по ссылке, в схемах, по-хорошему, хранятся таблицы одной направленности.
Табличное пространство | CREATE TABLESPACE - позволяют администраторам организовать логику размещения файлов объектов базы данных в файловой системе. Короче, это как папки в линуксе. При создании кластера у нас есть две дефолтные папки: pg_default и pg_global - там можно CREATE DATABSE и дальше CREATE TABLE. Не хотим это делать в дефолтных папках - создаем свою и делаем там. Существует ряд зависимостей при манипуляциях с данными из табличных пространств - заморочки с удалением, например. Но это уже на практике будет понятно.
Строка подключения - интерактивный терминал PostgreSQL
Индекс - это структура данных, которая позволяет базе данных быстрее и эффективнее находить и извлекать информацию из таблиц, a-ka оглавление в книгах.
Без индексов, базе данных приходится выполнять полный сканирование таблицы (sequential scan), чтобы найти нужные данные. Это может быть медленным и ресурсоемким процессом, особенно для больших таблиц. Индексы позволяют существенно ускорить поиск, так как они предоставляют структуру данных, которая указывает на местоположение нужной информации в таблице. ПЕРЕЧИСЛИТЬ ВИДЫ ИНДЕКСОВ.
План запроса - нашел слово EXPLAIN
Партиционирование – это метод разделения больших (исходя из количества записей, а не столбцов) таблиц на много маленьких. И желательно, чтобы это происходило прозрачным для приложения способом.
Выборки
SELECT- оператор выборки
JOIN - оператор соединения таблиц
COUNT - функция, считающая кол-во значений в столбце
GROUP BY - функция группировки. Схлопывает повторные значения в одну строку, работает с агрегирующими функциями. Предоставляет возможность сортировки полученных значений с помощью слова HAVING. Не стакается с WHERE. Группировать можно по столбцу, к которому не применена функция.
AS DATE - УЗНАТЬ
Больше меньше равно - >, <, =, >=, =<, <>, !=
Подзапросы - обычно это селект из селекта с условием WHERE
Работа с датами и строками (вхождение строк, символов и т.д.) - У ХОХЛОВА
Условия в селектах по дате, по ID, по значению поля и т.д. - У ХОХЛОВА
DDL - изменение структуры БД
UPDATE - изменить строки таблицы
DELETE - удалить данные из таблицы
TRUNCATE - опустошить (удалить) таблицу без сканирования, т.е. быстро
INSERT - добавить строки в таблицу
DML - управление данными в БД (вывод данных в том числе)
CREATE TABLE - создать таблицу
INDEX - объявить индекс в таблице, делается через CREATE INDEX
FUNCTION - объявить функцию (самописную)
VACUUM - провести сборку мусора и, возможно, проанализировать базу данных (через доп. команду)
GRANT - определить права доступа. В PG пользователи и группы пользователей упрощены до сущности ролей.
Возможные права - это знакомые уже SELECT/INSERT/CREATE и тд, а также включение ролей в другие роли (!). Исходя из этого, есть GRANT что-то ON таблица, а есть GRANT роль TO др. роли.
Справочно:
БД Реляционные - данные хранятся в таблицах с прямыми зависимостями друг от друга
БД Нереляционные - NoSQL БД без нужды знания SQL. Данные хранятся в формате ключ:значение. Работают быстрее классических реляционных БД.
Нереляционные также делятся на:
1. Колоночные БД - key:value с большим кол-вом значений
2. БДД (базы данных док-ов) - key:value в большом неструктурированном кол-ве, изменение которых не затронут соседние значения. Возможно, хранит данные в форматах JSON, XML YAML и тд: MongoDB, CouchDB
3. Графовые БД - уточнить определение
4. Поисковые БД, как ELK
5. БД временных рядов, как Prometheus
6. Многомодульные БД, как Redis
ссылка с видео