torden / php-mdbm
PHP-mdbm 是 PHP 绑定到 MDBM 的库。
v0.1.2
2022-09-01 03:25 UTC
Requires
- php: >=5.3.29
This package is not auto-updated.
Last update: 2024-09-29 05:41:50 UTC
README
- PHP-mdbm 是 PHP 绑定到 Yahoo! MDBM C API.
- MDBM 是一种超级快速的内存映射键值存储。
- MDBM 是基于 sdbm(它基于 Per-Aake Larson 的动态哈希算法)的 ndbm 兼容的哈希数据库库。
- MDBM 是一个高性能的内存映射哈希数据库,类似于自制的 libhash。
- 存储在 mdbm 数据库中的记录可能具有任意和可变长度的键和值。
目录
API
几乎支持所有有用的 API。
不支持的 API
遗憾的是,以下列表中的 API 目前不支持。
如果您需要它们,请随时提出问题
已弃用 API
仅支持 V2 实现
支持两个版本兼容性
PHP
MDBM
安装
MDBM
php-mdbm
使用 composer(packagist)
有关使用 composer 的说明,请参阅 composer 文档
composer require torden/php-mdbm
使用源代码
git clone https://github.com/torden/php-mdbm
或下载 tarball (标签或发布)
wget https://github.com/torden/php-mdbm/archive/vX.X.X.tar.gz tar xvzf vX.X.X.tar.gz
编译
cd php-mdbm/src/ $PHP_INSTALLED_PATH/bin/phpize ./configure --with-php-config=$PHP_INSTALLED_PATH/bin/php-config --with-mdbm=/usr/local/mdbm/ make #make test TESTS='-q -m' #make test TESTS='-q' make install
配置
echo "extension=mdbm.so" >> php.ini
检查
$PHP_INSTALLED_PATH/bin/php -i | fgrep -i mdbm ... mdbm MDBM Support => enable MDBM API Version => 4 PHP MDBM Version => 0.1.0 ...
示例
有关更多详细信息,请参阅 文档
基准测试
以下是对 PHP-mdbm 与 PHP SQLite3 的基准测试结果,用于简单的数据存储和随机检索。
请参阅 源代码。
准备基准测试
cd php-mdbm/src/benchmark/
composer install
规格
主机
虚拟机
软件
简单的 INSERT 操作
php src/mdbm_simple_store.php -live
Created by B. van Hoekelen version 2.3.2 PHP v7.0.26
Max memory 128M, max execution time unlimited on 2018-01-21 01:33:02
Label Time Memory Peak
---------------------------------------------------------------------------------------------------
> Calibrate point 2.86 μs | 0.00 KB | 2.00 MB
> mdbm store(number, number) :: 100,000 297.88 ms | 0.00 KB | 2.00 MB
> mdbm store(string, string) :: 100,000 329.36 ms | 0.00 KB | 2.00 MB
> mdbm store(number, number) :: 1,000,000 2.94 s | 0.00 KB | 2.00 MB
> mdbm store(string, string) :: 1,000,000 3.36 s | 0.00 KB | 2.00 MB
> mdbm store(number, number):: 10,000,000 70.4 s | 0.00 KB | 2.00 MB
> mdbm store(string, string) :: 10,000,000 125.46 s | 0.00 KB | 2.00 MB
---------------------------------------------------------------------------------------------------
Total 7 taken 01-21 01:36:25 202.78 s 0.00 KB 2.00 MB
简单的随机检索
php src/mdbm_simple_fetch.php -live
Created by B. van Hoekelen version 2.3.2 PHP v7.0.26
Max memory 128M, max execution time unlimited on 2018-01-21 01:37:49
Label Time Memory Peak
---------------------------------------------------------------------------------------------------
> Calibrate point 4.05 μs | 0.00 KB | 2.00 MB
> mdbm random fetch(number) :: 100,000 140.18 ms | 0.00 KB | 2.00 MB
> mdbm random fetch(string) :: 100,000 161.95 ms | 0.00 KB | 2.00 MB
> mdbm random fetch(number) :: 1,000,000 1.44 s | 0.00 KB | 2.00 MB
> mdbm random fetch(string) :: 1,000,000 1.63 s | 0.00 KB | 2.00 MB
> mdbm random fetch(number):: 10,000,000 15.07 s | 0.00 KB | 2.00 MB
> mdbm random fetch(number) :: 10,000,000 16.97 s | 0.00 KB | 2.00 MB
---------------------------------------------------------------------------------------------------
Total 7 taken 01-21 01:38:24 35.42 s 0.00 KB 2.00 MB
使用预加载 API 的简单随机检索
php src/mdbm_simple_preload_fetch.php -live
Created by B. van Hoekelen version 2.3.2 PHP v7.0.26
Max memory 128M, max execution time unlimited on 2018-01-21 01:39:36
Label Time Memory Peak
---------------------------------------------------------------------------------------------------
> Calibrate point 4.05 μs | 0.00 KB | 2.00 MB
> mdbm::preload random fetch(number) :: 100,000 138.52 ms | 0.00 KB | 2.00 MB
> mdbm::preload random fetch(string) :: 100,000 154.26 ms | 0.00 KB | 2.00 MB
> mdbm::preload random fetch(number) :: 1,000,000 1.4 s | 0.00 KB | 2.00 MB
> mdbm::preload random fetch(string) :: 1,000,000 1.58 s | 0.00 KB | 2.00 MB
> mdbm::preload random fetch(number):: 10,000,000 14.83 s | 0.00 KB | 2.00 MB
> mdbm::preload random fetch(number) :: 10,000,000 16.73 s | 0.00 KB | 2.00 MB
---------------------------------------------------------------------------------------------------
Total 7 taken 01-21 01:40:11 34.83 s 0.00 KB 2.00 MB
SQLite3
简单的 INSERT 操作
php src/sqlite3_simple_store.php -live
PRAGMA synchronous=OFF;
pragma journal_mode = wal;
Transaction(BEGIN,COMMIT)
Created by B. van Hoekelen version 2.3.2 PHP v7.0.26
Max memory 128M, max execution time unlimited on 2018-01-22 00:44:56
Label Time Memory Peak
---------------------------------------------------------------------------------------------------
> Calibrate point 4.05 μs | 0.00 KB | 2.00 MB
> sqlite3 insert(number, number) :: 100,000 761.78 ms | 0.00 KB | 2.00 MB
> sqlite3 insert(string, string) :: 100,000 1.17 s | 0.00 KB | 2.00 MB
> sqlite3 insert(number, number) :: 1,000,000 7.93 s | 0.00 KB | 2.00 MB
> sqlite3 insert(string, string) :: 1,000,000 12.29 s | 0.00 KB | 2.00 MB
> sqlite3 insert(number, number):: 10,000,000 80.24 s | 0.00 KB | 2.00 MB
> sqlite3 insert(string, string) :: 10,000,000 127.54 s | 0.00 KB | 2.00 MB
---------------------------------------------------------------------------------------------------
Total 7 taken 01-22 01:00:25 229.93 s 0.00 KB 2.00 MB
简单的随机检索
php src/sqlite3_simple_fetch.php -live
PRAGMA synchronous=OFF;
pragma journal_mode = wal;
Created by B. van Hoekelen version 2.3.2 PHP v7.0.26
Max memory 128M, max execution time unlimited on 2018-01-22 01:23:53
Label Time Memory Peak
---------------------------------------------------------------------------------------------------
> Calibrate point 4.05 μs | 0.00 KB | 2.00 MB
> sqlite3 random fetch(number) :: 100,000 2.16 s | 0.00 KB | 2.00 MB
> sqlite3 random fetch(string) :: 100,000 3.16 s | 0.00 KB | 2.00 MB
> sqlite3 random fetch(number) :: 1,000,000 25.94 s | 0.00 KB | 2.00 MB
> sqlite3 random fetch(string) :: 1,000,000 34.84 s | 0.00 KB | 2.00 MB
> sqlite3 random fetch(number):: 10,000,000 275.47 s | 0.00 KB | 2.00 MB
> sqlite3 random fetch(string) :: 10,000,000 397.42 s | 0.00 KB | 2.00 MB
---------------------------------------------------------------------------------------------------
Total 7 taken 01-22 01:36:12 738.99 s 0.00 KB 2.00 MB
链接
- Yahoo! MDBM
- MDBM::概念
- MDBM::构建
- MDBM::文档
- MDBM::常见问题解答
- DBM
- MDBM::宏(const)
- Packagist
- MDBM 包
- Go-mdbm
- Py-mdbm
- 从 PHP5 升级到 NG 的 PHP 扩展
请随意。希望这能对您有所帮助。