The OpenNET Project / Index page

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

Проекты CBS и sqld развивают облачный и серверный варианты SQLite

12.07.2023 19:29

Разработчики SQLite развивают экспериментальный VFS-модуль CBS (Cloud Backed SQLite), позволяющий хранить содержимое базы данных не в локальном файле, а во внешнем облачном хранилище. Для хранения используется специально оптимизированный для внешнего хранения формат базы, позволяющий загружать данные из внешнего хранилища динамически по мере необходимости, без предварительного копирования всей БД на локальную систему. Из облачных хранилищ в настоящее время поддерживаются Azure Blob Storage и Google Cloud Storage. На использование CBS могут быть переведены любые приложения, поддерживающие работу с обычным SQLite.

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

Разработчикам предоставляется расширенный C API и интерфейс командной строки, позволяющие выполнять такие операции, как создание и очистка внешнего хранилища, загрузка и выгрузка БД в/из внешнего хранилища, создание копии БД на внешнем хранилище, просмотр списка БД в облачном хранилище, удаление неиспользуемых блоков из облачного хранилища.


Отдельно разработчиками проекта libSQL (расширенный форк SQLite) анонсирован серверный вариант SQLite - sqld, позволяющий организовать работу совместно используемой СУБД, подключение клиентов к которой осуществляется через применение протокола PostgreSQL или HTTP. Например, для подключения к sqld могут применяться существующие клиентские библиотеки, созданные для СУБД PostgreSQL, и, среди прочего, CLI-интерфейс psql. К серверу sqld также можно обращаться при помощи API на базе протокола HTTP, что упрощает интеграцию с web-приложениями. Код sqld написан на языке Rust и распространяется под лицензией MIT.

В качестве областей применения sqld отмечается резервное копирование, репликация на другие системы и организация доступа к БД SQlite в бессерверных инфраструктурах, в которые отсутствует постоянное хранилище и невозможно обеспечить ведение базы в локальном файле. В бессерверных системах, БД, с которой работает sqld, может реплицироваться с других серверов. Для обеспечения высокой доступности и устойчивости к сбоям поддерживается интеграция с mvSQLite (распределённый вариант SQLite, работающий поверх FoundationDB). Имеется режим поддержания активной резервной копии, реализованный через периодическое сохранение снапшотов с состоянием БД и репликацию изменений из WAL-лога в облачное хранилище, совместимое с Amazon S3.

Для приложений предоставляется совместимая с SQLite библиотека, которая может загружаться через LD_PRELOAD для перехода с хранения данных в локальном файле на работу через sqld. Возможна загрузка расширений к SQLite. Клиентские библиотеки подготовлены для TypeScript, JavaScript, Rust, Go и Python. C БД, привязанной к sqld, одновременно можно работать при помощи штатного инструментария SQLite, т.е. sqld выступает как надстройка для предоставления сетевого доступа к БД, репликации и резервного копирования. Например:


   # Запускаем сервер для SQLite БД foo.db:
   sqld -d foo.db -p 127.0.0.1:5432 --http-listen-addr=127.0.0.1:8000
 
   # Обращаемся к БД при помощи утилит PostgreSQL: 
   psql -q postgres://127.0.0.1
 
   # Подключаемся локально  к БД при помощи инструментария SQLite:
   sqlite3 foo.db

   # Обращаемся через HTTP:
   curl -s -d "{\"statements\": [\"SELECT * from databases;\"] }" \
  http://127.0.0.1:8000



