Итератор
Главная/Глоссарий

Глоссарий

380 терминов с русским и английским названием. Каждое определение написано так, чтобы его можно было произнести вслух за минуту — это неплохая проверка собственного понимания.

А

Амортизированная сложность

amortized complexity

Средняя стоимость одной операции в длинной последовательности операций. Позволяет честно сказать, что добавление в динамический массив стоит O(1), хотя отдельное добавление иногда копирует весь массив за O(n).

Разбор: «Амортизированная сложность на пальцах»

Асимптотическая сложность

asymptotic complexity

Поведение времени или памяти алгоритма при росте размера входа до бесконечности. Отвечает на вопрос «как быстро растёт», а не «сколько миллисекунд»: константы и младшие члены отбрасываются.

Атомарность

atomicity

Свойство операции выполняться целиком или не выполняться вовсе. Первая буква в ACID. Не следует путать с изолированностью: атомарная операция может быть видна другим в промежуточном состоянии, если уровень изоляции это допускает.

Б

B-дерево

B-tree

Сбалансированное дерево с высокой степенью ветвления, в котором все листья на одной глубине. Основная структура индексов в реляционных базах: высокая степень ветвления означает мало обращений к диску на поиск.

Блокирующий ввод-вывод

blocking I/O

Режим, при котором вызов чтения или записи не возвращает управление, пока операция не завершится. Поток простаивает. Противоположность — неблокирующий ввод-вывод, где вызов возвращается немедленно с признаком готовности.

В

Виртуальная память

virtual memory

Механизм, дающий каждому процессу собственное адресное пространство, которое транслируется в физическое через таблицы страниц. Обеспечивает изоляцию процессов и позволяет суммарно адресовать больше памяти, чем установлено физически.

Разбор: «Виртуальная память: четыре уровня таблиц»

Взаимная блокировка

deadlock

Состояние, в котором два или более потока ждут друг друга и ни один не может продолжить. Требует одновременного выполнения четырёх условий Коффмана; нарушения любого из них достаточно, чтобы взаимная блокировка стала невозможной.

Д

Динамическое программирование

dynamic programming

Метод решения задач, у которых оптимальное решение складывается из оптимальных решений подзадач, и подзадачи повторяются. Результаты подзадач сохраняются, чтобы не считать их заново.

Дескриптор файла

file descriptor

Небольшое целое число, которым процесс ссылается на открытый файл, сокет или канал. Индекс в таблице открытых файлов процесса. Наследуется при fork и может передаваться между процессами через доменный сокет.

И

Идемпотентность

idempotence

Свойство операции давать тот же результат при повторном выполнении с теми же аргументами. Делает безопасным автоматический повтор запроса: клиент, не получивший ответа, может отправить его снова, не опасаясь второго списания.

Направление «Бэкенд», модуль 07

Индекс

index

Дополнительная структура данных, ускоряющая поиск строк по значению колонки ценой замедления записи и дополнительного места. Не является частью логической модели: запрос вернёт тот же результат и без индекса, только медленнее.

Инвалидация кэша

cache invalidation

Удаление или пометка устаревших записей кэша. Трудность не в самом удалении, а в том, чтобы знать, какие именно записи устарели, и в том, что между изменением источника и инвалидацией всегда есть окно несогласованности.

К

Кворум

quorum

Минимальное число узлов, которые должны подтвердить операцию, чтобы она считалась выполненной. Если кворумы чтения и записи пересекаются (R + W > N), читающий гарантированно увидит последнюю подтверждённую запись.

Конкурентность

concurrency

Способность программы иметь несколько независимо продвигающихся задач. Не то же самое, что параллелизм: конкурентные задачи могут выполняться на одном ядре по очереди, параллельные — обязательно одновременно.

Копирование при записи

copy-on-write

Приём, при котором копия данных создаётся не в момент «копирования», а при первой попытке изменить их. До изменения обе стороны разделяют одну физическую память. Так работает fork в современных системах.

М

Многоверсионность

MVCC, multiversion concurrency control

Способ управления конкурентным доступом, при котором изменение создаёт новую версию строки, а не перезаписывает старую. Читающие транзакции видят снимок данных и не блокируют пишущие — и наоборот.

Мьютекс

mutex

Примитив синхронизации, дающий доступ к защищаемому ресурсу ровно одному потоку в каждый момент. В отличие от семафора со счётчиком 1, мьютекс обычно имеет владельца: освободить его может только захвативший поток.

