本文目录导读:

在 PHP 中,"边缘数据库" 通常指在物联网(IoT)、边缘计算场景中运行在资源受限设备(如树莓派、路由器、嵌入式系统)上的轻量级数据库,常见的边缘数据库包括 SQLite、DuckDB(嵌入式分析型)、UnQLite 或 Berkeley DB。
以下是在 PHP 中操作这些边缘数据库的核心方法和示例。
SQLite(最常用,推荐)
SQLite 是 PHP 原生支持的内嵌式数据库,无需额外安装服务,文件存储,非常适合边缘设备。
连接与创建
<?php
// 创建/打开数据库文件
$db = new SQLite3('/path/to/edge.db');
// 创建表
$db->exec("CREATE TABLE IF NOT EXISTS sensors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
value REAL NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
)");
?>
插入数据
$stmt = $db->prepare("INSERT INTO sensors (value) VALUES (:value)");
$stmt->bindValue(':value', 25.6, SQLITE3_FLOAT);
$stmt->execute();
查询数据
$result = $db->query("SELECT * FROM sensors WHERE value > 20");
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo $row['value'] . "\n";
}
特点:单个文件,零配置,读写速度适合 IoT。
DuckDB(嵌入式分析型)
DuckDB 是面向分析(OLAP)的嵌入式数据库,占用内存小,支持 SQL 复杂查询,适合边缘端实时聚合数据(如温度平均值、异常检测)。
安装 PHP 扩展
pecl install duckdb # 或在 Docker 中使用 php-duckdb 镜像
基础用法
<?php
$db = new DuckDB\Connection();
// 创建表(内存模式,也可指定文件)
$db->exec("CREATE TABLE sensor_data AS SELECT * FROM read_csv_auto('/data/sensors.csv')");
// 执行复杂分析查询
$result = $db->query("SELECT device, AVG(value) avg_temp
FROM sensor_data
WHERE timestamp > now() - INTERVAL '1 hour'
GROUP BY device");
print_r($result->fetchAll());
?>
特点:适合边缘端需进行实时统计分析的场景。
UnQLite(键值 + 文档混合)
UnQLite 是 JIT 编译的嵌入式 NoSQL 数据库,支持键值对存储和 JSON 文档,占用极小(约 100KB),适合低功耗边缘 MCU。
安装 PECL 扩展
pecl install unqlite
示例
<?php
$db = new UnQLite('/tmp/edge.db');
// 键值存储
$db->store('device:001', json_encode(['temp' => 23.5, 'humidity' => 60]));
// 获取
$device = json_decode($db->fetch('device:001'), true);
echo $device['temp']; // 23.5
// 集合(类似 Mongo)
$db->with('sensors')->set(['id' => 's002', 'value' => 30]);
?>
特点:支持类似 Redis 的键值操作 + 文档查询。
Berkeley DB(嵌入式键值数据库)
Oracle 的嵌入式数据库,广泛用于高可靠边缘设备。
安装
# 需要编译 PHP 时加入 --with-db4 或通过 pecl 安装
PHP 代码
<?php
$env = dbenv::create();
$env->open('/data', DB_INIT_MPOOL | DB_CREATE);
$db = $env->create_db(DB_BTREE);
$db->open(null, 'edge_db', null, DB_BTREE, DB_CREATE, 0664);
// 键值操作
$db->put("sensor:last", "2025-03-17 10:00:00");
$value = $db->get("sensor:last");
$db->close();
$env->close();
?>
特点:极致稳定,适合7x24小时运行的工业边缘设备。
场景选择建议
| 场景 | 推荐数据库 | 理由 |
|---|---|---|
| 边缘端需要标准 SQL,通用性强 | SQLite | PHP 原生支持,零依赖 |
| 需要实时聚合分析(如一分钟平均温度) | DuckDB | 50倍于SQLite的分析加速 |
| 极低功耗设备(如ESP32 php版本) | UnQLite | 最小二进制(~100KB) |
| 工业级高可靠数据采集 | Berkeley DB | ACID 事务支持 |
边缘数据库 PHP 典型架构(树莓派示例)
[传感器] → [Python采集脚本] → [SQLite/JSON文件] → [PHP API] → [本地仪表盘]
↓
[定时同步] → 云端主数据库(非实时)
PHP 在边缘端负责提供REST API或Web界面,对边缘数据库进行读写和查询。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播