DaruDB
애플리케이션의 데이터를 로컬 파일 하나에 담는 임베디드 데이터베이스입니다. Rust로 작성한 엔진 하나와 그 위의 Node.js 바인딩으로 이뤄져 있습니다. 아직 초기 개발 단계라 배포된 패키지는 없고, 지금은 소스에서 직접 빌드해 씁니다.
프로젝트 소개
DaruDB는 애플리케이션 옆이 아니라 안에서 돌아가는 데이터베이스입니다. 설치하거나 띄울 서버가 없습니다. 프로그램이 파일을 열고, 그 안의 객체를 읽고 쓰고, 닫으면 끝입니다. 데스크톱 앱이나 모바일 앱, 명령줄 도구가 자기 데이터를 담아 두기에 맞는 저장소입니다. 엔진은 Rust로 한 번만 작성했고, 다른 언어는 동작을 보태지 않는 얇은 바인딩을 거쳐 같은 엔진에 닿습니다. 그래서 Node.js에서 쓴 파일을 Rust에서 읽어도 똑같이 읽힙니다.
데이터는 컬렉션 스키마로 선언하고, 코드로 조립하거나 텍스트로 쓴 쿼리로 다시 읽습니다. 인덱스와 객체 사이의 링크, 스키마 버전 사이의 마이그레이션도 갖추고 있습니다. 결과는 열린 데이터베이스에 묶인 핸들이 아니라 평범한 객체입니다. 파일은 키나 비밀번호로 페이지마다 암호화하고 인증할 수 있고, 여러 프로세스가 운영체제의 파일 잠금만으로 한 파일을 함께 씁니다. 커밋된 페이지는 제자리에 덮어쓰지 않으므로 도중에 프로세스가 죽어도 마지막으로 커밋된 상태가 남습니다. 무결성 검사와 온라인 백업, 컴팩션, 손상된 파일 복구 도구도 라이브러리에 함께 들어 있습니다.
DaruDB는 아직 초기 개발 단계입니다. Rust 크레이트와 Node.js 패키지는 설치하지 않고 소스에서 빌드해 쓰며, 첫 릴리스 전까지는 파일 형식이 마이그레이션 없이 바뀔 수 있고, Dart 패키지는 계획 중입니다. 속도와 내구성, 지원 플랫폼은 설계가 지향하는 목표이고, 각각을 뒷받침하는 벤치마크와 테스트가 저장소에 들어온 뒤에야 사실로 내세웁니다. 문서 사이트는 가이드와 엔진 설명, API를 영어와 한국어로 다룹니다.
기능
문서 지원
TypeScript 지원
다국어 지원
테스트로 검증됨
