Sobre o projeto
Datahike é um banco de dados Datalog durável que oferece APIs compatíveis com Datomic e semântica semelhante ao git. Construído sobre estruturas de dados persistentes com compartilhamento estrutural, os snapshots do banco de dados são valores imutáveis que podem ser mantidos, compartilhados e consultados sem locks ou cópias.
Principais capacidades descritas no README:
- Distributed Index Space: leitores acessam índices persistentes diretamente para escalar leituras sem conexões ao banco de dados.
- Armazenamento flexível via konserve: backends File, LMDB, S3, JDBC, Redis e IndexedDB.
- Suporte multiplataforma: JVM, Node.js e navegador, com APIs Clojure, ClojureScript, JavaScript e Java.
- Sincronização em tempo real via WebSocket com Kabel para comunicação navegador-servidor.
- Viagem no tempo: consulte qualquer estado histórico com trilha de auditoria completa de transações.
- Purga de dados para conformidade regulatória (pronto para GDPR).
- Uso em produção relatado com bilhões de datoms, incluindo implantação em serviços governamentais.
O projeto defende Datalog em vez de SQL para dados com muitos relacionamentos: correspondência de padrões sobre relacionamentos, consultas transitivas e recursivas, e junções entre múltiplos bancos de dados são expressas naturalmente. A imutabilidade trata o banco de dados como um log somente-anexação de fatos, permitindo trilhas de auditoria, depuração por viagem no tempo e excisão de dados.
O uso centra-se em uma API Clojure (datahike.api) com create-database, connect, transact, q, history, release e delete-database. A API visa ser um substituto direto para um subconjunto do Datomic na JVM. A configuração abrange backends de armazenamento e flexibilidade de esquema.
Bindings de linguagem em beta incluem JavaScript (pacote npm), uma ferramenta CLI nativa GraalVM (dthk), um pod Babashka, uma API Java com builder fluente, bindings nativos C/C++ (libdatahike) e bindings Python. O suporte ClojureScript abrange Node.js (backend de arquivo) e navegadores (IndexedDB com TieredStore).
Projetos de exemplo incluem Beleg, um sistema de faturamento e CRM com interface web e geração de PDF em LaTeX. Usuários em produção citados incluem o Serviço Público de Emprego da Suécia (JobTech Taxonomy, mais de 40.000 conceitos, migrado do Datomic), Stub (contabilidade para pequenas empresas na África do Sul) e a Universidade de Heidelberg para pesquisa interna de rastreamento de emoções.
Projetos relacionados: Proximum fornece um índice vetorial HNSW para busca semântica e RAG sobre o modelo persistente do Datahike; pg-datahike incorpora um adaptador compatível com PostgreSQL (protocolo de rede, tradutor SQL, catálogos pg_*) para que clientes PostgreSQL possam se conectar sem uma instalação do PostgreSQL, com integração bidirecional na camada de datoms e round-tripping de pg_dump (beta).
Datahike faz parte do ecossistema replikativ e é composto por bibliotecas reutilizáveis: konserve (armazenamento chave-valor plugável), kabel (transporte WebSocket), hasch (hashing endereçável por conteúdo), incognito (serialização extensível), superv.async (supervisão de core.async), replikativ (sincronização CRDT) e distributed-scope (invocação remota).
As decisões de roadmap são orientadas pela comunidade por meio de votos em ideias no GitHub Discussions. Suporte comercial é oferecido. Licenciado sob a Eclipse Public License.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.