How phucvohoai/njsql works
NJSQL is a standalone Java database server. Users connect through its CLI or network interfaces, authenticate, select a database, and issue SQL; the engine supports relational constraints over NSON tables. Separate capabilities cover real-time table updates, indexing, account permissions, and Git-inspired clone/push and conflict workflows. The excerpts show gRPC dispatch and parts of sharing, storage, and management; unsampled server and handler implementations limit claims about their internal wiring.
Main entry points: NJSQLGrpcService.java gRPC service · NJSQL.java NJSQL CLI · ShareServer.java Share server · TableUtils.java Table operations
Components 24
Access and APIs
- NJSQL CLI
src/main/java/njsql/NJSQL.java - HTTP server
src/main/java/njsql/server/NJSQLServer.java - gRPC service
src/main/java/njsql/grpc/NJSQLGrpcService.java - gRPC contract
src/main/proto/njsql.proto
Query and tables
- SQL executor
src/main/java/njsql/core/NJSQLExecutor.java - SELECT handler
src/main/java/njsql/core/SelectHandler.java - INSERT handler
src/main/java/njsql/core/InsertHandler.java - UPDATE handler
src/main/java/njsql/core/UpdateHandler.java - DELETE handler
src/main/java/njsql/core/DeleteHandler.java - Table operations
src/main/java/njsql/core/TableUtils.java - Realtime tables
src/main/java/njsql/core/RealtimeTableManager.java
Storage and indexing
- NSON database files
src/main/java/njsql/nson/NSON.java - NSON objects
src/main/java/njsql/nson/NsonObject.java - Index manager
src/main/java/njsql/core/IndexManager.java - B-tree indexes
src/main/java/njsql/indexing/BTreeIndexManager.java
Identity and permissions
- Authentication
src/main/java/njsql/core/Authenticator.java - User manager
src/main/java/njsql/core/UserManager.java - Permission manager
src/main/java/njsql/core/PermissionManager.java
Version sharing
- Share server
src/main/java/njsql/server/ShareServer.java - Commit manager
src/main/java/njsql/core/CommitManager.java - Clone handler
src/main/java/njsql/core/CloneHandler.java - Push handler
src/main/java/njsql/core/PushHandler.java
Other components
- Database user
- Remote database user
Connections 30
- Database user → NJSQL CLI: issues commands
- NJSQL CLI → Authentication: authenticates
- NJSQL CLI → HTTP server: starts
- Database user → HTTP server: sends requests
- Database user → gRPC service: sends queries
- gRPC contract → gRPC service: defines RPCs
- gRPC service → User manager: checks login
- gRPC service → SELECT handler: dispatches SELECT
- gRPC service → INSERT handler: dispatches INSERT
- gRPC service → UPDATE handler: dispatches UPDATE
- gRPC service → DELETE handler: dispatches DELETE
- gRPC service → Realtime tables: registers listeners
- Authentication → User manager: checks accounts
- Permission manager → User manager: updates accounts
- SQL executor → SELECT handler: dispatches queries
- SELECT handler → Table operations: reads tables
- INSERT handler → Table operations: writes rows
- UPDATE handler → Table operations: changes rows
- DELETE handler → Table operations: removes rows
- Realtime tables → NSON database files: flushes changes
- NSON objects → NSON database files: encodes data
- Table operations → Index manager: maintains indexes
- Index manager → B-tree indexes: optional B-tree
- NJSQL CLI → Clone handler: runs clone
- NJSQL CLI → Push handler: runs push
- Clone handler → Share server: requests database files
- Push handler → Share server: submits changes
- Share server → Commit manager: computes diffs
- Share server → Remote database user: serves requests
- Remote database user → Share server: sends changes