{"id":24022028,"url":"https://github.com/smondet/trakeva","last_synced_at":"2025-07-24T06:03:20.693Z","repository":{"id":65206577,"uuid":"27607718","full_name":"smondet/trakeva","owner":"smondet","description":"Transactions, Keys, and Values","archived":false,"fork":false,"pushed_at":"2017-11-03T12:11:37.000Z","size":91,"stargazers_count":23,"open_issues_count":12,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-15T21:48:01.434Z","etag":null,"topics":["database","key-value","ocaml","transaction"],"latest_commit_sha":null,"homepage":"http://www.hammerlab.org/docs/trakeva/master/index.html","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smondet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-05T19:57:46.000Z","updated_at":"2025-02-07T09:52:08.000Z","dependencies_parsed_at":"2023-01-16T14:52:18.340Z","dependency_job_id":null,"html_url":"https://github.com/smondet/trakeva","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smondet%2Ftrakeva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smondet%2Ftrakeva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smondet%2Ftrakeva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smondet%2Ftrakeva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smondet","download_url":"https://codeload.github.com/smondet/trakeva/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249161104,"owners_count":21222468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","key-value","ocaml","transaction"],"created_at":"2025-01-08T13:01:01.869Z","updated_at":"2025-04-15T21:48:06.642Z","avatar_url":"https://github.com/smondet.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"Trakeva\n=======\n\nTransactions, Keys, and Values: an attempt at a generic interface for\ntransactional key-value stores with different backends.\n\n\nThe interfaces are defined in the [Trakeva](src/lib/trakeva.mli) module.\nWe have, for now, the following implementations of the module type `Trakeva.KEY_VALUE_STORE`:\n\n- `Trakeva_sqlite` (in the separate library `trakeva_sqlite`) uses\n  [Sqlite3-ocaml](http://mmottl.github.io/sqlite3-ocaml/).\n- `Trakeva_postgresql` (in the separate library `trakeva_postgresql`) uses\n  [`postgresql-ocaml`](http://mmottl.github.io/postgresql-ocaml/)\n- `Trakeva_of_uri` (in the separate library `trakeva_of_uri`)\n  chooses dynamically between the 2 backends above thanks to the URI passed to\n  the `Trakeva_of_uri.load` function. The backends are optionally compiled so\n  they might be missing;`load` would then throw an exception.\n\nThere is also a very basic in “in-memory” cache functor, adding a cache layer on\ntop of any key-value DB, cf. `Trakeva_cache`.\n\nSee also the repository [`smondet/trakeva`](https://github.com/smondet/trakeva)\nfor issues/questions.\n\nBuild\n-----\n\nTo install the libraries use opam:\n\n    opam install trakeva\n\nIf the packages `sqlite3` and/or `postgresql` are installed, then the libraries\n`trakeva_sqlite` and/or `trakeva_postgresql` will be picked-up for installation\ntoo.\n\n\nTo build the development version from the repository, just run:\n\n    make configure\n    make\n\n(this will enable all backends and the tests).\n\nTests\n-----\n\nThe tests/benchmarks also depend on the\n[Sosa](http://seb.mondet.org/software/sosa/index.html) library\n(`opam install sosa`).\n\nTo run the unit tests:\n\n    ./trakeva_tests\n\nThe main test starts a temporary Postgresql server on port `4242`, this can be\noverridden with the environment variable `POSTGRESQL_PORT`.\nTo use an existing database server instead of creating one use the variable\n`POSTGRESQL_CONNECTION_INFO`.\n\nTo run the benchmarks:\n\n    ./trakeva_tests bench collection=100 kb=5     # quick bench\n    ./trakeva_tests bench collection=1000 kb=20   # about a minute long\n \nTo build the documentation:\n\n    make doc\n\nand checkout `_doc/index.html`.\n\n\nNotes/Tips\n----------\n\n### Sqlite3 On MacOSX\n\nSee the issues [#50](https://github.com/ocaml/opam-repository/issues/50), on the\nopam-repository and \n[#21129](https://github.com/Homebrew/homebrew/issues/21129) on Homebrew.  So\nplease use:\n\n    brew install pkg-config sqlite\n    export PKG_CONFIG_PATH=`find /usr/local/Cellar/sqlite -depth 1 | tail -n 1`/lib/pkgconfig\n    opam install sqlite3\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmondet%2Ftrakeva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmondet%2Ftrakeva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmondet%2Ftrakeva/lists"}