О

Обратное давление

backpressure

Механизм, которым перегруженный получатель сообщает отправителю, что нужно сбавить темп. Без него очередь между ними растёт, пока не кончится память. В TCP роль обратного давления играет окно приёма.

Окно перегрузки

congestion window

Оценка объёма данных, которые отправитель TCP может держать в сети неподтверждёнными, чтобы не вызвать потерь. Растёт при успешной доставке и резко сокращается при потере пакета.

П

Перцентиль

percentile

Значение, ниже которого лежит заданная доля наблюдений. p99 времени ответа — это порог, в который укладываются 99 % запросов. Перцентили нельзя усреднять: среднее от p99 двух серверов не равно p99 их общего потока.

Планировщик запросов

query planner

Компонент СУБД, выбирающий способ выполнения запроса: порядок соединений, методы доступа, алгоритмы join. Решение принимается по оценкам стоимости, построенным на статистике — поэтому устаревшая статистика портит планы.

Прерывание

interrupt

Сигнал от устройства или процессора, заставляющий ядро прервать текущую работу и выполнить обработчик. Механизм, благодаря которому операционная система узнаёт о внешних событиях, не опрашивая устройства в цикле.

Р

Репликация

replication

Поддержание копий данных на нескольких узлах. Синхронная репликация подтверждает запись только после применения на репликах, асинхронная — сразу, рискуя потерять последние изменения при отказе лидера.

Рукопожатие

handshake

Обмен служебными сообщениями, которым стороны согласовывают параметры перед передачей данных. В TCP это три пакета и согласование начальных номеров, в TLS — версия протокола, шифрсьют и ключевой материал.

Разбор: «Трёхстороннее рукопожатие TCP»

С

Селективность

selectivity

Доля строк таблицы, которые проходят условие фильтра. Чем меньше доля, тем выгоднее индекс. При селективности выше примерно 20 % планировщик обычно предпочитает последовательное чтение.

Системный вызов

system call

Способ, которым программа просит ядро выполнить привилегированную операцию: открыть файл, выделить память, отправить пакет. Сопровождается переключением в режим ядра, что стоит сотни наносекунд.

Согласованность в конечном счёте

eventual consistency

Гарантия, что при отсутствии новых изменений все реплики со временем придут к одному значению. Ничего не говорит о том, сколько займёт это «со временем» и что увидит читатель до схождения.

Т

Транзакция

transaction

Группа операций, выполняемых как единое целое. Либо применяются все изменения, либо ни одного. Свойства транзакций описывает сокращение ACID, из которых буква I (изоляция) настраивается уровнями.

Таблица страниц

page table

Структура, по которой процессор переводит виртуальный адрес в физический. В x86-64 — четыре уровня. Результаты недавних трансляций кэшируются в TLB, иначе каждое обращение к памяти стоило бы пяти обращений.

Ф

Фантомное чтение

phantom read

Аномалия, при которой повторный запрос с тем же условием возвращает новые строки, добавленные другой транзакцией. Отличается от неповторяющегося чтения тем, что меняется состав выборки, а не значения в уже прочитанных строках.

Х

Хеш-таблица

hash table

Структура данных, отображающая ключи в значения через хеш-функцию. Среднее время доступа — O(1), худшее — O(n) при массовых коллизиях. Реальная производительность сильно зависит от коэффициента заполнения.

Хвост распределения

tail latency

Медленная часть распределения времени ответа — те самые проценты запросов, которые заметно хуже типичных. В составных страницах хвосты складываются: страница, собранная из десяти вызовов, почти всегда попадает хотя бы в один медленный.

Показаны 28 из 380 терминов. Полный глоссарий доступен внутри направлений: каждый термин ведёт на разбор, в котором он вводится.

Как пользоваться

Проверка на минуту

Простой способ найти свои пробелы: идите по глоссарию и пробуйте объяснить каждый термин вслух, не подглядывая. Не получилось за минуту — отмечайте. Через полчаса у вас будет список тем, с которыми стоит разобраться, и он будет куда честнее, чем ощущение «вроде знаю».

Определения здесь намеренно короткие. Это не замена разбору, а способ быстро вспомнить и проверить себя — ссылки на полные материалы стоят там, где они есть.

Перейти в библиотеку