{"id":27599656,"url":"https://github.com/sultanov-team/xtdb-tarantool","last_synced_at":"2025-08-28T12:19:46.683Z","repository":{"id":45629903,"uuid":"432469358","full_name":"sultanov-team/xtdb-tarantool","owner":"sultanov-team","description":"XTDB module allows you to use Tarantool (in-memory computing platform)","archived":false,"fork":false,"pushed_at":"2021-12-04T02:42:05.000Z","size":91,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-13T22:53:44.380Z","etag":null,"topics":["clojure","datalog","tarantool","xtdb","xtdb-module"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sultanov-team.png","metadata":{"files":{"readme":"readme.adoc","changelog":"changelog.adoc","contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-27T13:31:43.000Z","updated_at":"2023-07-20T11:22:10.000Z","dependencies_parsed_at":"2022-09-05T04:00:19.171Z","dependency_job_id":null,"html_url":"https://github.com/sultanov-team/xtdb-tarantool","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sultanov-team/xtdb-tarantool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sultanov-team%2Fxtdb-tarantool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sultanov-team%2Fxtdb-tarantool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sultanov-team%2Fxtdb-tarantool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sultanov-team%2Fxtdb-tarantool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sultanov-team","download_url":"https://codeload.github.com/sultanov-team/xtdb-tarantool/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sultanov-team%2Fxtdb-tarantool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272498233,"owners_count":24944819,"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","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["clojure","datalog","tarantool","xtdb","xtdb-module"],"created_at":"2025-04-22T15:40:38.408Z","updated_at":"2025-08-28T12:19:46.658Z","avatar_url":"https://github.com/sultanov-team.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"image:https://img.shields.io/github/license/sultanov-team/xtdb-tarantool[license,link=license]\nimage:https://codecov.io/gh/sultanov-team/xtdb-tarantool/branch/master/graph/badge.svg?token=3VpsOfOpH5)[codecov,link=https://codecov.io/gh/sultanov-team/xtdb-tarantool]\nimage:https://github.com/sultanov-team/xtdb-tarantool/workflows/build/badge.svg[build]\n\nimage:https://img.shields.io/clojars/v/team.sultanov/xtdb-tarantool.svg[clojars,link=https://clojars.org/team.sultanov/xtdb-tarantool]\n\n== XTDB Tarantool\n\nhttps://www.xtdb.com[XTDB] module allows you to use https://www.tarantool.io/[Tarantool] (in-memory computing platform).\n\n**Status: ** Alpha.\nThe design and prototyping stage.\n\n=== Installation\n\nAdd the following dependency in your project:\n\n[source,clojure]\n----\n;; project.clj or build.boot\n[team.sultanov/xtdb-tarantool \"0.1.61\"]\n\n;; deps.edn\nteam.sultanov/xtdb-tarantool {:mvn/version \"0.1.61\"}\n----\n\n=== Usage\n\n*Requirements*\n\nFirst you need to configure the Tarantool:\n\n- link:docker-compose.yaml[Docker compose]\n- link:src/main/tarantool/xtdb.lua[Tarantool configuration]\n\n[source,clojure]\n----\n;; src/develop/clojure/xtdb/tarantool/example.clj\n\n(ns xtdb.tarantool.example\n  (:require\n    [clojure.tools.namespace.repl :as tools.repl]\n    [integrant.core :as ig]\n    [integrant.repl :as ig.repl]\n    [integrant.repl.state :as ig.repl.state]\n    [xtdb.api :as xt]\n    [xtdb.tarantool :as tnt])\n  (:import\n    (java.io\n      Closeable)\n    (java.time\n      Duration)))\n\n\n(tools.repl/set-refresh-dirs \"src/dev/clojure\")\n\n\n(defn config\n  []\n  {::xtdb-tnt {::tnt-client             {:xtdb/module 'xtdb.tarantool/-\u003etnt-client\n                                         :username    \"root\"\n                                         :password    \"root\"}\n               :xtdb/tx-log             {:xtdb/module        'xtdb.tarantool/-\u003etx-log\n                                         :tnt-client         ::tnt-client\n                                         :poll-wait-duration (Duration/ofSeconds 5)}\n               :xtdb.http-server/server {:read-only?   true\n                                         :server-label \"[xtdb-tarantool] Console Demo\"}}})\n\n\n(defn prep\n  []\n  (ig.repl/set-prep! config))\n\n\n(defn go\n  []\n  (prep)\n  (ig.repl/go))\n\n\n(def halt ig.repl/halt)\n(def reset-all ig.repl/reset-all)\n\n\n(defn system\n  []\n  ig.repl.state/system)\n\n\n(defmethod ig/init-key ::xtdb-tnt [_ config]\n  (xt/start-node config))\n\n\n(defmethod ig/halt-key! ::xtdb-tnt [_ ^Closeable node]\n  (tnt/close node))\n\n\n(comment\n\n  (reset-all)\n  (halt)\n  (go)\n  ;; open http://localhost:3000/\n\n\n  (def node\n    (::xtdb-tnt (system)))\n\n\n  (xt/submit-tx node [[::xt/put {:xt/id \"xtdb-tarantool\", :user/email \"ilshat@sultanov.team\"}]])\n  ;; =\u003e #:xtdb.api{:tx-id 1, :tx-time #inst\"2021-12-04T01:27:15.641-00:00\"}\n\n\n  (xt/q (xt/db node) '{:find  [e]\n                       :where [[e :user/email \"ilshat@sultanov.team\"]]})\n  ;; =\u003e #{[\"xtdb-tarantool\"]}\n\n\n  (xt/q (xt/db node)\n        '{:find  [(pull ?e [*])]\n          :where [[?e :xt/id \"xtdb-tarantool\"]]})\n  ;; =\u003e #{[{:user/email \"ilshat@sultanov.team\", :xt/id \"xtdb-tarantool\"}]}\n\n\n  (def history (xt/entity-history (xt/db node) \"xtdb-tarantool\" :desc {:with-docs? true}))\n  ;; =\u003e [#:xtdb.api{:tx-time #inst\"2021-12-04T01:31:14.080-00:00\",\n  ;;               :tx-id 2,\n  ;;               :valid-time #inst\"2021-12-04T01:31:14.080-00:00\",\n  ;;               :content-hash #xtdb/id\"d0eb040d39fbdaa8699d867bc9fb9aa244b8e154\",\n  ;;               :doc {:user/email \"ilshat@sultanov.team\", :xt/id \"xtdb-tarantool\"}}]\n\n\n  (-\u003e\u003e (map ::xt/doc history)\n       (filterv (comp (partial = \"ilshat@sultanov.team\") :user/email)))\n  ;; =\u003e [{:user/email \"ilshat@sultanov.team\", :xt/id \"xtdb-tarantool\"}]\n  )\n----\n\n=== Roadmap\n\n- [x] Add tx-log\n- [ ] Add kv-store\n- [ ] Add document-store\n- [ ] Add logging\n- [ ] Improve tests\n- [ ] Add automatic tarantool configuration (in-memory / vinyl)\n- [ ] Add an example of using a tarantool cartridge\n- [ ] Add an example of using a tarantool kubernetes operator (single node / cluster / with sharding)\n- [ ] Add rockspec and publish tarantool configuration to https://luarocks.org[luarocks]?\n\n=== Workflow\n\n==== Development\n\n[source,bash]\n----\n# run tarantool\n$ bb up\n\n# stop tarantool\n$ bb down\n\n# run repl\n$ bb repl\n\n# check for outdated dependencies \n$ bb outdated\n\n# upgrade outdated dependencies\n$ bb outdated:upgrade\n----\n\n==== Testing\n\n[source,bash]\n----\n# run linters\n$ bb lint \n\n# run linters and fix issues\n$ bb lint:fix\n\n# run only unit tests\n$ bb test:unit\n\n# run only integration tests (requires a running tarantool)\n$ bb test:integration\n\n# run all tests\n$ bb test\n----\n\n==== Build \u0026 deploy\n\n[source,bash]\n----\n# build jar\n$ bb jar\n\n# install locally\n$ bb install\n\n# deploy to clojars\n$ bb deploy\n----\n\n==== Other tasks\n\n[source,bash]\n----\n$ bb tasks\n----\n\n=== License\n\nCopyright © 2021 sultanov.team\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsultanov-team%2Fxtdb-tarantool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsultanov-team%2Fxtdb-tarantool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsultanov-team%2Fxtdb-tarantool/lists"}