Kooboo CMS技术文档之三:切换数据存储方式

时间:2023-11-24 22:47:44

切换数据存储方式包括以下几种:

  • 将文本内容存储在SqlServer、MySQL、MongoDB等数据库中

  • 将站点配置信息存储在数据库中

  • 将后台用户信息存储在数据库中

  • 将会员信息存储在数据库中

  • 将图片、视频等媒体资源存储在网站目录以外的地方

  • 切换内容数据库

Kooboo CMS默认文本数据使用XML文件存储的方式,媒体资源使用文件夹存储的方式,在多数据情况下,我们建议开发人员在开发时使用默认的存储方式,等到部署时再整站点导入到生产环境。

  • 切换文本内容(TextContent)的存储方式

Kooboo CMS默认将文本内容以XML的形式存储,这里以存储到SqlServer为例简要描述步骤:

  1. 导出已经创建好的站点。
  2. https://github.com/Tsingbo-Kooboo/KoobooMvc5/releases/latest下载“Content_Providers.zip”并解压,找到里面的SQLServer子目录。
  3. 将SQLServer目录中的所有文件(Kooboo.CMS.Content.Persistence.SQLServer.dll与SqlServer.config)拷贝到Kooboo CMS的Bin目录中。
  4. 修改相应的连接串配置文件(SqlServer.config)。
  5. 重新创建或导入站点。

其它几种数据存储(站点配置信息、后台用户信息、会员信息)的切换方式都类似,就不一一详谈。

  • 切换媒体内容(MediaContent)的存储方式

Kooboo CMS默认将媒体资源存储在站点内容目录下(位于/Cms_Data/Contents/{RepositoryName}/Media下),同时Kooboo CMS也支持将媒体资源存储在Azure blob storage或者自建的文件系统中。存储在Azure blob storage的切换方式与文本内容的切换方式类似,就不重复描述。

以下简要说说自建文件系统的搭建方法:

  1. 这里下载“FileServer_Web.zip”并解压。
  2. 在IIS中新建一个站点(以下称之为“资源站”)并指向上一步解压的目录。
  3. 修改资源站中web.config里面appSettings中的几个值:
	AccountName:账号名,可以设置自己喜欢的用户名,该用户名与CMS中的用户名没有关系。
AccountKey:密码,可以设置自己喜欢的密码。
BaseUri:域名地址,媒体资源的url会与此有关,请确保该地址的准确性,也可放空。
  1. 从“Content_Providers.zip”解压的目录里面找到FileServerProvider子目录,并把里面的所有文件拷贝到Kooboo CMS的Bin目录中。
  2. 修改配置文件(FileServerProviderSettings.config)中的几个值:
	AccountName:账号名,需要与“资源站”的web.config中的值一样。
AccountKey:密码,需要与“资源站”的web.config中的值一样。
Endpoint:域名地址,填写“资源站”所在的URL地址。
  • 切换数据库常见的问题

  1. 数据丢失

    切换为无结构的数据库(MongoDB、CouchBase)后,如果站点没有重新导入,站点运行不会出错,但是内容数据将会丢失。

  2. 提示Invalid object name

    切换为有结构数据库(SQLServer,SQLCe,MySQL)后,如果站点没有重新导入,在运行时会出现找不到数据表的错误。因为有结构数据库,需要重新导入站点来重建数据表和导入数据。