datalevin/datalevin

A simple, fast and versatile Datalog database

해결하는 문제

Datalevin은 SQL 및 그래프 데이터베이스를 대체할 수 있는 간단하고 빠르며 다재다능한 대안으로 설계된 내구성 있는 Datalog 데이터베이스입니다. SQL의 복잡성을 더 선언적이고 구성 가능한 쿼리 언어를 제공함으로써 해결하며, 다른 Datalog 구현에서 볼 수 있는 복잡한 시간적 기능을 배제하여 삭제된 데이터가 영구적으로 사라지는 익숙한 ACID 준수 동작을 유지합니다.

작동 원리

Datalevin은 비용 기반 쿼리 최적화기를 사용하여 PostgreSQL 및 SQLite와 같은 RDBMS에 필적하는 성능을 달성합니다. LMDB (Lightning Memory-Mapped Database)의 포크를 기반으로 구축되어 높은 읽기 성능과 강력한 ACID 트랜잭션을 보장하며, 쓰기 집약적인 워크로드를 위해 선행 기록 로그 (WAL) 및 비동기 트랜잭션을 모두 지원합니다. 임베디드 라이브러리 (SQLite와 유사)로 작동하거나, Raft 기반의 고가용성 및 역할 기반 액세스 제어 (RBAC)를 갖춘 네트워크 클라이언트/서버 모드로 작동할 수 있습니다.

대상 사용자

SQL보다 Datalog의 선언적 특성과 암시적 조인 (implicit joins)을 선호하는 개발자, 그리고 관계형, 그래프, 문서 및 키-값 데이터 모델을 모두 처리해야 하는 개발자를 위해 설계되었습니다. 특히 Clojure 프로그램의 경우 네이티브 EDN 데이터 처리 능력 덕분에 매우 유용합니다.

주요 특징

  • 멀티 모델 기능: Datalog 쿼리, 문서 저장소 (JSON, EDN, Markdown) 및 자동 경로 인덱싱, SIMD 가속을 통한 벡터 데이터베이스 기능, 전체 텍스트 검색을 지원합니다.
  • AI 네이티브 기능: 로컬 MCP 서버가 내장되어 있으며, 통합된 llama.cpp를 통해 데이터베이스 내 임베딩 (embedding) 및 텍스트 생성을 지원합니다.
  • 고성능: 관계형 (JOB), 그래프 (LDBC SNB), 문서 (idoc) 및 로직 (OpenRuleBench) 워크로드 벤치마크에서 여러 대안보다 뛰어난 성능을 발휘합니다.
  • 광범위한 언어 지원: Java, Python, Node.js 및 Clojure용 라이브러리를 제공하며 babashka pods와 호환됩니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트