<div align="center">
<img src="https://raw.githubusercontent.com/NodeDB-Lab/nodedb/HEAD/assets/wordmark.svg" alt="NodeDB" width="420">
<h3>AI 에이전트를 위한 메모리 및 스토리지 엔진 — 엣지부터 클라우드까지.</h3>
<p>
에이전트가 실행되는 곳에서 작동하는, 내구성 있고(Durable), 쿼리가 가능하며(queryable), 접근 제어가 가능한(access-guarded) 메모리입니다. 장치에 임베딩되어 작동하고, 오프라인 상태에서도 사용 가능하며, 연결 시 분산 서버와 동기화됩니다.
하나의 엔진, 하나의 프로세스로 의미론적(Semantic), 관계형(relational), 에피소드별(episodic), 그리고 시계열 메모리를 제공하며, 이들 간에 네트워크 허브(network hops)가 없습니다.
</p>
<p>
<a href="https://nodedb.dev/docs/introduction/quickstart/"><strong
angle빠른 시작 (Quickstart)</strong
angle</a>
·
<a href="https://nodedb.dev/docs"><strong
angle문서 (Docs)</strong
angle</a>
·
<a href="#performance"><strong
angle벤치마크 (Benchmarks)</strong
angle</a>
·
<a href="https://github.com/NodeDB-Lab/nodedb-lite"><strong
angleNodeDB-Lite</strong
angle</a>
·
<a href="https://github.com/NodeDB-Lab/nodedb-cli"><strong
angleCLI</strong
angle</a>
</p>
<p align="center">
<a href="https://discord.gg/s54gDMVc7B">
<img src="https://raw.githubusercontent.com/NodeDB-Lab/nodedb/HEAD/assets/discord-cta.svg" alt="NodeDB Discord 참여하기" width="340">
</a>
</p>
<p>
<a href="https://github.com/NodeDB-Lab/nodedb/actions/workflows/ci.yml">
<img src="https://img.shields.io/github/actions/workflow/status/NodeDB-Lab/nodedb/ci.yml?branch=main&label=ci" alt="CI 상태">
</a>
<a href="https://github.com/NodeDB-Lab/nodedb/releases">
<img src="https://img.shields.io/github/v/release/NodeDB-Lab/nodedb?display_name=tag" alt="최신 릴리스">
</a>
<a href="https://github.com/NodeDB-Lab/nodedb/blob/main/LICENSE">
<img src="https://img.shields.io/badge/license-BUSL--1.1-blue" alt="라이선스">
</a>
<a href="https://github.com/NodeDB-Lab/nodedb/stargazers">
<img src="https://img.shields.io/github/stars/NodeDB-Lab/nodedb?style=social" alt="GitHub 스타">
</a>
</p>
</div>
AI 에이전트는 메모리가 필요합니다: 무엇을 들었는지, 사실들이 어떻게 관련되는지, 언제 무슨 일이 일어났는지, 그리고 지금 무엇이 중요한지에 대한 정보가 필요합니다. 일반적인 답변은 클라우드 벡터 스토어를 그래프 데이터베이스와 문서 스토어에 연결하거나 — 아니면 모든 것을 마크다운 파일에 쑤셔 넣고 기대하는 것입니다. NodeDB는 이 모든 것을 에이전트가 실행되는 곳에서 실행되는 하나의 엔진에 담았습니다: 같은 엔진이 노트북, 휴대폰 또는 브라우저(NodeDB-Lite)에 임베드되고 분산 클러스터(NodeDB Origin)로 확장되며, 이들 사이에는 CRDT 동기화가 이루어집니다.
이는 이미 코딩 에이전트를 위한 메모리 및 지식 계층인 ma8e를 구동하고 있습니다. ma8e는 임베디드 NodeDB만을 사용하여 완전히 구축되었으며 — 결정론적 캡처, 하이브리드 검색, 접근 가드를 단일 프로세스에서 네트워크 호핑 없이 제공합니다.
NodeDB가 필요한 이유
-
에이전트가 실행되는 곳에서 작동하는 메모리. 같은 엔진이 장치와 브라우저(NodeDB-Lite, WASM)에 임베드되어 오프라인으로 작동하며 서버와 충돌 없이 동기화됩니다(CRDT). 클라우드 벡터 스토어는 에이전트 옆에 임베드될 수 없으며; 마크다운 파일은 쿼리하거나 접근 가드를 적용할 수 없습니다.
-
하나의 쿼리로 에이전트 메모리 전체를 처리. 벡터 검색, 그래프 순회(graph traversal), 전문 검색 순위 지정(full-text ranking), 문서 저장소, 시계열 데이터, 키-값 쌍 등이 하나의 스토리지 코어, 하나의 식별 공간, 그리고 하나의 플래너를 공유합니다 — 따라서 쿼리가 의미론적 검색에서 시작하여 전문 검색으로 필터링된 그래프 순회로 단일 프로세스 내 네트워크 호핑 없이 흐릅니다. 멀티모달(Multi-model)은 NodeDB가 이를 수행하는 방식입니다. 중요한 것은 라벨이 아니라 그 기능성입니다.
-
PostgreSQL 와이어 프로토콜. psql 또는 모든 PostgreSQL 클라이언트 라이브러리와 연결할 수 있습니다. 표준 SQL을 사용하며, SQL로 표현할 수 없는 작업에 대해서는 엔진별 확장 기능을 활용합니다.
-
다양한 언어 스택 대신 하나의 엔진. 엣지(edge)를 넘어서게 될 때, 같은 엔진이 서버 측의 분리된 시스템들의 복잡성을 단일 배포로 통합합니다 — 실행해야 할 서비스가 적고, 시스템 간 동기화 파이프라인이 필요 없으며, 스키마 드리프트도 없습니다.
-
성능에 진심입니다. io_uring을 사용한 스레드당 코어 데이터 플레인, SIMD 가속 거리 함수, 제로 카피 MessagePack 전송, 컬럼별 압축(ALP, FastLanes, FSST, Gorilla)을 지원합니다. 아래 벤치마크를 확인하세요.
시계열 데이터 수집 및 쿼리 벤치마크 — 10M 행, 고카디널리티 DNS 원격 측정(50K+ 고유 도메인 이름). 단일 노드, NVMe 스토리지.
수집 (Ingest)
| 엔진 | 속도 (Rate) | 시간 (Time) | 메모리 (Memory) | 디스크 (Disk) |
|---|
| NodeDB | 93,450/s | 107초 | 120 MB | 2,217 MB |
| ... | | | | |
쿼리 (Queries) (ms, 3회 중 최저값)
| 쿼리 | NodeDB | ClickHouse | TimescaleDB | InfluxDB (2M) |
|---|
COUNT(*) | <1 | 1 | 423 | 13,110 |
| ... | | | | |
| NodeDB는 전문 시계열 데이터베이스가 아님에도 불구하고 TimescaleDB보다 1.65배 빠르고 ClickHouse보다 1.73배 빠른 속도로 데이터를 수집하며 메모리 사용량은 8분의 1 수준입니다. 쿼리 지연 시간(Query latency)은 낮은 카디널리티 집계에서는 ClickHouse와 경쟁할 만하고, 높은 카디널리티의 GROUP BY 작업에서는 3~5배 이내로 성능을 보입니다. 이는 범용 엔진의 트레이드오프인데, 다섯 가지 전문 도구 대신 하나의 시스템을 얻는 대신, 그 성능이 전문 도구들과 비슷한 수준(in the same ballpark)에 머무른다는 의미입니다. | | | | |
엔진 (Engines)
| 엔진 | 대체하는 것 | 주요 기능 |
|---|
| Vector | pgvector, Pinecone, Weaviate | HNSW와 SQ8/PQ 양자화, 적응형 비트맵 사전 필터링 |
| ... | | |
설치 (Install)
docker run -d \
-p 6432:6432 -p 6433:6433 -p 6480:6480 \
...
Linux 커널 >= 5.1 (io_uring) 필요. 연결 방법:
ndb -w
psql -h localhost -p 6432 -U nodedb -d default
CREATE COLLECTION users;
...
처음이신가요? 공식 문서 사이트의 Quickstart를 시작하세요: nodedb.dev/docs.
배포 모드 (Deployment Modes)
| 모드 | 사용 사례 |
|---|
| Origin (서버) | 완전 분산 데이터베이스. Multi-Raft, io_uring, pgwire 지원. 수평적 확장(Horizontal scaling). |
| ... | |
NodeDB-Lite
여덟 가지 엔진 모두 임베디드 라이브러리로 제공됩니다. Linux, macOS, Windows, Android, iOS 및 브라우저(WASM, 실험적)를 지원합니다.
- Lite 전용 -- 서버가 필요 없는 로컬 우선(local-first) 앱에 적합합니다. 벡터 검색, 그래프, FTS, 문서, 배열을 모두 인프로세스(in-process)로 처리하며 읽기 속도가 밀리초 이하입니다.
- Lite + Origin -- CRDT 동기화가 가능한 오프라인 우선(offline-first) 방식입니다. 쓰기는 로컬에서 발생하고, 온라인 상태가 되면 델타(deltas)가 Origin으로 병합됩니다. 순서에 관계없이 여러 장치가 수렴합니다.
- 동일 API --
NodeDb 트레이트(trait)는 Lite와 Origin 모두에서 동일합니다. 애플리케이션 코드를 변경하지 않고 임베디드 방식과 서버 방식 사이를 전환할 수 있습니다.
플랫폼 세부 정보 및 동기화 구성을 보려면 NodeDB-Lite를 참조하세요.
주요 기능 (Key Features)
쓰기 시 검증(Write-time validation) -- Typeguards가 스키마 없는 컬렉션에 대해 타입, 필수 필드, CHECK 제약 조건, DEFAULT/VALUE 표현식을 강제합니다. CONVERT COLLECTION x TO document_strict를 사용하여 엄격한 스키마로 발전시킬 수 있습니다.
Bitemporal 쿼리 -- 문서(Document), 컬럼형(Columnar), 시계열(Timeseries), 그래프(Graph), 배열(Array)에서 시스템 시간(감사 추적, audit trail)과 유효 시간(시간적 의미론, temporal semantics) 지원. 벡터(Vector), 전체 텍스트(Full-Text), 공간(Spatial), KV 인덱스는 해당 인덱싱 컬렉션을 통해 시간을 처리합니다. 과거에 존재했던 데이터나 특정 과거 날짜에 유효했던 데이터를 조회할 수 있습니다. 배열 엔진에서 GDPR을 준수하는 타일 삭제 기능이 제공됩니다.
다차원 배열 -- Z-order 인덱스 타일, 타일 수준 압축 및 bitemporal 지원을 갖춘 과학 컴퓨팅 기능을 제공합니다. 크로스 엔진 식별자(cross-engine identity)를 통해 벡터/그래프/텍스트와 융합된 쿼리에서 결합할 수 있습니다.
실시간(Real-time) -- 소비자 그룹을 이용한 CDC 변경 스트림(15ms 지연 시간). 스트리밍 구현된 뷰(materialized views). 영속적인 토픽(Durable topics). Cron 스케줄러. LISTEN/NOTIFY 기능이 제공됩니다. 이 모든 것은 이벤트 플레인(Event Plane)에 의해 구동됩니다.
프로그래밍 가능성(Programmability) -- IF/FOR/WHILE/LOOP를 사용하는 저장 프로시저(Stored procedures). 사용자 정의 함수(User-defined functions). 트리거(Trigger, 비동기/동기/지연 처리). SECURITY DEFINER 기능이 지원됩니다.
보안(Security) -- GRANT/REVOKE를 사용한 RBAC(역할 기반 접근 제어). 모든 엔진에서 $auth.* 컨텍스트를 이용한 행 수준 보안(Row-level security). 해시 체인 감사 로그(Hash-chained audit log). 테넌트별 암호화를 통한 다중 테넌시(Multi-tenancy) 지원. JWKS, mTLS, API 키가 사용됩니다.
여섯 가지 와이어 프로토콜(Six wire protocols) -- pgwire (PostgreSQL), HTTP/REST, WebSocket, RESP (Redis), ILP (InfluxDB line protocol), 네이티브 MessagePack을 지원합니다.
ndb -- TUI, 구문 강조 표시 및 탭 자동 완성을 갖춘 네이티브 CLI. psql의 대안입니다.
- NodeDB Studio -- 컬렉션 관리, 데이터 탐색 및 모니터링을 위한 GUI 클라이언트. (곧 출시 예정)
- nodedb-bench -- 경쟁 데이터베이스 대비 성능 벤치마크.
문서(Documentation)
공식 문서 사이트는 **nodedb.dev/docs**입니다. 빠른 시작(Quickstart)부터 시작하세요.
저장소 내 참조:
- Getting Started -- 빌드, 실행, 연결
- Architecture -- Three-plane execution model
- Engine Guides -- 각 엔진에 대한 심층 분석
- Security -- 인증(Auth), 역할 기반 접근 제어(RBAC), 행(Row) 수준 보안(RLS), 감사(audit), 다중 테넌시(multi-tenancy)
- Real-Time -- CDC, pub/sub, LIVE SELECT
- NodeDB-Lite -- 임베디드 엣지 데이터베이스
- AI Patterns -- RAG, GraphRAG, 에이전트 메모리(agent memory), 피처 스토어(feature store)
기여하기 (Contributing)
버그 수정, 엔진 개선, 새로운 코덱 및 분석기(analyzer), 테스트 커버리지, 문서화에 대한 기여를 환영합니다. PR을 열기 전에 CONTRIBUTING.md를 읽어보세요. NodeDB의 Three-Plane execution model은 검토자가 준수하는 엄격한 규칙들을 가지고 있습니다.
소스에서 빌드하기 (Building from Source)
개발 또는 기여를 위해:
git clone https://github.com/NodeDB-Lab/nodedb.git
cd nodedb
cargo build --release
...
릴리스 상태 (Release Status)
NodeDB Origin은 public beta 단계에 있으며, 현재 릴리스는 **v0.6.2 (2026-10-16)**입니다. 모든 여덟 개 엔진은 기능적으로 완성되었으며 테스트로 커버되었습니다. 서버 바이너리, Docker 이미지 및 crates.io 크레이트는 동일한 버전으로 배포됩니다. CRDT sync 프로토콜과 네이티브 프로토콜은 마이너 릴리스 간에 계속 변경되므로, NodeDB Lite와 nodedb-client를 서버와 함께 업그레이드해야 합니다.
v0.6 — Beta (오늘). 이 버전을 기반으로 새로운 제품을 구축하세요. 마이너 릴리스 간에는 내부 변경 사항(저장 레이아웃, 온디스크 형식, 복제 내부 구조)이 있을 것으로 예상됩니다: 0.5.0 데이터 디렉토리는 0.6에서 열 수 없으므로, 빈 디렉토리에서 0.6을 시작하세요. 패치 및 마이너 업데이트는 필요에 따라 적용됩니다. 베타 기간은 우리가 자체적으로 만들 수 없는 엣지 케이스를 발견하기 위해 실제 워크로드를 대상으로 합니다.
v1.0.0 — 프로덕션 준비 완료 (목표: 베타 안정화 기간 이후). 1.0이 보장하는 것:
- API 및 SQL 안정성 — 1.0 버전부터 semver 적용. 메이저 버전 내에서 SQL 또는 클라이언트-API 변경 사항 없음.
- 와이어 프로토콜 안정성 — pgwire, HTTP, 네이티브 MessagePack, RESP, ILP, WebSocket 고정(frozen).
- 디스크 형식 안정성 — 1.x 버전 내에서 파괴적인 마이그레이션 없음. 순방향 호환 업그레이드만 지원.
- 클러스터 및 Raft 안정성 — 1.x 버전 내에서 롤링 업그레이드 지원; 쿼럼을 깨는 변경 사항 없음.
- 성능 SLA(Service Level Agreement) — 엔진별 p50/p99 목표치 공개, CI에서 회귀 테스트 게이팅 적용.
- 보안 감사 — 서드파티 감사를 완료하고 1.0 배포 전 발견된 문제점 해결.
- 스토리지, 백업 및 복구 — 장애 주입(fault injection), 지속 부하, 충돌 재시작 주기 하에 완전히 테스트됨.
1.0 이전 버전에서는 릴리스 간 내부 구조가 변경될 수 있습니다. 이러한 변경 사항은 실제 프로덕션 환경에서 견고하게 만들어져야 하는 핵심 경로 작업(스토리지, 백업, 보안, 복구)입니다. 와이어 프로토콜과 SQL 표면은 깨지지 않겠지만, 그 아래의 모든 것은 1.0 버전이 나올 때까지는 자유롭게 변경될 수 있습니다.