NetbaDBNetbaIoTAGPL-3.0

类型化关系型数据库。
无数据库 IoT 网关。

NetbaDB 在进程内或通过 Protocol v2 存储类型化表。NetbaIoT 接收 HTTP、MQTT 3.1.1、TCP 与 UDP 设备流量,并把事件转发给你的业务系统。它们是彼此独立的程序。

特点

各自做什么。

需要本地或远程 SQL 数据库时用 NetbaDB。需要设备上报事件并接收在线命令、且网关不持有业务数据时用 NetbaIoT。

NetbaDB

强类型关系型数据库核心。可嵌入 Rust 进程,或运行 netbadbd 后通过 Protocol v2 连接。

  • 类型化 SQL 子集:SELECT、INNER JOIN、INSERT/UPDATE/DELETE,以及 Heap CREATE/ALTER/DROP TABLE 与 INDEX
  • 堆 MVCC、LSM、WAL 崩溃恢复,读已提交与可重复读
  • 仅 Native Protocol v2;不提供 PostgreSQL 协议

NetbaDB 教程 · sskycn/netbadb

NetbaIoT

内存优先的 IoT 网关。设备通过 HTTP 或 MQTT 上报;业务系统消费事件,并向在线会话下发命令。

  • HTTP、内嵌 MQTT 3.1.1、分帧 TCP 与已认证 UDP;运行时没有数据库
  • HTTP 202 与 MQTT QoS1 表示 EventAccepted,不表示业务库已落盘
  • 命令只发往已连接的本地会话;离线设备返回 DeviceOffline

NetbaIoT 教程 · sskycn/netbaiot

教程

怎么跑起来。

NetbaDB

  1. 在 Rust crate 中加入 netbadb-sdk。
  2. 调用 Database::create,插入行,再用 SQL 查询。
  3. 若要给另一进程提供服务,编写清单 v11 并启动 netbadbd。

NetbaDB 教程

NetbaIoT

  1. 用 configs/development.json 运行 netbaiot-server。
  2. POST /v1/device/data;HTTP 202 表示事件已被接受。
  3. 用 netbaiot-client 订阅,并在应用处理后再 ACK。

NetbaIoT 教程

常见问题

NetbaDB 和 NetbaIoT 是同一个程序吗?

不是。NetbaDB 是关系型数据库。NetbaIoT 是 IoT 事件网关。它们不共享运行时、线协议或磁盘格式。

怎么用 NetbaDB?

添加 netbadb-sdk,调用 Database::create,然后在进程内插入与查询。若要给另一进程提供服务,用部署清单 v11 启动 netbadbd,再通过 Native Protocol v2 连接。

怎么用 NetbaIoT?

运行 netbaiot-server,通过 HTTP 或 MQTT 上传设备事件,再用 netbaiot-client 消费。应用处理完成后再 ACK。命令要求设备在线。

使用什么许可证?

两者均以 AGPL-3.0-or-later 授权。如果修改程序并让用户通过网络与之交互,必须提供对应源代码。