Global Tag Network Программное обеспечение для приложений и периферии

Технологии Raima

Вакуумирование

Database Vacuuming

Вакуумирование

 

 

Новая эра запоминающих устройств

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

Жесткие диски (HDD) правят рынком много лет. Недавно появилась новая технология — твердотельные накопители (SSD). Обе эти технологии претерпели огромное развитие с улучшением скорости, надежности, емкости и цены. По мере того, как твердотельные накопители дешевеют, они заменяют жесткие диски во многих приложениях.

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

Жесткие диски (HDD)

Жесткие диски хранят данные на вращающихся магнитных пластинах с помощью головок чтения / записи, установленных на роботизированных манипуляторах. Из-за использования движущихся частей операции чтения и записи на жестких дисках обеспечивают большую задержку по сравнению с интегральными схемами (ИС). В зависимости от реальной модели жесткого диска данные могут быть записаны не сразу, а вместо этого сохранены в контроллере для записи позже. Такой подход повысит производительность записи за счет долговечности. Чтобы свести к минимуму влияние на долговечность, жесткие диски часто оснащены конденсатором большой емкости или резервным аккумулятором, что позволяет записывать данные или сохранять данные в энергозависимой памяти в случае отключения электроэнергии.

Из-за того, как работают жесткие диски, данные всегда читаются и записываются в единицах страниц. Современные жесткие диски имеют размер страницы 4096 байт (или 4 КиБ), и фактическая структура данных на пластине не видна напрямую хосту.

Твердотельные накопители (SSD)

Твердотельные накопители хранят данные на специальных ИС без каких-либо движущихся частей, что обеспечивает низкую задержку операций чтения и записи. по сравнению с HDD. Эти микросхемы собраны особым образом, чтобы твердотельные накопители были рентабельными. Эти микросхемы далее будут называться флэш-памятью. Описание здесь упрощено и не совсем точное, поскольку детали также зависят от фактического производителя и модели SSD.

Твердотельные накопители используют тот же размер страницы, что и современные жесткие диски, хотя накладные расходы на доступ к странице почти незначительны по сравнению с жесткими дисками. Чтение небольшого количества байтов с SSD намного эффективнее, чем с HDD. Обсуждение здесь предполагает, что размер страницы, представленной хосту, такой же, как размер страницы во флеш-памяти. Как и в случае с жестким диском, фактическая структура данных во флэш-памяти не видна хосту напрямую.

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

Когда данные обновляются, твердотельные накопители записывают их на «свежую» страницу (копирование при записи) или страницу, на которую еще не производилась запись с момента последнего стирания сектора. Эта запись делает страницу «используемой». Страница со старыми данными считается «устаревшей».

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

Более эффективная сборка мусора возможна с большим количеством секторов с большим количеством устаревших страниц. В принципе существует три типа изменений данных; создание данных, обновление данных и удаление данных. Традиционные жесткие диски не удаляют данные, поскольку вместо этого файловая система игнорирует страницы. Для твердотельного накопителя сборку мусора можно выполнить более эффективно, если он знает об этих игнорируемых страницах. Это реализуется командой TRIM ATA или командой UNMAP SCSI.

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

Технологии баз данных

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

Базы данных обычно реализуют надежность (одно из свойств ACID ) с помощью журнала транзакций, который может включать или не включать фактические данные пользователя. Страницы, написанные для журнала транзакций, и страницы, написанные для обновленного образа базы данных, скорее всего, окажутся в одном секторе, поскольку они записываются примерно в одно и то же время. Особенно это актуально для небольших транзакций. Страницы журнала транзакций обычно становятся устаревшими перед недавно записанными страницами образа базы данных. Это означает, что в этих секторах вскоре могут появиться устаревшие страницы, которые займут место, или секторы могут вскоре достичь порогового значения для сборки мусора. В обоих случаях производительность может снизиться.

 

RDM 15.0

