Теперь мы формально определим затраты на чтение, обновление и память (ЧОП). Сначала мы определим три величины, которые помогут отразить затраты по отдельности. Они определяются как
показатель роста стоимости по сравнению с минимально возможным.
- Под затратами на чтение мы понимаем рост стоимости чтения при каждой операции поиска. Это соотношение между размером метаданных (обычно в индексе) и данных, с которыми должна работать операция, делённое на фактический размер необходимых данных. Другими словами, она отражает дополнительные данные, которые считываются при использовании конкретной структуры данных по сравнению с минимально возможными затратами, которую система могла бы достичь в идеальном мире, где система могла бы напрямую получить результат без каких-либо дополнительных усилий по поиску.
- Под затратами на обновление мы понимаем рост стоимости записи при каждой операции обновления. Это соотношение между размером данных и метаданных, к которым был осуществлён доступ, и размером самих обновлённых данных.
- Под затратами на память (хранение) мы понимаем рост стоимости пространства, используемое структурой данных. Это соотношение между суммарным размером данных, метаданных и потерянного из-за фрагментации пространства, делённое на размер базовых данных.
Показатель роста стоимости как альтернативное определение увеличения затрат. Наиболее распространённой метрикой затрат в структурах данных обычно является общее количество страниц, которые приходится перемещать между медленным и быстрым хранилищем. Приведённые выше определения трёх накладных расходов (сокращенно накладные расходы ЧОП) представляют показатель роста затрат как метрику, чувствительную к размеру данных. Например, предположим, что в идеальном мире точечный запрос должен обращаться только к одной странице данных, содержащей целевую запись ключа-значения. Однако при использовании древовидной структуры запрос обходит страницы индексации, чтобы найти целевые данные. Соотношение между количеством всех страниц, к которым происходит доступ (индекс и данные), и страницей (страницами), содержащей данные, составляет рост затрат на чтение. Определения
роста затрат на запись и
роста затрат на память схожи в том, что они отражают избыток страниц данных, к которым операция должна обращаться во время записи, и избыток памяти, требуемый структурой данных. Мыслить о затратах в терминах усиления, а не в терминах общего количества страниц медленной памяти, к которым осуществляется доступ, часто бывает полезно, поскольку это дает представление о том, насколько конструкция близка к оптимальной.