Классика баз данных - статьи
Статья Гоца Грейфа, пересказ которой предлагается вашему вниманию, формально посвящена очередному пересмотру «правила пяти минут» Джима Грея и Джанфранко Пуцолу. Этому автор посвятил большую часть своей статьи. Но мне кажется, что гораздо более важно то, что в статье предлагаются и обосновываются вполне конкретные подходы по применению флэш-памяти в файловых системах и СУБД. Похоже, что подобные подходы могут сильно подействовать на будущее технологии баз данных (например, привести к отказу от систем баз данных, поддерживаемых в основной памяти). Кроме того, очень ценно то, что Грейф приводит список нерешенных проблем, связанных с использованием флэш-памяти. Эти проблемы действительно актуальны и интересны. Хотелось бы надеяться, что за их решение возьмется кто-нибудь из российских специалистов. Как обычно, обращаю ваше внимание, что для удобства читателей я снабдил большинство материалов из списка литературы ссылками на источники, свободно доступные в Internet.
Сергей Кузнецов
В 1987 г. Джим Грей (Jim Gray) и Джанфранко Пуцолу (Gianfranco Putzolu) опубликовали свое знаменитое правило для разумного соотношения объема основной памяти и темпа ввода-вывода []. В своих подсчетах они сравнивали стоимость постоянного сохранения записи (или страницы) в основной памяти со стоимостью выполнения обмена с диском при каждом обращении к этой записи (или странице), используя существовавшее тогда соотношение цен на схемы основной памяти и дисковые устройства. Название правила происходит от интервала времени между равнозатратными обращениями к записи (или странице). Если обращения к записи (или странице) происходят более часто, то ее следует сохранять в основной памяти; если реже – ее нужно хранить на диске и считывать при необходимости.
Основываясь на тогдашних ценах и характеристиках производительности оборудования компании Tandem, Грей и Пуцолу обнаружили, что стоимость основной памяти, достаточной для хранения записи размером в 1 килобайт, примерно совпадает с (частью) стоимости дискового устройства, обеспечивающего доступ к такой записи через каждые 400 секунд, которые они округлили до пяти минут.
Интервал равнозатратности обратно пропорционален размеру записи. По Грею и Пуцолу он равен одному часу для записи размером 100 байт и двум минутам для страниц в 4 килобайта.
Десять лет спустя правило пяти минут было проанализировано заново []. К этому времени изменилось множество цен и параметров производительности (например, стоимость мегабайта основной памяти упала с 5000 до 15 долларов). Тем не менее, правило пяти минут сохранилось. Интервал равнозатратности, равный примерно пяти минутам, существовал теперь для страниц размером в 8 килобайт. Первой целью этой статьи является анализ правила пяти минут спустя еще десять лет.
Конечно, в обеих предыдущих статьях признавалось, что в любой момент времени цены и производительность сильно зависят от технологий и конкретных устройств (например, основная память для мейнфреймов стоила совсем не столько же, сколько память для миникомпьютеров, диски SCSI обладают совсем другой ценой и производительностью, чем диски IDE, и т.д.). Поэтому заинтересованным читателям стоит самим пересчитать соответствующие формулы для своей среды и оборудования. Цифры, использованные в данной статье (см. табл. 1), типичны для технологии 2007 г.
Основная память | Флэш-диск | SATA-диск | |
Цена и емкость | $3 за 8x64 мегабит | $999 за 32 гигабайта | $80 за 250 гигабайт |
Пропускная способность передачи данных (Transfer bandwidth) | ---- | 66 Мбайт/сек API | 300 Мбайт/сек API |
Время ожидания доступа (Access latency) | ---- | 0.1 мсек | 12 мсек в среднем |
Потребляемая мощность в активном состоянии (Active power) | ---- | 1 Вт | 10 Вт |
Потребляемая мощность в состоянии простоя (Idle power) | ---- | 0.1 Вт | 8 Вт |
Потребляемая мощность в режиме пониженного энергопотребления (Sleep power) | ---- | 0.1 Вт | 1 Вт |
Кроме количественных изменений в цене и производительности, уже происходящие качественные изменения будут воздействовать на архитектуру программного обеспечения и аппаратных средств серверов, в частности, систем баз данных.
Программное обеспечение баз данных радикально изменится с появлением новых технологий:
многоядерные процессоры и , поддерживаемая как в программных средах, так и на уровне аппаратуры [];
использование контейнеров, вмещающих тысячи процессоров и многие терабайты данных [];
флэш-память, которая устраняет разрыв между традиционной основной памятью и традиционными вращающимися дисками.
виртуализация с использованием аппаратной и программной поддержки, а также повышения коэффициента загруженности физических машин;
Флэш-память занимает место между традиционной основной памятью и персистентной массовой памятью, основанной на вращающихся магнитных дисках, по показателям стоимости приобретения, задержки доступа, пропускной способности передачи данных, пространственной плотности, потребления энергии и расходов на охлаждение []. Это иллюстрируется данными, приведенными в табл. 1, и производными показателями, которые демонстрируются в табл. 2.
NAND-флэш-память | Диск SATA | |
Цена и емкость | $999 за 32 гигабайта | $80 за 250 гигабайт |
Цена за гигабайт | $31.20 | $0.32 |
Время чтения страницы в 4 килобайта | 0.16 мсек | 12.01 мсек |
Число считываний 4-килобайтных страниц в секунду | 6200 | 83 |
Стоимость в расчете на считывание одной 4-килобайтной страницы в секунду | $0.16 | $0.96 |
Время чтения страницы в 256 килобайт | 3.98 мсек | 12.85 мсек |
Число считываний 256-килобайтных страниц в секунду | 250 | 78 |
Стоимость в расчете на считывание одной 256-килобайтной страницы в секунду | $3.99 | $1.03 |
Поскольку число команд центрального процессора, которые можно выполнить за время одного обмена с диском, постоянно возрастает, целесообразно наличие промежуточной памяти в иерархии хранения данных. Как неоднократно отмечалось, флэш-память кажется очень вероятным кандидатом.
Предстоит разработать еще многие детали архитектуры. Например, будет ли флэш-память в архитектуре аппаратуры доступна через слот DIMM, через дисковый интерфейс SATA или через какой-нибудь другой аппаратный интерфейс? Поскольку для разработки нового аппаратного интерфейса требуется время, вероятно, придется приспосабливаться к существующим интерфейсам.
Основной вопрос состоит в том, следует ли относиться к флэш-памяти как к специальной части основной памяти или же как к специальной части персистентной памяти? Тот же вопрос можно задать по-иному: если система включает традиционную основную память емкостью в 1 гигабайт, 8 гигабайт флэш-памяти и 250-гигабайтный традиционный диск, то будет ли программное обеспечение считать, что имеются 250 гигабайт персистентной памяти и буферный пул объемом в 9 гигабайт, или же, что имеются 258 гигабайт персистентной памяти и буферный пул объемом в 1 гигабайт? Вторая цель статьи состоит в том, чтобы ответить на этот вопрос, а на самом деле, – дать разные ответы для файловых систем и систем баз данных.
От ответа на этот вопрос зависят многие проектные решения. Например, если флэш-память является частью буферного пула, то страницы должны считаться «грязными», если их содержимое отличается от содержимого эквивалентной страницы в персистентной памяти. При синхронизации файловой системы или установке контрольной точки базы данных в этих случаях должны производиться принудительные записи на диск. Если же флэш-память является частью персистентного хранилища, то эти операции записи не требуются.
Разработчикам операционных и файловых систем разумно использовать флэш-память как расширенный буферный пул (расширенную основную память), в то время как системам баз данных флэш-память будет полезна как расширенный диск (расширенная персистентная память). Эти два проектные решения следуют из нескольких согласованных особенностей файловых систем и систем баз данных.
Кроме того, характеристики флэш-памяти приводят к существенным изменениям при управлении страницами B-деревьев и размещении этих страниц. Кроме оптимизации размеров страниц, при управлении B-деревьями можно использовать разные единицы обмена для флэш-памяти и дисков. Третьей целью статьи является описание одного из вариантов такого подхода.