The OpenNET Project / Index page

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

Доступен встраиваемый движок хранения TidesDB 1.0, поддерживающий ACID-транзакции

03.11.2025 10:53

Опубликован первый стабильный релиз проекта TidesDB, развивающего библиотеку для хранения данных в формате ключ/значение. Проект может использоваться как обособленно запускаемый движок или для встраивания в приложения. Из ключевых возможностей отмечается поддержка ACID-транзакций и оптимизация для эффективного хранения данных на Flash-накопителях и в оперативной памяти. Код написан на языке Си и распространяется под лицензией MPL 2.0. Обвязки подготовлены для языков C++, Go, Java, Python, Rust, Lua и JavaScript.

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

Имеется полная поддержка ACID-транзакций, позволяющих атомарно вносить изменения, охватывающие семейства столбцов, и при необходимости атомарно откатывать операции. Данные могут хранится в сжатом виде с выбором алгоритма сжатия в привязке к семейству столбцов. Возможно выставление блокировок на уровне отдельных семейств столбцов и упаковки хранилища в параллельном режиме без блокировки выполнения операций с БД.

Основные возможности:

  • Поддержка семейств столбцов (Column Families) - изолированных наборов данных в формате ключ/значения. Для каждого семейства столбцов используются свои memtable, SSTable и WAL-лог.
  • ACID-транзакции, охватывающие несколько операций с семействами столбцов.
  • Оптимизация для параллельного доступа к данным.
  • Поддержка двунаправленных итераторов, позволяющих перебирать пары ключ/значение вперёд или назад относительно выбранной позиции в хранилище, используя изначально заданный метод сортировки.
  • Поддержка добавления своих функций сравнения ключей. Наличие встроенных функций сравнения memcmp, string и numeric.
  • Ведение лога операций (WAL, Write-Ahead Log) и автоматическое восстановление memtable (хранилище в оперативной памяти) из данного лога при запуске.
  • Использование фильтров Блума для минимизации обращений к накопителю за счёт проверки наличия ключа до чтения из SSTable (постоянное хранилище).
  • Поддержка алгоритмов Snappy, LZ4 и ZSTD для сжатия записей в хранилище SSTable и WAL-логе.
  • Возможность определения времени жизни записей (TTL) и автоматического исключения просроченных записей.
  • Три режима синхронизации данных в ОЗУ с постоянным хранилищем: NONE (самый быстрый), BACKGROUND (сбалансированный), FULL (наиболее надёжный).
  • Возможность настройки размера memtable, методов сжатия, фильтров Блума, режима синхронизации и параметров упаковки для каждого семейства столбцов.
  • Простой C API, возвращающий 0 при успешном выполнении операции и -1 при ошибке.
  • Использование SBHA (Sorted Binary Hash Array) для быстрого поиска данных в SSTable, позволяющий определять смещения блоков с ключами без полного сканирования.
  • Компактный переносимый бинарный формат представления базы, поддерживающий версионирование.
  • Встроенные механизмы контроля целостности, определения повреждений данных и восстановления.


  1. Главная ссылка к новости (https://github.com/tidesdb/tid...)
  2. OpenNews: Проект Redis вернулся на использование открытой лицензии. Представлен Redis 8.0
  3. OpenNews: Опубликована СУБД immudb 1.0, обеспечивающая защиту от искажения данных
  4. OpenNews: Компания Alibaba открыла код распределённой СУБД PolarDB, основанной на PostgreSQL
  5. OpenNews: Яндекс открыл код распределённой СУБД YDB, поддерживающей SQL
  6. OpenNews: Выпуск встраиваемой СУБД libmdbx 0.13.7
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64171-tidesdb
Ключевые слова: tidesdb, database, nosql, storage
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:03, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –15 +/
    почему на си
     
     
  • 2.2, Аноним (2), 11:21, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +19 +/
    Потому что это лучший язык для всего.  
     

  • 1.3, Аноним (2), 11:21, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Лучше уж это чем sqlite.    
     
     
  • 2.4, Аноним (4), 11:23, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Лучше уж дышать кислородом, чем пить воду.
     
     
  • 3.23, Аноним (23), 14:16, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кто здесь кислород, а кто здесь вода?
     
     
  • 4.29, Витюшка (?), 15:10, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Проверочные слова "реляционная" и "ключ-значение"
     
     
  • 5.38, Аноним (38), 18:16, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Двое выше вряд ли знают первое слово и различия между этими двумя видами субд.
     
     
  • 6.39, Аноним (-), 18:31, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А ты расскажы барин. Что это за диво такое реляционное? У меня 3 класа церковно-приходского но божей помощтбю пойму ни сумливайся.
     
  • 2.9, Аноним (9), 11:56, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кому лучше, чем?
     
     
  • 3.11, Аноним (11), 12:04, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • –8 +/
    В случае sqlite он противопоказан просто всем. Это универсальное зло. Хуже электрона.  
     
     
  • 4.13, Аноним (13), 12:29, 03/11/2025 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 4.18, Аноним (9), 12:54, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > В случае sqlite он противопоказан просто всем. Это универсальное зло. Хуже электрона.

    Альтернативы? А нет их, не ищи. Если разработчика хоть немного беспокоит сохранность пользовательских данных, он возьмёт sqlite. Сравнение с электроном несколько странное.

     
     
  • 5.19, Аноним (19), 13:51, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не может быть универсальной замены. У каждой задачи свой инструмент.
     
     
  • 6.28, Аноним (9), 14:42, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скулайт универсальная замена для локальной базы данных или хранилища конфигов, некоторых пользовательских данных. Собственно, эта та область, в которой он распространён и применяется. Как надёжное универсальное key-value хранилище тоже пойдёт в некоторой мере.
     
     
  • 7.32, Аноним (32), 15:16, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Тормозное ненужное с лишним функционалом кейвелью в реляционной базе это как на работу вместо контейнера с едой брать целый холодильник.  
     
     
  • 8.34, Аноним (9), 15:54, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вылизано, отлажено и оптимизировано Поддерживается всем и везде Даже если не и... текст свёрнут, показать
     
     
  • 9.44, Аноним (44), 21:30, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты сейчас перечислил плюсы электрона про сикулайт есть что ... текст свёрнут, показать
     
     
  • 10.46, Аноним (9), 23:29, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Главная проблема электрона это хромоног Ну и то, что постоянно ломают всё Кажд... текст свёрнут, показать
     
  • 4.47, OpenEcho (?), 01:07, 04/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >  Это универсальное зло. Хуже электрона.

    Какие сильные аргументы !
    А по сути, кроме желчи, есть что сказать конкретное, - в чем зло то?

     

  • 1.5, Аноним (5), 11:28, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Нет ни каких функциональных преймуществ перед redis. И зачем оно?
     
     
  • 2.7, повар (?), 11:39, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У редиса нет поддержки Си++, Жабыскриптов и Pжaвчины.
    У редиса нет АКцИДа.
    У редиса нет журнала.
    У редиса нет ...
     
     
  • 3.24, Аноним (23), 14:17, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Поддержка Rust-а не нужна.
     
     
  • 4.31, повар (?), 15:15, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ок, я передам ваши пожелание шефу...
     

  • 1.6, Аноним (6), 11:39, 03/11/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +4 +/
     
  • 1.8, BrainFucker (ok), 11:44, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Этих k/v хранилищ расплодилось очень много, при этом не факт что через пару лет не забросят, при этом есть древний berkeley db, а то и вовсе можно просто табличку в обычной реляционной БД хранить.
     
     
  • 2.12, Аноним (11), 12:06, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это просто хранители в просто табличках умудряются себе отстрелить ногу из пушки.  
     
     
  • 3.48, OpenEcho (?), 01:10, 04/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Это просто хранители в просто табличках умудряются себе отстрелить ногу из пушки.  

    Оружие оно такое, детям давать не рекомендованно, тем более - пушки

     

  • 1.14, Аноним (14), 12:38, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  Обвязки подготовлены для языков C++, Go, Java, Python, Rust, Lua и JavaScript

    обвязка есть только для го, луа, цпп и питона

    https://github.com/orgs/tidesdb/repositories?type=all

     
     
  • 2.16, Аноним (16), 12:45, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    для Rust тоже есть, только он суслик
     
     
  • 3.41, _ (??), 19:38, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не-не! Туда C0С добавить и будет идеальная поддержка ржавчика! :)
     

  • 1.17, Аноним (17), 12:53, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жаль для C# нету.
     
     
  • 2.20, Аноним (19), 13:52, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что там дикакт Майкрософта.
     
     
  • 3.21, Аноним (19), 13:59, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    *диктат
     

  • 1.35, Аноним (35), 16:15, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очередная ключ-значение база, сколько можно то уже?
     
     
  • 2.36, Аноним (36), 16:56, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не так много тех, кто умеет транзакции между разными таблицами/семействами столбцов. Т.к. если это по-настоящему есть, то оно довольно дорого в реализации (бьет по производительности либо мешает партицировать). Эта шутка встраиваемая, партицировать некуда, так что круто что такая фича есть.
     
     
  • 3.42, _ (??), 19:43, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Не так много тех, кто умеет транзакции между разными таблицами/семействами столбцов.

    Но они - есть! Включая такую древность как Berkeley DB (которой за тридцатник уже).

    Это я не к тому что $subj - оно!(R), это я к тому что оно "неимеетаналохофф"(С) только для самых йуннЫх пЫонеров, а пЫонервожатая уже третий сезон .... :)

     
     
  • 4.45, Аноним (44), 21:35, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Все все равно будут юзать скулайт, потому что они в детстве как научились делать сикуль запросы программируя на пхп так и продолжают.
     
  • 2.37, Аноним (37), 18:13, 03/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Они же все разные? И появляются по разным причинам.
    Кому-то нужно гонять данные по сети, кому-то нужно быстро вставлять пачки данных, кому-то можно медленно вставлять, но очень быстро делать sequential scan и т.д.
    Это только кажется что их много, надо только выбрать нужное хранилище для твоей задачи.
    Как только начинаешь делать что-то нестандартное (или даже стандартное, но с высокой нагрузкой), то быстро понимаешь насколько в этой области все уныло.
     

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



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

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