README.md

The origin has been migrated to GitFlic

since on 2022-04-15 the Github administration, without any warning nor explanation, deleted libfpta along with a lot of other projects, simultaneously blocking access for many developers. For the same reason Github is blacklisted forever.

GitFlic’s developers plan to support other languages, including English 和 中文, in the near future.

Основной репозиторий перемещен на GitFlic

так как 15 апреля 2022 администрация Github без предупреждения и объяснения причин удалила libfpta вместе с массой других проектов, одновременно заблокировав доступ многим разработчикам. По этой же причине Github навсегда занесен в черный список.


libfpta

Fast Positive Tables, aka “Позитивные Таблицы” by Positive Technologies – Ultra fast, compact, embedded database for tabular and semistructured data: multiprocessing with zero-overhead, full ACID semantics with MVCC, variety of indexes, saturation, sequences and much more.

License Coverity Scan

English version by Google and by Yandex.

The Future will (be) Positive. Всё будет хорошо.

Кратко

“Позитивные Таблицы” или libfpta – это Ультрабыстрая, компактная, встраиваемая СУБД для табличных и полуструктурированных данных. “Позитивные Таблицы” основываются на B+Tree и отличается взвешенным набором компромиссов, благодаря чему достигается предельная производительность в целевых сценариях использования.

  1. Одновременный многопоточный доступ к данным из нескольких процессов на одном сервере.

    Поддерживаются операционные системы Linux (kernel >= 2.6.32, GNU libc >= 2.12, GCC >= 4.2), Mac OS (начиная с 10.11 “El Capitan”) и Windows (Windows 7/8/10, Windows Server 2008/2012/2016, MSVC 2015/2017).

  2. Обслуживание нескольких читателей без блокировок с линейным масштабированием производительности по ядрам CPU.

    Для читателей блокировки используются только при подключении и отключении от базы данных. Операции изменения данных никак не блокируют читателей.

  3. Строго последовательные изменения без затрат на конкурирующие блокировки (livelock) и с гарантией от взаимоблокировки (deadlock).

    В каждый момент времени может быть только один писатель (процесс изменяющий данные).

  4. Прямой доступ к данным без накладных расходов.

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

  5. Полная поддержка ACID на основе строгой MVCC и COW. Устойчивость к сбоям и отсутствие фазы восстановления. Возможность изменения данных только в памяти с отложенной асинхронной фиксацией на диске.

“Позитивные Таблицы” опираются на libfptu (aka “Позитивные Кортежи”) для представления данных и на libmdbx для их хранения, а также используют t1ha (aka “Позитивный Хэш”).

Однако, “Позитивные Таблицы” не являются серебряной пулей и вероятно не подойдут, если:

  • Размер одной записи (строки в таблице) больше 250 килобайт.
  • В запросах требуется обращаться одновременно к нескольким таблицам, подобно JOIN в SQL.
  • Сценарии использования требуют наличие WAL.

Более подробная информация пока доступна только в виде заголовочного файла API.


$ objdump -f -h -j .text libfpta.so

  libfpta.so:     формат файла elf64-e2k
  архитектура: elbrus-v6:64, флаги 0x00000150:
  HAS_SYMS, DYNAMIC, D_PAGED
  начальный адрес 0x0000000000014e50

  Разделы:
  Idx Name          Разм      VMA               LMA               Фа  смещ.  Выр.
   10 .text         001810f0  0000000000014e50  0000000000014e50  00014e50  2**3
                    CONTENTS, ALLOC, LOAD, READONLY, CODE

$ cc --version
  lcc:1.26.12:Jun-05-2022:e2k-v6-linux
  gcc (GCC) 9.3.0 compatible
Описание

Сверхбыстрая, компактная, встраиваемая база данных для табличных и полуструктурированных данных.

Релизы