V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jakwings
V2EX  ›  分享创造

[PHP] TextOfDatabase ,个人在几个月前写的简单的以纯文本文件作为数据库的数据库管理工具。

  •  
  •   jakwings · 2014-02-13 04:20:53 +08:00 · 3067 次点击
    这是一个创建于 3932 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://github.com/jakwings/TextOfDatabase

    数据排序完全用 PHP 原生函数实现,搜索时也没有用什么特别的算法。

    效率不敢说多好啦,假如每条记录储存的文本不多的话,存取两三万条应该是不会超过 128M 内存限制的,够个人博客使用了。

    最大的缺点当然是不支持多线程写入数据。唯一的优点恐怕只是不需要额外的数据库软件吧。
    16 条回复    1970-01-01 08:00:00 +08:00
    jakwings
        1
    jakwings  
    OP
       2014-02-13 04:41:13 +08:00
    假如有类似的东西,推荐一下吧~
    Shared
        2
    Shared  
       2014-02-13 09:07:58 +08:00
    看起来很有意思,怎么用的呢,有demo吗
    jakwings
        3
    jakwings  
    OP
       2014-02-13 09:18:12 +08:00
    @Shared 主页已经指出说明页面了,那里有一些示例。详细说明直接看源代码的注释以及函数的定义也很好理解的。
    xatest
        4
    xatest  
       2014-02-13 09:47:33 +08:00 via iPhone
    jakwings
        5
    jakwings  
    OP
       2014-02-13 10:04:57 +08:00
    @xatest 谢~不过它和 pjjTextBase 很像,只适合储存简单的数据。
    touch
        6
    touch  
       2014-02-13 16:01:11 +08:00
    @jakwings Connect($path)中这个$path是什么路径啊
    jakwings
        7
    jakwings  
    OP
       2014-02-13 16:09:13 +08:00
    touch
        8
    touch  
       2014-02-13 16:47:48 +08:00
    @jakwings 就是datadir的路径中对应数据库的目录吧。
    jakwings
        9
    jakwings  
    OP
       2014-02-13 17:02:59 +08:00
    @touch 一个数据库就是一个文件夹,里面会放置多个表格文件。

    // 连接到数据库(文件夹)
    $database->Connect($data_dir);

    // 处理数据表
    $database->Select($table_name, ...);

    // 断开连接
    $database->Disconnect();
    touch
        10
    touch  
       2014-02-13 17:23:58 +08:00   ❤️ 1
    @jakwings mysql数据储存中没有extension是col的吧
    jakwings
        11
    jakwings  
    OP
       2014-02-13 17:30:44 +08:00
    @touch 晕倒……我不是在模仿 MySQL 数据库。*.col 文件是用来保存表格头信息的。
    touch
        12
    touch  
       2014-02-14 16:05:37 +08:00
    @jakwings 额,是我理解错了,以为是数据库的管理。你这是以文本table形式保存数据是吗
    jakwings
        13
    jakwings  
    OP
       2014-02-14 16:18:30 +08:00
    @touch 嗯,不过不是以利于手动编辑的格式储存。
    touch
        14
    touch  
       2014-02-14 16:59:24 +08:00
    @jakwings 调用顺序是这样
    $database->Connect($path);
    $database->CreateTable('test',array('ts1','ts2','ts3'));
    $database->Insert('test',array('ts1'=>'1','ts2'=>'2','ts3'=>'3'));
    print_r($database->Select('test',array('action'=>'GET')));
    jakwings
        15
    jakwings  
    OP
       2014-02-14 17:03:38 +08:00
    @touch 哈,是的,之前忘了创建表格了。
    jakwings
        16
    jakwings  
    OP
       2014-02-14 17:07:13 +08:00
    @touch 其实可以保存其它类型的数据的,取出的时候还是原来的类型。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4014 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:21 · PVG 13:21 · LAX 21:21 · JFK 00:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.