HC-tree - бэкенд к SQLite с поддержкой параллельных операций записи

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3181
Зарегистрирован: 20.08.2022

#

HC-tree - бэкенд к SQLite с поддержкой параллельных операций записи
Дата публикации:Thu, 19 Jan 2023 13:43:43 +0300


Разработчики проекта SQLite начали тестирование экспериментального бэкенда HCtree, поддерживающего блокировку на уровне строк (row) и обеспечивающего высокий уровень распараллеливания при обработке запросов. Новый бэкенд нацелен на повышение эффективности использования SQLite в клиент-серверных системах, в которых приходится обрабатывать большое число одновременных запросов к БД на запись.


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


Для организации одновременного выполнения нескольких операций в HCtree записи применяется механизм разделения транзакций, использующий блокировки на уровне страниц и похожий на MVCC (многоверсионное управление конкурентным доступом), но использующий проверки транзакций на основе ключей и диапазонов ключей вместо наборов страниц. Операции чтения и записи выполняются в привязке к снапшоту БД, изменение которого становятся видимы в основной БД только после завершения транзакции.

Клиенты могут использовать три операции открытия транзакций:
  • "BEGIN" - транзакции не учитывают данные о доступе других клиентов. В случае выполнения внутри транзакции операций записи транзакция может быть зафиксирована только если за время её совершения не было других операций записи в БД.

    "BEGIN CONCURRENT" - транзакции собирают сведения о доступе других клиентов. В случае выполнения внутри транзакции операций записи транзакция может быть зафиксирована если с момента создания снапшота в БД были зафиксированы другие транзакции.

    "BEGIN EXCLUSIVE" - после открытия транзакции блокирует операции из других транзакций до своего завершения.


HCtree поддерживает репликацию в стиле "master-slave", позволяющую переносить транзакции в другую БД и поддерживать вторичные БД в состоянии, синхронизированном с основной БД. HCtree также снимает ограничение на размер БД - вместо 32-разрядных идентификаторов страниц данных в HCtree применяются 48 разрядные, что повышает максимальный размер БД с 16 тебибайт до 1 эксбибайт (миллион тебибайт). Ожидается, что производительность SQLite с бэкендом HCtree будет не ниже классического однопоточного бэкенда.
Клиенты SQLite с поддержкой HCtree смогут обращаться как к БД на базе структуры HC-tree, так и к старым БД SQLite.


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=58508

Жизнь за Нер'зула!

Ответить