【YaShanDB】应用适配实战-Halo博客系统适配崖山数据库

【YaShanDB】应用适配实战-Halo博客系统适配崖山数据库

【YaShanDB】给YaShanDB开发R2DBC驱动

上一篇用AI把关键的崖山数据库R2DBC驱动给开发出来了,这篇就来适配Halo博客系统了

AI Coding

这次我连编辑器都懒得打开了,直接github上找agent开干,中间过程我也不关心了

然后让他生成了docker compose,让我能一键启动个带崖山数据库的halo。不过由于开了个新的agent,他不记得要用修改后的halo了,而且中间由于java构建环境各个组件版本兼容性的问题修复了很多次才修好。

不过好在最后还是完成了

bash 复制代码
# 克隆此 fork
git clone https://github.com/Dark-Athena/halo.git && cd halo

# 启动(首次会从源码构建镜像,需要较长时间)
docker compose -f docker-compose-yashandb.yaml up -d

# 或者先单独构建镜像,再启动
docker compose -f docker-compose-yashandb.yaml build
docker compose -f docker-compose-yashandb.yaml up -d

remote test

我也不下载代码,直接在github上启动codespace

最终成功一键启动,这个web版的vscode也会自动把端口给映射出来,能远程访问

首次进入初始化页面

系统概览里的数据库显示了YashanDB(版本号暂时懒得管了)(后面偶然瞟了一眼r2dbc驱动,AI写死了,没从JDBC的数据库元数据里取,后面再改下)(r2dbc-yashandb 0.1.2版本已修复版本号的问题)

测试了安装几个插件,编写文章发布都是正常的。

代码开源在

https://github.com/Dark-Athena/halo/tree/for-yashandb

本地一行代码没有,直接在网页上聊几句天就把项目开发完了,还能远程直接启动服务来演示,CI/CD也直接集成了,github这生态真是太舒服了。

坑点

spring 的r2dbc方言,只支持ORACLE/MYSQL/POSTGRSQL/SQLSERVER/H2这5个数据库,然后HALO博客官方的社区版只支持MYSQL/POSTGRSQL/H2这3个数据库,ORACLE的支持是在商业版里的,没开源。崖山数据库的支持肯定是要大量套用ORACLE的方言的,所以AI在这里绕了挺久,我也没看他最后是怎么修复的,反正改了几轮后跑通了。

https://github.com/spring-projects/spring-framework/blob/main/spring-r2dbc/src/main/java/org/springframework/r2dbc/core/binding/BindMarkersFactoryResolver.java

static class BuiltInBindMarkersFactoryProvider implements BindMarkerFactoryProvider {

java 复制代码
private static final Map<String, BindMarkersFactory> BUILTIN =
			new LinkedCaseInsensitiveMap<>(Locale.ENGLISH);

	static {
		BUILTIN.put("H2", BindMarkersFactory.indexed("$", 1));
		BUILTIN.put("MariaDB", BindMarkersFactory.anonymous("?"));
		BUILTIN.put("Microsoft SQL Server", BindMarkersFactory.named("@", "P", 32,
				BuiltInBindMarkersFactoryProvider::filterBindMarker));
		BUILTIN.put("MySQL", BindMarkersFactory.anonymous("?"));
		BUILTIN.put("Oracle", BindMarkersFactory.named(":", "P", 32,
				BuiltInBindMarkersFactoryProvider::filterBindMarker));
		BUILTIN.put("PostgreSQL", BindMarkersFactory.indexed("$", 1));
	}

另外,虽然HALO官方的自动化测试E2E能跑过去,但很可能无法合入HALO,因为本次修改比较粗暴,有改动原本HALO里不少代码,连CI也改了。而且开源产品里支持一个非开源的数据库,可能会有一些商业考虑,改天有时间我去找凌霞问问看。

总结

本次项目更多还是验证上一篇开发的崖山数据库R2DBC驱动是否真正可用,通过本次对HALO博客的修改适配,成功确认了这个R2DBC驱动是真正可以用于项目中的。

据我之前了解到的一些情况,halo博客在不少地方的政务系统里也有使用,本次的实战经验应该是很有价值的了。


相关推荐
DarkAthena13 小时前
【YaShanDB】给YaShanDB开发R2DBC驱动
java·yashandb·r2dbc
key_3_feng14 天前
YashanDb数据库安装小记
yashandb
key_3_feng16 天前
基于OpenClaw的Alibaba Cloud Linux 3自动化部署YashanDB深度方案
linux·运维·自动化·yashandb
赵渝强老师1 个月前
【赵渝强老师】崖山数据库的还原数据
数据库·oracle·国产数据库·yashandb·崖山数据库
认真就输DBA3 个月前
深度实战:YashanDB 主备库手动搭建与OM纳管全流程
yashandb·yashan
摘星编程6 个月前
从零搭建高可用个人博客:Lighthouse + 1Panel + Halo 全流程实战
腾讯云·1panel·lighthouse·halo
牛奶咖啡136 个月前
Linux系统中安装部署开源的建站、博客工具——Halo
docker-compose·开源博客·halo·开源建站工具·创建自己的博客网站·docker容器引擎的安装
GoodTimeGGB6 个月前
轻量服务器Lighthouse + 1Panel + Halo,三步打造你的专属网站
服务器·1panel·lighthouse·建站·halo
kaika17 个月前
Halo 链上好文插件使用指南
隐私·建站·网站管理·网站分享·halo