6. Плюсы row-based
● Эффективная выборка полных кортежей
● Эффективное обновление данных
● Предсказуемое время выполнения
● Хорошее кеширование данных
10.4.10
7. Плюсы column-based
● Эффективная выборка частичных кортежей
● Вертикальное шардирование данных
● Эффективное расширение кортежей
● Большое число оптимизаций
10.4.10
8. Реализации
Строчные Колоночные
● PostgreSQL ● SyBase IQ
● MySQL ● Monetdb
● MS SQL
● Oracle
10.4.10
9. Нереляционные аспекты
●
Таблицы (table scan)
● Расширения (extension)
● Индексы (index scan / index join)
● Хеш-контейнеры (hash index / hash join)
10.4.10
10. Таблицы
● Последовательная выборка из таблиц
● Выбор из таблицы по региону
● Кластерный индекс
10.4.10
11. Расширение (extension)
● «Протаскиваем» Row ID вместо данных
● По Row ID расширяем кортеж
● Расширяем лишь когда это необходимо
● Расширять можно несколько раз
10.4.10
12. Индексы
● B-Tree — большие объемы данных
● R-Tree — геоинформация
● GIN — полнотекстовой поиск
● GiST — поиск по произвольному критерию
● Hash — linear hashing
10.4.10
14. Декомпозиция запросов
● Сложные запросы разбиваются на простые
● Простые запросы требуют один контейнер
● Простых запросов конечное число
● Оптимизатор это делает автоматически
10.4.10
15. Параллельное выполнение
● CPU, RAM, IO — ключевая тройка
● Ресурсы независимы
● Управление ресурсами — задача оптимизатора
● Простые запросы выполняются без блокировок
10.4.10
16. Общие данные
● Большинство запросов имеют одинаковый план
● Контейнеры используются совместно
● Кеш запросов
● Кеш данных
● Статистика
● Гистограммы
10.4.10
17. Переупорядочевание
● В запросах есть зависимость по данным
● Порядок выполнения выбирает СУБД
● Ресурсы не должны простаивать
● Минимальное время отклика
● Минимальное время выполнения
10.4.10
18. Выводы
● В SQL базах доступны полноценные запросы
● Простые запросы работают сравнимое время
● Сложные запросы бьются на простые
● СУБД эффективно управляет ресурсами
● Запросы работают параллельно
10.4.10