Coder Social home page Coder Social logo

erthink / libfpta Goto Github PK

View Code? Open in Web Editor NEW
132.0 10.0 17.0 16.25 MB

Ultra fast compact embedded database for tabular and semistructured data.

Home Page: https://www.ptsecurity.com/ww-en/products/mpsiem/

License: Apache License 2.0

CMake 1.72% C++ 97.59% C 0.69%
nosql storage-engine performance fpta perfomance mvcc semistructured-data embedded-database acid libmdbx

libfpta's Introduction

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 GithubCI CircleCI AppveyorCI CirrusCI 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).

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

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

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

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

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

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

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

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

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

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

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


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

libfpta.so:     file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x000000000000b410

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
 13 .text         0005ed06  000000000000b410  000000000000b410  0000b410  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
$ ldd libfpta.so
	linux-vdso.so.1 (0x00007ffd03be6000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f339aeb0000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f339ae96000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f339ac6e000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f339b15f000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f339ab8a000)

This is a mirror of the origin repository that was moved to abf.io because of discriminatory restrictions for Russian Crimea.

libfpta's People

Contributors

ajvengo avatar dartraiden avatar demfloro avatar dreamsxin avatar erthink avatar ethframe avatar flier avatar heirecka avatar hfuru avatar hyc avatar lemenkov avatar lmb avatar lukeyeager avatar mikkelfj avatar moneromooo-monero avatar orivej avatar pstorz avatar quanah avatar rouzier avatar rurban avatar timgates42 avatar troosh avatar unixod avatar vvromanov avatar wangjia184 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libfpta's Issues

MINOR: Test environment should be isolated

Currently libfpta uses /dev/shm or /tmp for temporary databases while testing.
This should be isolated on per-user basis to avoid conflicts.

Workaround:

  • don't start more that one test suite simultaneously.
  • manually delete all *.fpta and *.fpta-lck files inside /dev/shm or /tmp.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.