这个项目能做什么

Datahike 是一个持久化 Datalog 数据库,提供与 Datomic 兼容的 API 和类 git 语义。它基于具有结构共享的持久化数据结构构建,数据库快照是不可变值,可以持有、共享和查询,而无需锁或复制。 README 中描述的关键能力: - 分布式索引空间:读取器直接访问持久化索引,以实现读取扩展,而无需数据库连接。 - 通过 konserve 实现灵活存储:File、LMDB、S3、JDBC、Redis 和 IndexedDB 后端。 - 跨平台支持:JVM、Node.js 和浏览器,并提供 Clojure、ClojureScript、JavaScript 和 Java API。 - 通过 Kabel 在 WebSocket 上实现实时同步,用于浏览器到服务器的通信。 - 时间旅行:借助完整的事务审计轨迹查询任意历史状态。 - 为满足监管合规而进行数据清除(GDPR-ready)。 - 报告称已在生产中使用,处理数十亿个 datom,包括部署在政府服务中。 该项目主张,对于关系密集型数据,应使用 Datalog 而非 SQL:基于关系的模式匹配、传递和递归查询,以及多数据库连接,都可以自然表达。不可变性将数据库视为仅追加的事实日志,从而实现审计轨迹、通过时间旅行进行调试以及数据切除。 使用方式以 Clojure API(datahike.api)为中心,包括 create-database、connect、transact、q、history、release 和 delete-database。该 API 旨在成为 JVM 上 Datomic 一部分功能的直接替代品。配置涵盖存储后端和模式灵活性。 Beta 语言绑定包括 JavaScript(npm 包)、GraalVM 原生 CLI 工具(dthk)、Babashka pod、带流式构建器的 Java API、C/C++ 原生绑定(libdatahike)以及 Python 绑定。ClojureScript 支持涵盖 Node.js(文件后端)和浏览器(使用 TieredStore 的 IndexedDB)。 示例项目包括 Beleg,一个带有 Web UI 和 LaTeX PDF 生成的发票与 CRM 系统。提到的生产用户包括瑞典公共就业服务局(JobTech Taxonomy,40,000+ 概念,从 Datomic 迁移)、Stub(南非小企业会计)以及海德堡大学用于内部情绪追踪研究。 相关项目:Proximum 为 Datahike 的持久化模型提供用于语义搜索和 RAG 的 HNSW 向量索引;pg-datahike 嵌入了一个兼容 PostgreSQL 的适配器(wire protocol、SQL 翻译器、pg_* 目录),使 PostgreSQL 客户端无需安装 PostgreSQL 即可连接,并具备双向 datom 层集成和 pg_dump 往返能力(beta)。 Datahike 是 replikativ 生态系统的一部分,由可复用库组成:konserve(可插拔键值存储)、kabel(WebSocket 传输)、hasch(内容可寻址哈希)、incognito(可扩展序列化)、superv.async(core.async 监督)、replikativ(CRDT 同步)和 distributed-scope(远程调用)。 路线图决策通过 GitHub Discussions 的想法投票由社区驱动。提供商业支持。采用 Eclipse Public License 许可。