В RDM 15.0 мы использовали другой подход. На уровне файловой системы база данных состоит из ряда файлов пакетов, содержащих пользовательские данные, индексы и метаданные, необходимые для восстановления и очистки. Эти файлы пакетов вместе называются «пакетами».

Взгляд на файловую систему пакета

В этом разделе описаны некоторые характеристики пакета, наблюдаемые файловой системой, и их влияние на производительность ввода-вывода SSD.

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

Поскольку файлы пакетов записываются последовательно, последовательность страниц для данного пакета, вероятно, будет сгруппирована вместе, особенно при большой нагрузке транзакции, по сравнению с другими нагрузками ввода-вывода. Когда предполагается такая кластеризация, эти секторы вряд ли будут подвергаться сборке мусора до тех пор, пока не будет удален файл пакета.

Если вышеприведенное предположение не соответствует действительности, загрузка базы данных может быть сохранена на отдельном разделе или на отдельном твердотельном накопителе для достижения необходимой производительности. Эти детали находятся вне нашего контроля, но с точки зрения дизайна базы данных это лучшее, что мы можем сделать для достижения производительности ввода-вывода на SSD.

Очистка в Raima Database Manager (RDM)

Реализация пакета будет обсуждаться в этом разделе. Мы начнем с наблюдений за предыдущими версиями RDM и представим дизайн RDM 15.0. Если вы хотите погрузиться в технические детали, вы можете узнать больше в нашей документации.

Предыдущие версии RDM

RDMe 12.0 и старше («RDMe») использовали журнал транзакций. Это означало, что данные обычно записывались дважды — сначала в журнал транзакций, а затем в фактические файлы базы данных. RDMe также хранил элементы фиксированной длины, и в некоторых случаях дополнительный контент приходилось хранить отдельно в другом месте. Такой дизайн привел к потере места и лишним накладным расходам, когда приходилось разделять контент. Также было невозможно выполнить какое-либо сжатие данных.

RDM 14.0 — это первая версия RDM, в которой для управления данными используется хранилище значений ключей (ID-index) и формат пакетов, в отличие от традиционного журнала транзакций и слотов данных фиксированной длины. Однако он повторно использовал пространство в файлах пакета. Обновление пакета всегда выполнялось с использованием копирования при записи с исходной страницы на страницу, на которой было свободное место. ID-индекс отслеживал это неиспользуемое пространство. Это отслеживание и структуры данных, необходимые для эффективного использования неиспользуемого пространства, оказались довольно дорогими. Это также предотвратило повторное использование пространства в сочетании с массовой записью. Производительность ввода-вывода также была далека от оптимальной, поскольку данные записывались на страницы, когда обновлялась только часть страницы.

RDM 14.1 и RDM 14.2 использовали несколько иной подход. В следующих разделах мы в основном обсудим дизайн 15.0, который аналогичен дизайну 14.2. Дизайн 15.0 также имеет некоторые общие характеристики с дизайном 14.1.

RDM 15.0

RDM 15.0 решает все вышеперечисленные проблемы, используя совершенно другой подход. Он по-прежнему копирует при записи, но никогда не использует повторно неиспользуемое пространство в файлах пакета. Вместо этого он всегда записывает в конец последнего файла пакета со структурами данных, которые не используют ID-индекс. Это означает возможность избежать записи на страницы, на которых доступно только частичное пространство.

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

 

Дисковое пространство и используемые страницы

Очистка имеет две основные цели, сопоставимые друг с другом: уменьшение общего объема дискового пространства для базы данных и уменьшение количества страниц, на которых фактически находится база данных. Оптимизация одного может работать против другого. RDM 15.0 всегда очищает самый старый пакетный файл », что будет способствовать достижению первой цели. Если на самый старый файл пакета нет ссылки и он не нужен, он удаляется, и только после этого мы действительно удаляем файл пакета. RDM 14.1 поддержал вторую цель, очистив упаковочный файл с наименьшим относительным «используемым». RDM 15.0 может обойтись меньшим количеством метаданных в пакете, поскольку он очищает только самые старые файлы пакета. Этот подход также имеет то преимущество, что не нужно копировать метаданные для удаленных данных в рамках очистки, что дополнительно снижает стоимость очистки. И, наконец, оптимизация дискового пространства также улучшает производительность SSD.

 

