21CTO导读:一个纯PHP编写的SQL数据库出现了,全部功能只用了一个文件。
一位名叫叫Anton Medvedev的开发者发布了ElephpantDB。
这是一个完全用 PHP 编写的小型 SQL 数据库,并以单个文件的形式发布。
为什么写这么个玩意?有时你会认为这是一个普通的应用堆栈。你可能会这样想:“这没有啥带来惊喜的机会。”
我们接着往下看。
首先,它确实只有一个独立的文件,却实现了SQL的全部功能。
https://github.com/antonmedv/elephpantdb
ElephpantDB 支持常见的基本功能包括:CREATE TABLE、SELECT、UPDATE、DELETE、索引、INSERT、预处理参数、排序、限制,还有更多…… 。换句话说,它包含足够的 SQL 语句,可以存储用户、检索用户,或者不小心更新所有用户,所以需要仔细阅读文档。
在底层,数据行存储在一个只追加的堆中,每条记录都由其字节偏移量标识。更新操作会写入行的新版本,删除操作会将旧记录标记为已失效,VACUUM最终还会清理历史记录。
它还具备文件锁定、校验和、崩溃恢复和哈希索引等功能。堆仍然是真实数据的来源,而索引则被视为可重建的缓存。这是一种“健康”的平衡关系:堆保存着事实,而索引则有助于快速查找这些数据,但并不保证其绝对正确。
我们可以直接从 PHP 中使用 ElephpantDB,也可以将其作为小型 JSON over HTTP 端点公开。HTTP 接口接受 SQL 语句和请求参数POST,并且为那些希望其任意 SQL 端点至少有一个安全锁的用户提供了可选的令牌身份验证。
整个引擎运行在 PHP 8.3 或更高版本上,并且需要 64 位版本。它以单个文件的形式发布,部分原因是出于方便,部分原因是将数据库引擎拆分成合理的模块听起来过于冒险和不负责任。
是否应该立即将大的生产系统迁移到 ElephpantDB?
目前可能不会。
若你有兴趣,你可以下载它,创建一个数据库表格,插入几行数据,检查二进制文件,然后享受 PHP 现在负责你基础设施更多部分的事实。
绝对地,还挺好用。
ElephpantDB 0.1.0 版本体积小巧,尚处于实验阶段,但内部功能却非常强大,可以存储至少几项重要数据,或者无限数量的不重要数据。
GitHub:https://github.com/antonmedv/elephpantdb
作者:聆听音乐的鱼
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。