{"id":25835673,"url":"https://github.com/gixxi/lambdaroyal-memory","last_synced_at":"2026-09-09T06:30:16.630Z","repository":{"id":26671296,"uuid":"30127878","full_name":"gixxi/lambdaroyal-memory","owner":"gixxi","description":"STM-based in-memory database storing persistent data structures","archived":false,"fork":false,"pushed_at":"2026-02-08T23:17:38.000Z","size":1529,"stargazers_count":22,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-07-25T11:33:44.306Z","etag":null,"topics":["clojure","in-memory-database","software-transactional-memory","transaction"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gixxi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-01-31T22:00:49.000Z","updated_at":"2025-12-09T22:16:33.000Z","dependencies_parsed_at":"2025-06-08T01:49:34.535Z","dependency_job_id":null,"html_url":"https://github.com/gixxi/lambdaroyal-memory","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/gixxi/lambdaroyal-memory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gixxi%2Flambdaroyal-memory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gixxi%2Flambdaroyal-memory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gixxi%2Flambdaroyal-memory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gixxi%2Flambdaroyal-memory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gixxi","download_url":"https://codeload.github.com/gixxi/lambdaroyal-memory/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gixxi%2Flambdaroyal-memory/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37175868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-09T02:00:06.536Z","response_time":53,"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","in-memory-database","software-transactional-memory","transaction"],"created_at":"2025-03-01T01:27:27.801Z","updated_at":"2026-09-09T06:30:16.091Z","avatar_url":"https://github.com/gixxi.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![LICENSE](https://img.shields.io/badge/license-Anti%20996-blue.svg?style=flat-square)](https://github.com/996icu/996.ICU/blob/master/LICENSE)\n\n# lambdaroyal-memory\nSTM-based in-memory database storing persistent data structures\n\n[Release Notes](https://github.com/gixxi/lambdaroyal-memory/blob/master/relnotes.md)\u003cbr/\u003e\n[Usage](https://github.com/gixxi/lambdaroyal-memory/blob/master/doc/usage.md)\n\n## Dependencies\n\nLeiningen\n\n```clojure\n[org.clojars.gixxi/lambdaroyal-memory \"1.3.2\"]\n```\n\nGradle\n```\ncompile \"org.clojars.gixxi:lambdaroyal-memory:1.3.2\"\n```\n\nMaven\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.clojars.gixxi\u003c/groupId\u003e\n  \u003cartifactId\u003elambdaroyal-memory\u003c/artifactId\u003e\n  \u003cversion\u003e1.3.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Classification\n\nlambdaroyal-memory is an in-memory database, that primarily recides in the volatile main memory. Either occasionally or always write operations are flushed to a persistent backup storage.\n\nRight now we support couchdb as well as MongoDB backup storage. The combination can be considered stable and is used in production since more than 9 years.\n\n## Speed\n\nRuntime for inserting 30000 complex documents with several secondary indexes and referential integrity constraints by 10 concurrent actors. This charts get updated using *lein midje*\n\n![](https://raw.githubusercontent.com/gixxi/lambdaroyal-memory/master/test/stats/30000insertsBy10Threads.png)\n\n[More on performance](https://github.com/gixxi/lambdaroyal-memory/blob/master/doc/performance.md)\n\nMachine \u0026 Runtime Specs\n\n*Migrated from i5 to i7 in Sept. 2016*\n\n```\nMemory:        16GB RAM @ 2133 Mhz\nCPU:           Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz\nJava(TM) SE Runtime Environment (build 1.8.0_91-b14)\norg.clojure/clojure \"1.8.0-RC4\"\n```\n\n## Conceptual Data Model\n\nlambdaroyal-memory stores user data as key/value pairs, where the key is\nan orderable literal and the value is an arbitrary document. More\nprecisily the document is at least immutable and optional\npersistent. Here persistence relates to persistent data structure that\nreflect all past modifications to the datastructure and are the\ncornerstone of clojure's ability to handle state and identity as two\ndifferent things, which turns out to be fundamental for clojure's\nmultiversion concurrency control-backed implementation of software\ntransactional memory (STM).\n\nkey/value pairs are not unrelated. Each key/value pair belongs to a\nnamed collection. So the user can group key/value pairs by a certain\ncognitive model. But this cognitive model is not covered by\nlambdaroyal-memory. For the opposite consider a relational database\nmanagement systems that relies a proper (meta) description of the tuples\nstored in individual relations, more technical the user describes the\nrelations in terms of attributes, the value ranges, certain constraints\nlike primary key constraints and foreign key constraints, index\nconstraints and so on. Those manifest a necessary subset of the\ncognitive or ontological model.\nHere we stick to the key/value pairs grouped into named\ncollections. that is almost all lambdaroyal-memory knows on the meta\nlevel - almost all. What's left are constraints on the keys and\nattributes of the value of key/value pairs.\n\nThis constraint are fundamentally speaking functional constraints,\nconcrete instances are indexes to speed-up data retrival and to back\nother constraint like unique-constraints.\n\n### Data Model from an User Point of View\n\n![](https://raw.githubusercontent.com/gixxi/lambdaroyal-memory/master/design/current.datastructures/abstraction.high.png)\n\n### Data Model from an Technical Point of View\n\n![](https://raw.githubusercontent.com/gixxi/lambdaroyal-memory/master/design/current.datastructures/abstraction.low.png)\n\n## Meta Model\n\nThe meta model reflects the conceptual data model in technical terms\nthat brings all information to the stake the database management system\nneeds to perform necessary checks on the user operations like read,\ninsert and update; to speed up the same and more fundamental to process\na transaction (here ACI Transaction, A...atomar, C...consistent,\nI...isolated)\n\nThe metamodel states the subsequently given facts on the elements of the\nconceptual data model\n\n* collection\n\nwhere collection is a tuple of \n\n* name of the collection\n* unique constraint\n* further functional constraints\n* indexes per collection\n* eviction channel that serves as persistent backup\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgixxi%2Flambdaroyal-memory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgixxi%2Flambdaroyal-memory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgixxi%2Flambdaroyal-memory/lists"}