В заключение можно упомянуть проект LiteFS, развиваемый компанией Fly.io. LiteFS представляет собой FUSE-модуль для организации работы с одной общей БД SQLite на нескольких хостах. LiteFS реплицирует состояние БД между несколькими системами через перехват операций записи в файл с БД, и трансляцию этих операций на другие системы, используя подобие механизма транзакций и сохранение транзакций в отдельном файле в формате LTX. Код LiteFS написан на языке Go и распространяется под лицензией Apache 2.0.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Проект libSQL начал развитие форка СУБД SQLite
  3. OpenNews: Опубликован проект Litestream, реализующий систему репликации для SQLite
  4. OpenNews: Выпуск rqlite 7.0, распределённой отказоустойчивой СУБД на основе SQLite
  5. OpenNews: Доступен Dqlite 1.0, распределённый вариант SQLite от компании Canonical
  6. OpenNews: В рамках проекта LiteTree развивается вариант SQLite с поддержкой ветвления БД
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59431-sqlite
Ключевые слова: sqlite, litefs, cbs, sqld, libsql, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Stanislavvv (?), 20:26, 12/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Такое ощущение, что те, кто не осилил запустить локально mysql/postgres, скинулись и проплатили, чтоб sqlite пошел в сеть.
     
     
  • 2.13, InuYasha (??), 00:11, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, "расширяем что умеем" - обычный вполне принцип ) А у меня тут двойное дежа-вю:
    - во-первых, похожая новость уже где-то с полгода назад была
    - во-вторых, libSQL “server mode” (sqld) enables access to SQLite-based databases using Postgres and HTTP network protocols. https://blog.turso.tech/sqlite-based-databases-on-the-postgres-protocol-yes-we
     
  • 2.15, cheburnator9000 (ok), 01:59, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    sqlite тем и хорош, что он не требует всей то администрации которую тащат за собой mysql/postgres, ибо те в свою очередь были спроектированы во времена становления линукса (2.0.x). А я напомню что тогда все делалось по принципу "одна функция(команда) = одна утилита". Достаточно посмотреть на каталог бинарников у postfix, и у много чего дремучего. И в отличие от всяких Key-Value(nosql) баз данных sqlite не жрет ОЗУ и не молотит CPU на постоянном индексировании и телеметрии самого себя. Хотя по всей видимости это тот самый момент когда люди захотели устранить этот "фундаментальный недостаток", вероятность того что в sqld будет телеметрия и логирование каждого чиха равна 146%, а также авторизация, права доступа и вся та прочая чепуха которую напичали в MongoDB ради того чтобы маркетологи могли ее продавать в не разборчивый глупый и хипстерский "ынтырпрайз".
     
     
  • 3.16, Anonyzmous8482174 (?), 02:51, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    то верно! странно, а почему у каждого первого коробочного ынтерпрайза™©® под капотом postfix?! наверное денег нет на нормальных прогеров. надо им у cummunigate поучиться...
     
     
  • 4.36, cheburnator9000 (ok), 15:57, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сам в шоке почему они там не осилили Haraka.
     
  • 3.44, Аноньимъ (ok), 05:36, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >он не требует всей то администрации которую тащат за собой mysql

    Расскажите подробнее что за такой объем администрации требует мускл?

     
  • 2.21, mos87 (ok), 07:52, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Половина "экосистемы" мелкософт работает так.

    опенсорс увы не отстаёт, хоть и из других соображений. Поэтому опенсурс не побеждает. Ибо не использует свои преимуещства, зато копирует недостатки. С увлечением тратя силы на них.

     
  • 2.47, Аноним (47), 11:50, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    у sqlite накладные расходы маленькие и в целом она хорошо справляется со своими задачами, поэтому решили замарочиться. этакий аналог musl vs glibc. есть же и другие встраиваемые БД, которые никто даже палочкой трогать не собирается
     

  • 1.5, Аноним (5), 21:03, 12/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Остается запустить приложение, которое фоном будет перекидывать туда данные в рамках VFS
     
     
  • 2.29, Аноним (29), 10:19, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    или в рамках твоего лица? подумай над этим
     

  • 1.7, Аноним (5), 21:05, 12/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Через добро - вот новый лозунг шпионского ПО.
     
  • 1.9, Аноним (9), 21:47, 12/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    MySQLite?
     
     
  • 2.12, Аноним (12), 22:37, 12/07/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    OurSQLite
     
     
  • 3.14, InuYasha (??), 00:43, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    OldSQooLite
     
  • 2.23, OpenEcho (?), 09:45, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    NotMySQLite
     

  • 1.17, Аноним (17), 06:06, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Теперь для работы сервера нужен езе один сервер. Больше абстракций в систему, больше.
     
  • 1.18, Механик (?), 06:36, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    То есть его сделали специально, чтобы он работал без сервера, но они все таки ходят заставить его работать на сервере?!?!
     
  • 1.19, Аноним (19), 07:07, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А ведь ещё есть sqlrelay, позволяющий сделать сетевой доступ к sqlite причем уже сильно больше 10 лет...
     
  • 1.20, mos87 (ok), 07:47, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    делаю, потому что могу.
    мир айти))
     
     
  • 2.22, Аноним (22), 09:29, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Делаю, потому что хочется
    мир айти))
     

  • 1.24, Пряник (?), 09:51, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уже не знают, как ещё продать обычную виртуалку/контейнер.
     
     
  • 2.26, 1 (??), 10:09, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Тут соглашусь ...
    Будут продавать docker образ с sqlite
     
     
  • 3.32, Аноним (29), 11:12, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    в кубирнэтисе
     

  • 1.27, Аноним (29), 10:16, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    не видел ничего бредовее (если забыть про snap/flatpack/appimage)
     
     
  • 2.38, Аноним (38), 19:40, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А можешь объяснить с примерами, что именно плохо?
     

  • 1.33, YetAnotherOnanym (ok), 12:24, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А нахрена такой "обезжиренный постгрес"? Чтобы упоротый фанат микросервисов мог вырезать из своей аппликухи скулайт и запихнуть его в отдельный контейнер? А потом они сам скулайт тоже порежут на части, работающие как клиент-сервер, чтобы их тоже гонять в разных контейнерах?
     
     
  • 2.43, Аноним (43), 04:34, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы, если приложение, завязанное на sqlite, упрется в железо, можно было его горизонтально отмасшабировать.

    Только не надо про то, что "сразу надо было делать правильно". Часто внезапно взлетает то, что делалось на коленке для себя и пары друзей. И пока переделываешь, надо, чтобы то, что есть, как-то работало.

     
     
  • 3.45, Аноньимъ (ok), 05:39, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что мешает отмаштабипрвать его на постгре или Марии/Мускле?
     

  • 1.35, Kuromi (ok), 15:38, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Они делают из SQLite полноценный, но корявый (хаки на хаках) SQL сервер? Но зачем? Это все равно что запивать сливками обезжиренный латте или что там пьют...

    Разве что флатпакам будет удобнее.

     
     
  • 2.39, YetAnotherOnanym (ok), 19:49, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если бы "запивать сливками". Это "заедать маргарином". Такое же бессмысленное и беспощадное.
     

  • 1.37, Аноним (38), 19:19, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Из облачных хранилищ в настоящее время поддерживаются Azure Blob Storage и Google Cloud Storage.

    А Amazon S3 и другие совместимые что же, не поддерживаются?

    > WAL-лога

    Write Ahead Log лога? ;) Уж не родственника ли PIN-номера?

     
  • 1.40, FSA (??), 19:51, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Резонный вопрос: зачем? Если мне нужен сервер БД, то я беру PostgreSQL. Если мне нужно накидать простенькую аппликуху, которая не подразумевает сети и сервера, то беру SQLite. Если я подразумеваю, что моя аппликуха может потом работать в сети, то я сразу беру PostgreSQL. Другие, по желанию вместо PostgreSQL могут использовать MySQL, если она их устраивает. Но зачем мне SQLite в сети, хоть убей, не пойму.
     
     
  • 2.41, Аноним (41), 20:10, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы хранить, делиться с подружками. анализировать, искать кулинарные рецепты? )
     
  • 2.42, BrainFucker (ok), 20:24, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чтобы прикостылить серверную БД там где уже используется sqlite в каком-то стороннем проекте. Например так можно синхронизитьвать историю и закладки firefox без использования их облака.
     
  • 2.48, Аноним (47), 11:54, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    "В качестве областей применения sqld отмечается резервное копирование, репликация на другие системы и организация доступа к БД SQlite в бессерверных инфраструктурах, в которые отсутствует постоянное хранилище и невозможно обеспечить ведение базы в локальном файле. В бессерверных системах, БД, с которой работает sqld, может реплицироваться с других серверов"  
    в новости же написано
     

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



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

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