Исследователи из Microsoft представили на SIGMOD 2018 новое встроенное хранилище ключей и значений под названием FASTER.
Хранилище значений ключей является инновационным в том смысле, что оно поддерживает использование обновлений на месте, что означает, что оно может поддерживать быстрый и частый поиск и обновление больших объемов информации о состоянии. Разработчики говорят, что они считают это особенно полезным в таких сценариях, как Интернет вещей, когда миллиарды устройств сообщают и обновляют состояние, например счетчики производительности для каждого устройства.
На данный момент, если приложению необходимо поддерживать такое состояние, оно обычно масштабируется на нескольких машинах для памяти, не используя другие ресурсы, такие как хранилище и сеть на машине. Такие приложения, как правило, имеют временную локальность — данные или ресурсы повторно используются в течение небольшого периода времени. Faster использует это для управления объемом оперативной памяти системы и кэширования часто используемых значений без сохранения какой-либо детальной статистики для каждой записи.
Он делает это с помощью комбинации распределителя в памяти, который обрабатывает доступ к данным и обновления записей на месте, наряду с распределителем со структурой журнала только с добавлением, который может обрабатывать данные больше, чем в основной памяти, но без обновлений на месте.
У Faster есть два технических нововведения. Во-первых, его хеш-индекс удобен для кеширования и одновременной работы без защелок и предназначен для динамического увеличения и уменьшения при сохранении логических указателей на записи в журнале. Второе изменение — это параллельный распределитель гибридных записей журнала, который возвращает указатели логической или физической памяти и работает вместе с индексом, поэтому охватывает быстрое хранилище (например, облачное хранилище и SSD) и основную память.
Заголовок гибридного журнала находится в хранилище и использует стратегию чтения-копирования-обновления для обновления записей. Хвостовая часть гибридного журнала находится в основной памяти и использует обновления на месте. Между этими двумя областями находится область памяти, доступная только для чтения, которая предоставляет горячим записям «второй шанс» для быстрого копирования обратно в хвост.
Это сочетание местоположений и методов использует временную локальность обновлений, позволяет эффективно передавать записи в последовательное хранилище и обеспечивает естественную кластеризацию горячих записей в памяти для быстрых обновлений на месте.
Исследователи говорят, что Faster может превзойти даже чистые структуры данных в памяти, такие как хэш-карта Intel TBB, когда рабочий набор умещается в памяти. Они говорят, что он также на несколько порядков превосходит современные системы хранения ключей и кеширования, такие как RocksDB и Redis.