Xiuno BBS使用“文档型数据库”的可行性研究
Tillreetree 2022-7-26

什么是文档型数据库?

文档数据库(也称为面向文档的数据库或文档存储)是在文档中存储信息的数据库,是非关系型数据库的一种。

为什么要用文档型数据库?

  • 迁移十分方便(不再需要导入导出数据库)
  • 对服务器要求进一步降低(只需要可以运行PHP即可)

和关系型数据库的区别

  • 数据模式的直观性:文档型数据库中的存储单位“文档”直接对应应用层代码中的“对象”,开发者使用起来更加方便,不需要跨表或者表连接等操作。
  • 使用JSON带来的好处:JSON已经成为数据交换和存储的标准。JSON文档是轻量级的、独立于语言的、人类可读的。开发人员可以按照应用程序需要的方式构造数据——丰富的对象、键值对、表、地理空间和时间序列数据,或者图形的节点和边。
  • 模式的灵活性:因为结构比较灵活,开发者在创建文档时,不用像使用关系型数据库那样,首先去定义它的结构;开发者可以在任意时间根据需要去修改数据的结构。

Xiuno中有关数据库操作的地方

XiunoPHP框架中有关数据操作的函数包括:

  • //一般操作↓
  • db_connect//连接数据库
  • db_new//创建数据库连接
  • db_find_one//查找一个
  • db_find//普通查找
  • db_exec//直接执行SQL语句
  • db_count//表中行的数量
  • db_maxid//表中最大主键ID
  • //CRUD操作↓
  • db_create//增加一行
  • db_read//等效于db_find_one
  • db_update//编辑一行
  • db_delete//删除一行

Xiuno BBS中对帖子、用户等的操作都是基于以上函数制成的。

如何修改?

具体实现方式不再赘述,有动手能力的可以试试。

核心(model文件夹里的文件)

将使用到db_create、db_read等函数的地方换掉即可。不影响函数本身。

插件

插件主要使用db_create、db_read等函数,所以直接修改这些函数,可以获得更好的兼容性。

小结

核心(model文件夹里的文件)尽量直接用文档数据库提供的函数(可获得更好的性能),但也要修改XiunoPHP框架里的数据库相关函数。

个人推荐的文件数据库-SleekDB

特点

  • 标准化储存(JSON格式)
  • 内置缓存机制(读取数据时先看缓存)
  • 相对MySQL,可存储更多类型的数据(如数组等)
  • 可以有更多的并发支持

缺点

  • 适合作为中低流量网站的数据库引擎

总结

有可行性,但整个Xiuno生态是建立在MySQL上的,所以这种修改方案适合“小众客制化”。

WIP

最新回复 (3)
全部楼主
  • xiunoa 超版
    2022-7-27 2
    0
    这个我确实不了解,不过可以来学习你的帖子
  • adnim
    2022-7-27 3
    0
    顶顶顶顶顶顶顶!!!
  • 崚影
    6月前 4
    0
    很6
返回