The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

19.01.2023 13:43

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

  1. Главная ссылка к новости (https://sqlite.org/forum/forum...)
  2. OpenNews: Выпуск СУБД SQLite 3.40
  3. OpenNews: Опубликован DuckDB 0.6.0, вариант SQLite для аналитических запросов
  4. OpenNews: В SQLite добавлена поддержка WASM для использования СУБД в web-браузере
  5. OpenNews: Проект libSQL начал развитие форка СУБД SQLite
  6. OpenNews: Опубликован проект Litestream, реализующий систему репликации для SQLite
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58508-sqlite
Ключевые слова: sqlite, hctree
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (45) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:36, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –16 +/
    > повышает максимальный размер БД с 16 тебибайт до 1 эксбибайт (миллион тебибайт)

    Спасибо, давно хотел этот функционал.

     
     
  • 2.8, Аноним (8), 15:21, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    но ведь иногда так хочется помечтать...
     
     
  • 3.20, Аноним (20), 16:41, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > SQLite в клиент-серверных системах

    пытаются забивать гвозди детским пластмассовым молотком?!

     
     
  • 4.50, Аноним (-), 21:41, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да вообще, кто бы мог подумать что офисный 80286 вымахает до эвона какой штуки в датацентрах. Как видите, это работает.
     
     
  • 5.52, Аноним (20), 22:50, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эм... Куда-куда он вымахнул?! От этого 16-битного рудимента и поторонков не осталось. Его просто бросили и сделали совершенно новые процы. Уже в 386-ом это видно. Похожесть в них лишь в том, что с 80 начинаются имена :)
     
     
  • 6.58, Аноним (-), 23:07, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Чо-чо в 386 видно? А, куцый набор регистров и никакие режимы адресации, без относительной вообще, так что position independent code там это боль? Ну да, на 64 битах это АМД уже дизайнило - поэтому там хоть какое-то отдаленное подобие современного проца уже все же отрисовалось. Но в целом все равно пованивает вон тем уродцем местами. Вплоть до старта в 16-битном реальном режиме при powerup ядра, ога...
     
     
  • 7.60, Аноним (60), 09:25, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Protected mode был и 286 и в 386 так что никто тебя не заставляет использовать реальный режим, ну если ты не биос конечно.  
     
     
  • 8.64, Совершенно другой аноним (?), 10:56, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, как-бы в 286 защищенный режим был гораздо хуже, чем потом сделали в 386 Луч... текст свёрнут, показать
     
     
  • 9.76, Хм (?), 01:21, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вернутья можно было вызыав недокументированную инструкцию, название уже не помню... текст свёрнут, показать
     
  • 8.68, Аноним (-), 20:42, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну а вот включается уродец как 16-битное ископаемое нечто В режиме где программ... текст свёрнут, показать
     
  • 3.51, Аноним (-), 21:50, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Бывают "унесенные ветром" а бывают и "покусаные энтерпрайзом". Бойтесь своих мечтаний, они выполняются.
     
     
  • 4.61, Аноним (60), 09:27, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Как будто быть покусанным энтерпрайзом это что-то плохое. Если у тебя что-то не растет пусть даже недостижимый предел размера бызу ты делаешь что-то не так.
     
     
  • 5.69, Аноним (-), 20:45, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Как будто быть покусанным энтерпрайзом это что-то плохое.

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

     
     
  • 6.74, Neon (??), 20:21, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Впритык как с 640 кб, которые хватит всем, какая постоянная грабля. В кои века позаботились о достаточно широком диапазоне, чтобы постоянно грабельки не обновлять
     
  • 3.73, Neon (??), 20:20, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Мечтать и заранее планировать развитие - это хорошо. Чтобы не наступать на грабли, типа 640кб хватит всем или проблемы с 2000 годом.))) Да сколько таких граблей было. Постоянно жмущие штаны с поддержкой объемных дисков.)))
     

  • 1.4, Привет (?), 14:55, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А где многопоточность с скулайт нужна? В хроме не надо значит нигде не надо.
     
     
  • 2.7, Аноним (7), 15:11, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Программе которая обнуляется по каждому чиху вообще ничего не надо.
     
     
  • 3.47, Аноним (47), 20:04, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Которую "команда обнуления" в составе earlyoom, 12309, oomd и echo 2 > /proc/sys/vm/overcommit_memory "обнуляют".
     
  • 2.12, Аноним (8), 15:34, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    узко мыслите
     
  • 2.28, ИмяРек (?), 17:09, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну как минимум всяким macos в котором поиск локальных файлов и прочего на sqlite основан, всяким KMail и прочим почтовикам для нормальной параллельной работы с несколькими ящиками - да любой софт будет лучше если избавить от затычки в виде 1 потока на запись.
    Как локальный снэпшот внешних данных для серверного приложения сабж полезен был бы.

    SQLite дофига где заслуженно как бэкенд для данных используется.

     
  • 2.72, Аночик (?), 07:07, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Для lxd например.
     
  • 2.75, fusin (?), 13:44, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    OGC GeoPackage стандарт использует SQLite для хранения пространственных данных. Можно работать без Postgresql итд., удобно брать проект с собой итд. Если в базу смогут писать одновременно несколько человек - мечта.
     

  • 1.5, 1 (??), 15:08, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ну вот зачем нормальный проект превращать в слона ?
    Зачем лезть туда, где уже давно сидят MySQL и PostgreSQL ? (вспомнил Nero)
     
     
  • 2.6, Аноним (7), 15:09, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Они жручие.
     
     
  • 3.10, Аноним (-), 15:28, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    по сравнению с брузерами ничто не жруче
     
  • 3.23, Аноним (20), 16:53, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Они жручие.

    покажи, чьи ещё исходники занимают больше 15 ГБ? Браузеры уже операционки обогнали по жирноте.

     
     
  • 4.24, Аноним (7), 16:58, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А при чём тут браузеры? Исходники какого-нибудь оракла или мсскуль не меньше исходников венды.
     
     
  • 5.35, Аноним (20), 17:42, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > А при чём тут браузеры?

    При том, что я спрашивал, кто больше браузера? Ну а если ты не в курсе, сколько хромиум весит... Зачем отвечаешь ерундой?

     
     
  • 6.36, Аноним (7), 17:44, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Никто кроме тебя тут браузеры не обсуждал, ты промахнулся с веткой?
     
     
  • 7.53, Аноним (20), 22:52, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Никто кроме тебя тут браузеры не обсуждал

    врёшь, см. 3.10

     
  • 2.41, Аноним (41), 19:20, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Забыли экспертов опеннета спросить, куда надо лезть, а куда не надо. SQLite всё правильно делает, избавляется от своего локалхостного однопоточного легаси. Учитывая, что SQLite используется куда шире, чем MySQL и PostgreSQL вместе взятые, это ещё не факт кто куда лезет.
     
     
  • 3.62, Аноним (60), 09:31, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Используется он шире но всё так же на локалхосте. Если бы эти многопоточные плюшки были кому-то нужны. Все бы пользовались другой базой, а не скулем.
     
  • 2.65, Совершенно другой аноним (?), 11:02, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    MySQL и PostgreSQL это клиент-сервер и доступ по сети, а SQLite - встроенная в приложение база данных. Как мне кажется многопоточность ей как минимум не помешает и в MySQL или PostgreSQL не превратит.
     

  • 1.27, ИмяРек (?), 17:05, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Вот это оч круто
     
  • 1.40, Аноним (40), 19:15, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Хотят Firebird сделать?
     
     
  • 2.54, Аноним (20), 22:53, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    повторить его судьбу?
     

  • 1.45, Аноним (45), 19:35, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    SQHeavy
     
     
  • 2.55, Аноним (20), 22:54, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    SQBloated
     

  • 1.48, annnno (?), 20:28, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мобилкии тянут sqlite, чо вы как маленькие
     
     
  • 2.56, Аноним (20), 22:55, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Мобилкии тянут sqlite

    Разработчики sqlite стараются, чтобы не тянули.

     
     
  • 3.59, Аноним (-), 23:10, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Разреботчики новых процов для мобилок радостно потирают руки и донатят скулайту чтоб писали еще, да побольше.
     
     
  • 4.63, Аноним (60), 09:32, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    По итогу напишут новую базу с однопоточностью и настоящей легкостью. Типа TrueSQLite.
     
     
  • 5.67, ИмяРек (?), 13:35, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В iOS до определенной версии из-за архитектуры писать более чем в 1 поток куда-либо и так не дозволялось, да и сейчас многозадачность там весьма разумная для мобильного устройства
     
     
  • 6.70, Аноним (-), 20:46, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > весьма разумная для мобильного устройства

    Теперь "обкоцаная" так называется?:)

     

  • 1.77, Аноним (77), 00:03, 26/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    надеюсь HCtree будет как опция компилироваться, что бы был выбор на тот случай если все же работать будет медленнее.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру