프로젝트 소개

immudb는 불변성과 제로 트러스트 원칙을 중심으로 구축된 경량 오픈소스 데이터베이스입니다. 레코드는 새 버전으로 추가할 수 있지만 수정하거나 삭제할 수 없으며, 모든 변경 사항은 데이터베이스 서버 자체를 신뢰하지 않고도 클라이언트가 검증할 수 있는 암호학적으로 일관된 검증 가능한 이력으로 추적됩니다. 이 데이터베이스는 관계형(SQL) 데이터베이스, 키-값 저장소, 문서 모델 데이터베이스로 작동할 수 있으며, 독립 실행형 서비스로 실행하거나 Go 라이브러리로 프로세스 내 임베딩할 수 있습니다. 프로젝트에 문서화된 주요 기능: - 멀티 모델 접근: 트랜잭션 및 블롭을 지원하는 SQL, 검증된 읽기/쓰기가 가능한 키-값 API, 문서 모델. - PostgreSQL 와이어 프로토콜 호환성: 표준 PostgreSQL 클라이언트 및 ORM(psql, pgAdmin, JDBC, SQLAlchemy, Django, GORM, ActiveRecord, lib/pq, pgx)이 직접 연결할 수 있습니다. 지원되는 SQL 기능에는 RETURNING 절, 일반 테이블 표현식(WITH / WITH RECURSIVE), 윈도우 함수(ROW_NUMBER, RANK, LAG, LEAD 등), 뷰, 시퀀스, 다양한 조인 및 하위 쿼리, 집합 연산, SAVEPOINT 기반 트랜잭션 제어, COPY FROM stdin 대량 임포트, 부분 인덱스, 75개 이상의 내장 함수가 포함됩니다. pg_catalog 및 information_schema 테이블을 통한 카탈로그 에뮬레이션은 ORM 인트로스펙션을 지원합니다. 문서화된 제한 사항에는 저장 프로시저/PLpgSQL 미지원, GIN/GiST 인덱스 미지원(B-tree만 지원), 생성 열 미지원이 있습니다. - 시간 여행 쿼리: DIFF OF SQL 구문은 두 트랜잭션 범위 간 테이블 상태를 비교하고 행을 INSERT, UPDATE 또는 DELETE로 분류합니다. - SQL을 통한 암호학적 검증: immudb_state(), immudb_verify_row(), immudb_verify_tx(), immudb_history()와 같은 함수를 통해 쿼리에서 증명 시스템을 직접 노출합니다. - 구조화된 감사 로깅: 모든 gRPC 작업(타임스탬프, 사용자, IP, 데이터베이스, 메서드, 카테고리, 지속 시간, 세션 ID)에 대한 선택적 불변 JSON 감사 이벤트를 지원하며, immudb의 자체 변조 방지 KV 저장소에 저장되고 SIEM 시스템으로 내보낼 수 있습니다. - 배포 옵션: 사전 빌드된 바이너리, Docker 이미지, Kubernetes Helm 차트, 임베디드 라이브러리 모드. 데이터는 Amazon S3 또는 MinIO와 같은 S3 호환 대체 저장소에 저장할 수 있으며, AWS IAM 역할 및 Fargate 자격 증명 소싱을 지원합니다. - 클라이언트 생태계: Java, Go(GORM 어댑터 포함), .NET, Python, Node.js용 공식 SDK; 대화형 관리를 위한 immuclient CLI; SDK가 없는 언어를 위한 REST 게이트웨이인 immugw. Rust 사용자는 crates.io의 immudb 크레이트가 비공식적이므로 표준 PostgreSQL 클라이언트 또는 생성된 gRPC 코드를 사용하도록 안내됩니다. - 보안 강화: 아카이브 복원 시 경로 탐색 검증, 사용자/권한 변경 시 즉시 세션 무효화, 제한된 토큰 파일 권한, PostgreSQL 호환 서버가 TLS 없이 실행될 때 표시되는 시작 경고. 보고된 실제 사용 사례에는 민감한 필드 변경 사항(예: 결제 데이터)의 불변 저장, CI/CD 빌드 레시피 보호, 인증서 및 체크섬 저장, 변조 증거 로그 스트림, 센서 또는 위치 데이터 기록 등이 포함됩니다. 프로젝트 사이트에서는 문서, 웹 콘솔 데모, Python SDK 플레이그라운드를 제공합니다.