laky64 / jdb
此包已被废弃,不再维护。没有建议的替代包。
基于json文本平文的简单数据库
3.3-stable
2020-10-20 22:45 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-memcache: *
- ext-openssl: *
- amphp/amp: ^2.5
- amphp/parallel: ^v1.4.0
- amphp/parallel-functions: ^v1.0.0
This package is auto-updated.
Last update: 2023-05-21 16:33:57 UTC
README
JDB是一个基于json文本平文且具有加密功能的非常快速并行数据库。
JDB 2.3-stable版本仍然可用,但已过时。
由Laky64创建的库
JDB 基准测试
PHP | Python | 模式 | 线程模式 | |
---|---|---|---|---|
单线程 | 15ms | 37ms | 顺序 | 单线程 |
双线程 | 47ms | 85ms | 异步 | 多线程 |
四线程 | 79ms | 149ms | 异步 | 多线程 |
八线程 | 143ms | 133ms | 异步 | 多线程 |
十二线程 | 207ms | 402ms | 异步 | 多线程 |
JDB 结构
以下是JDB数据库的结构
JDB 核心结构
数据库 | 密码 |
---|---|
database1 | password1 |
database2 | password2 |
database3 | password3 |
数据库结构
表 | 主键 | 主键类型 |
---|---|---|
table1 | primary_key1 | primary_key_type1 |
table2 | primary_key2 | primary_key_type2 |
table3 | primary_key3 | primary_key_type3 |
表结构
COLUMN1 | COLUMN2 | COLUMN3 | |
---|---|---|---|
ROW1 | value1 | value2 | value3 |
ROW2 | value1 | value2 | value3 |
ROW3 | value1 | value2 | value3 |
JDB 核心线程
在JDB核心中,有不同类型的线程,每种线程都有不同的任务,如下所示
- 控制器单元线程 根据最空闲的一个将工作负载分配给各个操作线程
- I/O线程 每500ms从RAM数据库执行一次备份到磁盘
- 操作线程 执行计算或查询操作,通常启动多个这些线程
入门
现在支持异步多线程,支持Windows环境和Python客户端!
首先创建数据库文件夹,然后在数据库文件夹中创建一个以您想赋予的表名命名的文件夹,在其中插入您想要的字段
使用composer安装
使用json文件(Composer
)
{ ... "require": { "laky64/jdb": "*" } }
使用命令行(Composer
)
- composer require laky64/jdb
警告!
仔细阅读此文档,以免导致JDB出现故障
JDB 核心
需求
- PHP > 7.4
- PHP OpenSSL
- PHP Memcache
- Memcached 服务器
- AmpPHP
可用的线程类型
- 双线程 1 I/O 线程,1 控制单元和 2 操作线程(非常快但未针对多个连接进行优化)
- 四线程 1 I/O 线程,1 控制单元和 4 操作线程(快速且针对中等数量的连接进行了优化)
- 八线程 1 I/O 线程,1 控制单元和 8 操作线程(较慢但针对高数量的连接进行了优化)
- 十二线程 1 I/O 线程,1 控制单元和 12 操作线程(非常慢但针对极高数量的连接进行了优化)
为本地 JDB 服务器创建运行器
首先需要在不停止的情况下运行一个 Memcached 服务器,然后创建一个 php 文件来运行 JDB 核心(建议用于服务器)
header('Content-Type: text/plain'); //For make readable JDBC Core results ini_set('memory_limit', '2048M'); //For avoid a memory overload use laky64\database\JDB_CORE; include 'vendor/autoload.php'; new JDB_CORE(JDB_CORE::NUM_THREAD, 'database_folder', 'ip_memcached_server', 'port_memcached_server');
可用的客户端
贡献
欢迎提交 pull request。对于重大更改,请先打开一个问题以讨论您希望更改的内容。
请确保根据需要更新测试。