热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入理解多站点中的WordPress数据库

在本专题前面的文章中,我为大家介绍了WordPress单站点数据库中的每个数据表,以及他们是怎么交互的、数据表之前的关系、以及他们是怎么存储的。在本文中,我们来一起看一下WordPress

在本专题前面的文章中,我为大家介绍了 WordPress 单站点数据库中的每个数据表,以及他们是怎么交互的、数据表之前的关系、以及他们是怎么存储的。在本文中,我们来一起看一下 WordPress 多站点网络中的数据库,WordPress 多站点网络中的数据库会包含一些额外的数据表,多站点网络中的每个网站都有自己独有的数据表,要理解 WordPress 数据库在多站点中的是什么样子的,我们需要了解三种类型的数据表。


  • 核心站点中的数据库

  • 整个网络的数据库

  • 网络中每个站点的数据库


多站点模式中的主站点数据库中的数据表

多站点网络中核心站点的数据库,有和单站点一样的11个数据表,这些数据表中保存这主站点中的数据:


  • wp_posts

  • wp_postmeta

  • wp_comments

  • wp_commentmeta

  • wp_users

  • wp_usermeta

  • wp_links

  • wp_term_relationships

  • wp_term_taxonomy

  • wp_terms

  • wp_options

有两个数据表和网络中的其他站点有关,他们是:


  • wp_users

  • wp_usermeta

其他数据表的工作方式和在单站点模式中一样,他们存储着主站点的内容,最后两个数据表同时存储了和整个站点有关的数据,就像只在主站点中使用的数据。

多站点模式中其他站点的数据表

除了存储多站点网络中用户数据的两个核心表,WordPress 还创建了一些关于多站点网络的附加数据表,他们包括:


  • wp_blogs

  • wp_blog_versions

  • wp_registration_log

  • wp_signups

  • wp_site

  • wp_sitemeta

  • wp_sitecategories (可选)

WordPress 使用一下7个数据表,外加两个用户数据表存储多站点中的站点数据,下面是这些数据表的简介:
























































数据表数据说明
wp_blogs这个数据表存储了站点中每个网站的信息,每个网站只有一条记录字段包括: blog_id, 域名,注册时间
wp_blog_versions当前网络的数据库版本,升级网络时会更新包括三个字段: blog_id,db_version 和 last_updated
wp_registration_log创建站点时同时创建的管理员用户对每个站点 ( 通过blog_id 定义 ),该表存储博客管理员的 user_id, email 地址和注册日期
wp_signups存储已注册但未激活的站点该数据表的每条记录包含一个唯一的 signup_id,每条记录中包含注册站点的域名、标题、用户名、和电子邮件地址,站点激活时,相应记录会自动删除
wp_site存储主站点的 URL此数据表只有一条记录,包含3个字段:主站点的站点 ID ( 一般是1 ), 主站点的域名和路径 (默认是 /)
wp_sitemeta存储多站点网络的附加信息这个数据表相当于多站点网络的wp_options 数据表,包含网络的一些设置数据,该数据表包含4个字段: meta_id, site_id (链接到 wp_blogs), meta_key 和 meta_value。
wp_sitecategories启用了全局分类时的可选数据表启用全局分类可以让每个站点中的用户使用相同的分类,该数据表包含4个字段:cat_ID,cat_name,category_nicename 和 last_updated,注意该数据表存数分类项目,不只是分类目标项目,还包括自定义分类法
wp_users所有用户的数据在这里保存而不是保存在每个站点中,因此用户可以访问整个站点中的网站在多站点网络的数据中,WordPress 在 wp_users 数据表中创建了两个附加字段: spam 和 deleted, 两个都是布尔值,默认为 NO
wp_usermeta存储站点中的用户附加信息该数据表的使用方法和单站点中的使用方法一样

数据表的关系

因为站点中每个网站的数据需要关联到站点的核心数据表,大多数数据表通过 blog_ID 链接到 wp_blogs 数据表,以下3个例外:


  • wp_sitecategories,链接文档到分类项目

  • wp_signups, 已注册未激活的网站

  • wp_usermeta, 通过 wp_users 迂回链接到 wp_blogs 数据表


WordPress多站点的数据库

多站点数据库存储每个站点的方式非常简单粗暴,直接为每个站点复制了一份数据表,因为用户数据存储在主站的数据表中,创建站点数据表时并不会复制不必要的 wp_users 和 wp_usermeta,为了区分每个不同的子站点,WordPress 为每个子站点的数据表的表名称添加了 site ID 字段,如站点2的数据表中, wp_posts 的数据表名称为 wp_2_posts,没个子站点的包含以下几个数据表。


  • wp_xx_posts

  • wp_xx_postmeta

  • wp_xx_comments

  • wp_xx_commentmeta

  • wp_xx_links

  • wp_xx_term_relationships

  • wp_xx_term_taxonomy

  • wp_xx_terms

  • wp_xx_options

上面的 xx 就是每个子站点的站点 ID,这些站点存储数据的方式都和单站点的数据存储方式一样。

总结

如果你整准备使用 WordPress 的多站点功能,详细了解一下 WordPress 多站点的数据结构是非常有必要的,这可以帮助我们更好的管理和维护一个 WordPress 多站点网络,并在出现问题时,快速定位到有问题的站点,如果WordPress 多站点中默认的数据结构不符合我们的需求,我么也可以通过 WordPress 的 Database API 增加自己的数据表。


推荐阅读
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
author-avatar
Zh_jodie_776
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有