Чтение и запись

Один аспект, который не следует упускать из виду, — это чтение и запись. Как мы указывали выше, агрессивная очистка ограничит общий размер базы данных. Что еще более важно, агрессивная очистка будет кластеризовать данные, которые используются, вместе с меньшими потерями пространства между ними. Это важно, когда речь идет о том, что на самом деле находится на каждой странице. Хранение данных в кластере может означать, что большее количество используемых данных может уместиться на меньшем количестве страниц и, таким образом, может остаться в рабочем наборе кеша файловой системы, потенциально уменьшая или устраняя дорогостоящие операции ввода-вывода для нижележащего блочного устройства. 

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

Конечным результатом этого подхода является то, что данные могут быть записаны несколько раз, как RDM 12.0 и более ранние версии, но разница в том, что записи для RDM 15.0 кластеризованы и при правильном пороге для очистки обеспечат отличную производительность ввода-вывода и Как обсуждалось ранее, сборка мусора на SSD очень эффективна.

 

Формат файла упаковки

Формат файла пакета важен для эффективной очистки. Для начала пара наблюдений. В принципе, пылесосить можно несколькими способами. RDM 14.1 имел возможность вакуумировать кластеризацию по идентификатору слота в индексе идентификатора или кластеризацию по старой позиции в файле пакета. Оба они полагались на ID-индекс и определенные метаданные в файлах пакета.

Подход RDM 15.0 состоит в том, чтобы пересечь структуры данных и переместить все, что в настоящее время находится в файлах пакета, которые подлежат очистке, путем добавления его в последний файл пакета. Структуры данных, содержащие ссылки на копируемые данные, также должны быть перемещены. Таким образом, структуры данных в RDM 15.0 содержат информацию о самом старом файле пакета, который может быть доступен прямо или косвенно. Это позволяет эффективно вакуумировать контент, не просматривая больше данных, чем необходимо. Этот подход также имеет то преимущество, что контент кластеризуется на основе их ключей, что делает последующий поиск более эффективным.

 

Потребность в замках

Кроме того, очистка может выполняться без блокировки записи. Это означает, что чистка пылесосом особо не влияет на читателей. На обновления влияют, поскольку очистка данной таблицы не может выполняться параллельно, пока идет обновление этой таблицы; однако ожидается, что объем данных, подлежащих очистке, может быть на порядок меньше объема данных, записанных для обновления, хотя часто это может быть всего два или три раза в зависимости от того, насколько агрессивно мы очищаем.

 

Заключение

Мы видели, что формат файла для RDM 15.0 особенно хорошо подходит для минимизации дискового ввода-вывода и имеет свойства, которые очень хорошо подходят для постоянного хранения, включая SSD и флэш-память. За счет минимизации диска, ввода-вывода устройства будут иметь увеличенный срок службы. Многие детали были упущены, чтобы упростить обсуждение. Надеемся, вам понравилось.

Сверре Хваммен Йохансен и Дайгоро Тояма

Заполните форму >>>

или отправьте сообщение

укажите  удобное время для  консультации 

Ваш продукт в итоге получается дешевле на 40-%  в сравнении с аналогами.

ERP-система как программный продукт стоит сравнительно дорого, независимо от разработчика. Для успешного внедрения потребуется сотрудничество с опытными специалистами. И если бюджета хватает только на оплату программы, то в результате «коробка» оказывается невостребованной, то есть , компания впустую тратит значительную сумму. Рассчитывайте свои возможности заранее.


Консультация