All Projects → smondet → trakeva

smondet / trakeva

Licence: other
Transactions, Keys, and Values

Programming Languages

ocaml
1615 projects
Makefile
30231 projects

Projects that are alternatives of or similar to trakeva

Libmdbx
One of the fastest embeddable key-value ACID database without WAL. libmdbx surpasses the legendary LMDB in terms of reliability, features and performance.
Stars: ✭ 729 (+2937.5%)
Mutual labels:  key-value, transaction
Nessdb
A very fast transactional key-value, embedded database storage engine in Fractal-Tree. Teaching/Research purposes only.
Stars: ✭ 786 (+3175%)
Mutual labels:  key-value, transaction
Gkvdb
[mirror] Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。基于纯Go语言实现,具有优异的跨平台性,良好的高可用及文件IO复用设计,高效的底层数据库文件操作性能,支持原子操作、批量操作、事务操作、多表操作、多表事务、随机遍历等特性。
Stars: ✭ 109 (+354.17%)
Mutual labels:  key-value, transaction
FastKV
FastKV is an efficient key-value storage library.
Stars: ✭ 275 (+1045.83%)
Mutual labels:  key-value
SimpleCoin
A simple cryptocurrency application for educational purposes only.
Stars: ✭ 13 (-45.83%)
Mutual labels:  transaction
ddal
DDAL(Distributed Data Access Layer) is a simple solution to access database shard.
Stars: ✭ 33 (+37.5%)
Mutual labels:  transaction
web trader
📊 Python Flask game that consolidates data from Nasdaq, allowing the user to practice buying and selling stocks.
Stars: ✭ 21 (-12.5%)
Mutual labels:  transaction
OGMNeo
[No Maintenance] Neo4j nodeJS OGM(object-graph mapping) abstraction layer
Stars: ✭ 54 (+125%)
Mutual labels:  transaction
keyval-resource
a resource that passes key values between jobs
Stars: ✭ 39 (+62.5%)
Mutual labels:  key-value
beryldb
BerylDB is a fully modular data structure data manager that can be used to store data as key-value entries. The server allows channel subscription and is optimized to be used as a cache repository. Supported structures include lists, sets, multimaps, and keys.
Stars: ✭ 201 (+737.5%)
Mutual labels:  key-value
trans-dsl
a transaction model framework, seems simple but powerful
Stars: ✭ 64 (+166.67%)
Mutual labels:  transaction
ansible-role-etcd
Ansible role for installing etcd cluster
Stars: ✭ 38 (+58.33%)
Mutual labels:  key-value
saga-pattern-nodejs-aws
An implementation of Saga pattern for distributed transactions with NodeJS and AWS
Stars: ✭ 34 (+41.67%)
Mutual labels:  transaction
mxfactorial
a payment application intended for deployment by the united states treasury
Stars: ✭ 36 (+50%)
Mutual labels:  transaction
react-keyevent
An easy-to-use keyboard event react component, Package size less than 3kb
Stars: ✭ 38 (+58.33%)
Mutual labels:  key-value
redis-multi-programming-language-practice
🖖 Learn how to use Redis, from beginner basics to advanced techniques | 最新 Redis 底层原理分析与多语言应用实践
Stars: ✭ 28 (+16.67%)
Mutual labels:  key-value
arweave-python-client
This client allows you to integrate your python apps with the Arweave network allowing you to perform wallet operations and transactions
Stars: ✭ 87 (+262.5%)
Mutual labels:  transaction
Apriori-and-Eclat-Frequent-Itemset-Mining
Implementation of the Apriori and Eclat algorithms, two of the best-known basic algorithms for mining frequent item sets in a set of transactions, implementation in Python.
Stars: ✭ 36 (+50%)
Mutual labels:  transaction
KuiBaDB
Another OLAP database
Stars: ✭ 297 (+1137.5%)
Mutual labels:  transaction
LocalTransactionTableTest
利用rabbitmq做消息队列,通过本地消息事务表序列化消息,通过定时轮训保证消息强行落地,最终达到数据最终一致性
Stars: ✭ 19 (-20.83%)
Mutual labels:  transaction

Trakeva

Transactions, Keys, and Values: an attempt at a generic interface for transactional key-value stores with different backends.

The interfaces are defined in the Trakeva module. We have, for now, the following implementations of the module type Trakeva.KEY_VALUE_STORE:

  • Trakeva_sqlite (in the separate library trakeva_sqlite) uses Sqlite3-ocaml.
  • Trakeva_postgresql (in the separate library trakeva_postgresql) uses postgresql-ocaml
  • Trakeva_of_uri (in the separate library trakeva_of_uri) chooses dynamically between the 2 backends above thanks to the URI passed to the Trakeva_of_uri.load function. The backends are optionally compiled so they might be missing;load would then throw an exception.

There is also a very basic in “in-memory” cache functor, adding a cache layer on top of any key-value DB, cf. Trakeva_cache.

See also the repository smondet/trakeva for issues/questions.

Build

To install the libraries use opam:

opam install trakeva

If the packages sqlite3 and/or postgresql are installed, then the libraries trakeva_sqlite and/or trakeva_postgresql will be picked-up for installation too.

To build the development version from the repository, just run:

make configure
make

(this will enable all backends and the tests).

Tests

The tests/benchmarks also depend on the Sosa library (opam install sosa).

To run the unit tests:

./trakeva_tests

The main test starts a temporary Postgresql server on port 4242, this can be overridden with the environment variable POSTGRESQL_PORT. To use an existing database server instead of creating one use the variable POSTGRESQL_CONNECTION_INFO.

To run the benchmarks:

./trakeva_tests bench collection=100 kb=5     # quick bench
./trakeva_tests bench collection=1000 kb=20   # about a minute long

To build the documentation:

make doc

and checkout _doc/index.html.

Notes/Tips

Sqlite3 On MacOSX

See the issues #50, on the opam-repository and #21129 on Homebrew. So please use:

brew install pkg-config sqlite
export PKG_CONFIG_PATH=`find /usr/local/Cellar/sqlite -depth 1 | tail -n 1`/lib/pkgconfig
opam install sqlite3
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].