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 (журнально-структурированное дерево со слиянием), обеспечивающее высокую производительность не только при чтении, но и при выполнении операций записи и изменения данных. Операции чтения не блокируют запись и чтение данных, а операции записи блокируют только семейство столбцов в котором выполняется запись. Для дополнительного ускорения чтения поддерживаются индексы и кэширование на базе bloom-фильтров (позволяют проверить вхождение во множество, допуская ложное определение отсутствующего элемента, но исключая пропуск существующего элемента).

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

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

  • Поддержка семейств столбцов (Column Families) - изолированных наборов данных в формате ключ/значения. Для каждого семейства столбцов используются свои memtable, SSTable и WAL-лог.
  • ACID-транзакции, охватывающие несколько операций с семействами столбцов.
  • Оптимизация для параллельного доступа к данным.
  • Поддержка двунаправленных итераторов, позволяющих перебирать пары ключ/значение вперёд или назад относительно выбранной позиции в хранилище, используя изначально заданный метод сортировки.
  • Поддержка добавления своих функций сравнения ключей. Наличие встроенных функций сравнения memcmp, string и numeric.
  • Ведение лога операций (WAL, Write-Ahead Log) и автоматическое восстановление memtable (хранилище в оперативной памяти) из данного лога при запуске.
  • Использование Bloom-фильтров для минимизации обращений к накопителю за счёт проверки наличия ключа до чтения из SSTable (постоянное хранилище).
  • Поддержка алгоритмов Snappy, LZ4 и ZSTD для сжатия записей в хранилище SSTable и WAL-логе.
  • Возможность определения времени жизни записей (TTL) и автоматического исключения просроченных записей.
  • Три режима синхронизации данных в ОЗУ с постоянным хранилищем: NONE (самый быстрый), BACKGROUND (сбалансированный), FULL (наиболее надёжный).
  • Возможность настройки размера memtable, методов сжатия, bloom-фильтров, режима синхронизации и параметров упаковки для каждого семейства столбцов.
  • Простой 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 обязательно


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

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

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

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

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

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

  • 1.10, Аноним (10), 12:04, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Очередная хэштаблица под мьютексом? Вот это технологии
     

  • 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 тоже есть, только он суслик
     

  • 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 [^] [^^] [^^^] [ответить]  
  • +/
    *диктат
     
     
  • 4.22, Аноним (19), 14:00, 03/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.26, Аноним (-), 14:20, 03/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

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

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



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

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