Програмерите на SQLite развиваат HC-tree backend со поддршка за паралелно пишување

Програмерите на SQLite проектите започнаа со тестирање на експериментален HCtree backend кој поддржува заклучување на ниво на ред и обезбедува високо ниво на паралелизација при обработката на барањата. Новиот бекенд е насочен кон подобрување на ефикасноста на користењето на SQLite во системите клиент-сервер кои треба да обработат голем број истовремени барања за запишување во базата на податоци.

Структурите на b-дрво што природно се користат во SQLite за складирање податоци не се дизајнирани за овој тип на оптоварување, што го ограничува SQLite да пишува само на една нишка. Како експеримент, програмерите почнаа да развиваат алтернативно решение кое користи HC-дрво структури за складирање, кои се посоодветни за паралелизирање на операциите за запишување.

За да се дозволи повеќе операции да се извршуваат истовремено, записот HCtree користи механизам за партиционирање трансакции кој користи заклучување на ниво на страница и е сличен на MVCC (Контрола за истовременост на повеќе верзии), но користи проверки на трансакциите врз основа на клучеви и опсези на клучеви наместо множества на страници. Операциите за читање и запишување се вршат во врска со снимката од базата на податоци, чии промени стануваат видливи во главната база на податоци само откако трансакцијата е завршена.

Клиентите можат да користат три операции со отворени трансакции:

  • „BEGIN“ - трансакциите не ги земаат предвид податоците за пристап на други клиенти. Ако операциите за запишување се извршуваат во рамките на трансакцијата, трансакцијата може да се изврши само ако за време на нејзиното извршување немало други операции за запишување во базата на податоци.
  • „ПОЧНУВА КОМУРЕНТНО“ - трансакциите собираат информации за пристапот на други клиенти. Ако операциите за запишување се вршат во рамките на трансакцијата, трансакцијата може да се изврши ако други трансакции се извршени во базата на податоци откако е креирана слика.
  • „Започнете ЕКСКЛУЗИВНО“ - по отворањето на трансакцијата, ги блокира операциите од други трансакции додека не се заврши.

HCtree поддржува репликација на master-slave, што ви овозможува да мигрирате трансакции во друга база на податоци и да ги одржувате секундарните бази на податоци во синхронизација со примарната база на податоци. HCtree исто така го отстранува ограничувањето на големината на базата на податоци - наместо 32-битни идентификатори на страници со податоци, HCtree користи 48-битни, што ја зголемува максималната големина на базата на податоци од 16 тебибајти на 1 ексбибајт (милион тебибајти). Се очекува дека перформансите на SQLite со заднината HCtree нема да бидат пониски од класичниот заднина со една нишка. Клиентите на SQLite со поддршка за HCtree ќе можат да пристапат и до базите на податоци засновани на HC-дрво и до наследените бази на податоци на SQLite.

Извор: opennet.ru

Додадете коментар