このプロジェクトについて

Datahikeは、Datomic互換APIとgitライクなセマンティクスを提供する耐久性のあるDatalogデータベースです。構造共有を伴う永続データ構造上に構築されており、データベーススナップショットは不変の値であり、ロックやコピーなしに保持、共有、クエリできます。 READMEに記載されている主な機能: - 分散インデックス空間: リーダーはデータベース接続なしで永続インデックスに直接アクセスし、読み取りスケーリングを実現します。 - konserveによる柔軟なストレージ: File、LMDB、S3、JDBC、Redis、IndexedDBバックエンド。 - クロスプラットフォーム対応: JVM、Node.js、ブラウザで、Clojure、ClojureScript、JavaScript、Java APIを提供。 - KabelによるWebSocket上のリアルタイム同期で、ブラウザとサーバー間の通信を実現。 - タイムトラベル: 完全なトランザクション監査証跡を備え、任意の過去の状態をクエリ可能。 - 規制遵守のためのデータパージ(GDPR対応)。 - 数十億のdatomを扱う本番運用の報告があり、政府サービスへの導入も含まれます。 このプロジェクトは、関係性の多いデータに対してSQLよりもDatalogを主張しています。関係性に対するパターンマッチング、推移的・再帰的クエリ、マルチデータベース結合を自然に表現できます。不変性はデータベースをファクトの追記専用ログとして扱い、監査証跡、タイムトラベルによるデバッグ、データの切除を可能にします。 使用方法はClojure API(datahike.api)を中心とし、create-database、connect、transact、q、history、release、delete-databaseを提供します。このAPIは、JVM上のDatomicのサブセットに対するドロップイン代替を目指しています。設定はストレージバックエンドとスキーマの柔軟性をカバーします。 ベータ版の言語バインディングには、JavaScript(npmパッケージ)、GraalVMネイティブCLIツール(dthk)、Babashka pod、fluent builderを備えたJava API、C/C++ネイティブバインディング(libdatahike)、Pythonバインディングが含まれます。ClojureScriptサポートはNode.js(fileバックエンド)とブラウザ(TieredStoreを用いたIndexedDB)をカバーします。 サンプルプロジェクトには、Web UIとLaTeX PDF生成を備えた請求書およびCRMシステムであるBelegがあります。本番利用者として挙げられているのは、スウェーデン公共雇用サービス(JobTech Taxonomy、40,000以上の概念、Datomicから移行)、Stub(南アフリカの小規模事業者向け会計)、ハイデルベルク大学の内部感情追跡研究です。 関連プロジェクト: Proximumは、Datahikeの永続モデル上でセマンティック検索とRAGのためのHNSWベクトルインデックスを提供します。pg-datahikeはPostgreSQL互換アダプタ(ワイヤプロトコル、SQLトランスレータ、pg_*カタログ)を組み込み、PostgreSQLクライアントがPostgreSQLのインストールなしで接続できるようにし、双方向のdatom層統合とpg_dumpのラウンドトリップを備えています(ベータ)。 Datahikeはreplikativエコシステムの一部であり、再利用可能なライブラリで構成されています: konserve(プラグ可能なキーバリューストレージ)、kabel(WebSocketトランスポート)、hasch(内容アドレス可能ハッシュ)、incognito(拡張可能シリアライゼーション)、superv.async(core.asyncスーパービジョン)、replikativ(CRDT同期)、distributed-scope(リモート呼び出し)。 ロードマップの決定は、GitHub Discussionsのアイデアへの投票を通じてコミュニティ主導で行われます。商用サポートも提供されています。ライセンスはEclipse Public Licenseです。