NoSQLDB

高性能文档型数据库 · 类 MongoDB 架构 · Go 语言实现

14+
BSON 数据类型
20+
查询操作符
100%
Go 语言实现
MIT
开源协议

产品概述

NoSQLDB 是一款完全自主研发的高性能文档型数据库系统,采用 Go 语言编写,架构参考 MongoDB,支持灵活的 JSON/BSON 文档存储。产品提供完整的 CRUD 操作、丰富的查询语言、B+树索引系统、聚合管道框架,以及 ACID 事务支持。

NoSQLDB 定位于中小型应用、微服务架构、IoT 数据采集、内容管理系统等场景,提供比传统关系型数据库更灵活的数据模型,同时保证优秀的读写性能和数据安全性。

技术架构

应用层
REPL 客户端 TCP 客户端 SDK JSON/BSON API
网络层
自定义二进制协议 消息编解码 连接管理 认证鉴权
查询引擎
查询过滤器 排序引擎 字段投影 聚合管道 更新操作符
存储引擎
B+树索引 WAL 预写日志 数据页管理 Checkpoint LRU 缓存
核心模块
BSON 类型系统 事务管理 文档管理 集合/数据库

核心特性

📦 BSON 类型系统

支持 Double、String、Document、Array、Binary、ObjectID、Boolean、DateTime、Null、Regex、Int32、Timestamp、Int64、MinKey/MaxKey 共 14+ 种 BSON 数据类型,完整的 JSON ↔ BSON 双向转换。

🔍 丰富查询操作符

支持比较 ($eq, $ne, $gt, $gte, $lt, $lte)、逻辑 ($and, $or, $not, $nor)、数组 ($in, $nin, $all, $elemMatch, $size)、正则 ($regex)、元素 ($exists, $mod) 等 20+ 操作符。

🌳 B+树索引

完整的 B+树索引实现,支持单字段/多字段索引、唯一/非唯一索引、范围扫描、自动维护(插入/删除时同步更新索引树)。

📊 聚合管道

支持 $match、$project、$group、$sort、$limit、$skip、$unwind 等聚合阶段,可组合使用完成复杂的数据分析查询。

⚡ 更新操作符

支持 $set、$unset、$inc、$mul、$min、$max、$push、$pop、$pull、$addToSet、$rename、$currentDate 等 12+ 字段更新操作符。

🔒 ACID 事务

完整的事务支持:Begin / Commit / Abort,读写集管理,崩溃恢复,保证数据的原子性、一致性、隔离性和持久性。

💾 数据持久化

WAL 预写日志 + 数据页存储 + Checkpoint 检查点机制,确保数据零丢失,支持崩溃后自动恢复。

🛡️ 安全认证

用户认证系统,支持 admin / readwrite / read 三种角色,密码 SHA256 哈希加密存储,可控制数据库访问权限。

📈 性能监控

内置性能指标收集:QPS 统计、操作计数(Insert/Query/Update/Delete)、连接数统计,原子操作无锁设计。

⚙️ 配置管理

支持 config.ini 配置文件,可配置监听地址、端口、数据目录、WAL 目录、最大连接数等,灵活适配不同环境。

💬 REPL 客户端

交互式命令行客户端,支持数据库切换、集合管理、CRUD 操作、索引管理、事务控制、聚合查询等完整功能。

🔄 并发安全

全面的 sync.RWMutex 锁保护、原子操作计数器、连接级协程处理,确保高并发场景下的数据一致性和系统稳定性。

快速开始

1. 启动服务器

# 启动 NoSQLDB 服务器(默认端口 8080) ./nosqldb.exe # 或指定配置文件 ./nosqldb.exe -config config.ini

2. 连接客户端

# 启动 REPL 交互式客户端 ./nosqlcli.exe

3. 基本操作示例

# 切换/创建数据库 use mydb # 创建集合 db.createCollection("users") # 插入文档 db.users.insertOne({"name": "Alice", "age": 25, "email": "alice@example.com"}) # 查询文档 db.users.find({"age": {"$gte": 18}}) # 创建索引 db.users.createIndex({keys: {"age": 1}, name": "age_idx", unique": false}) # 聚合查询 db.users.aggregate({pipeline": [{"$match": {"age": {"$gte": 18}}}, {"$sort": {"age": 1}}]}) # 事务操作 begin db.users.insertOne({"name": "Bob", "age": 30}) commit

产品对比

特性NoSQLDBMongoDB
数据模型BSON 文档BSON 文档
查询语言类 MongoDB 操作符MongoDB 操作符
索引B+树B+树 / 哈希
事务ACID 事务多文档事务
聚合管道支持支持
持久化WAL + CheckpointWiredTiger
语言GoC++
协议自定义 TCPMongoDB Wire Protocol
协议兼容性原生客户端多语言驱动
开源协议MITSSPL

立即下载

选择合适的版本开始使用 NoSQLDB

📦 下载服务器

版本: v1.1.0 | 平台: Windows amd64

包含: nosqldb.exe (服务器) + nosqlcli.exe (REPL 客户端) + config.ini (配置文件)