服务端数据库
2024年4月14日大约 2 分钟
主数据库
大部分需要持久化的核心数据存储于主数据库 database/arcaea_database.db
中,包括用户相关数据、谱面定数等。目前数据库使用了 sqlite 进行驱动,即基于文件,这将有利于微型化以及方便随处部署,但可靠性可能不如成熟的数据库,尚不清楚其性能极限。
初始化
初始化过程应当是自动的,即在程序第一次运行时,根据 database/init/tables.sql
进行数据库结构生成,随后根据 database/init
文件夹下的一些文件进行初始数据的填充。初始数据基本与官服相同,但不包括谱面相关数据。
如果你需要手动初始化,确保文件不存在的情况下,使用 database/database_initialize.py
脚本即可进行数据库初始化,生成主数据库。
更新
服务端版本更新后第一次运行时,程序应当会自动检查并更新数据库。
更新过程有可能会失败,故考虑到数据安全,旧数据库会备份在 database/backup
文件夹中,以添加递增数字后缀的方式进行命名。
删除的备份
当有些删除操作(比如用户销号)对用户数据造成破坏性影响时,被删除的数据会留存在数据库备份 arcaea_database_deleted.db
中,注意这个数据库也会进行版本更新并留存旧版本备份。
日志数据库
用户的所有上传的成绩,以及每日的用户潜力值,会保存在日志数据库 database/arcaea_log.db
当中。以后可能会考虑记录更多数据。
这些数据的数量是随时间增加的,故长此以往数据库的占用空间可能会很大,如果你需要清理这些数据,你可以使用项目仓库中的 tools/clean_logdb.py
进行清理,或者直接在服务端未运行的情况下删除数据库。
你在找其它数据?
歌曲数据详见谱面定数与相关文件