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

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
19-Янв-2023 16:58

Разработчики проекта 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
===========

Похожие новости: Теги для поиска: #_sqlite, #_hctree
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 09:02
Часовой пояс: UTC + 5