EFCore 重构已落地
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
EFCore 已登陆 unstable 分支,这将带来显著影响。
我们终于完成了清理遗留数据库访问代码的首个里程碑。这意味着所有直接面向 SQLite 的 SQL 构建器已从代码库中移除。这标志着我们向全新数据库设计迈出了第一步,但现在需要快速展望后续计划。
本周将临时关闭 unstable 构建通道,跳过 20250127 的 unstable 版本以进行为期一周的 master 分支全面测试,unstable 构建将于下周的 20250203 版本重新开放。若您正在使用 unstable 构建,请务必在本周做好备份。
接下来请继续阅读,了解具体变更内容及未来规划。
- JPVenson
我们具体完成了哪些工作
Joshua 的博客文章 在 2024 年 11 月已阐明我们的主要目标。借此机会,我将回应收到的反馈与疑问,并澄清几个关键点。
旧版代码存在大量直接访问底层 SQLite 数据库的情况。作为基于文件的数据库,SQLite 承载着 Jellyfin 大部分重要数据存储。这主要带来四方面问题:
-
旧代码质量低下
-
旧代码结构复杂
-
旧代码明确仅支持 SQLite 且无法扩展
-
旧代码迁移处理依赖人工操作且易出错
这些问题导致我们无法快速可靠地扩展数据库功能或改进现有特性。新版代码采用 EntityFramework 迁移方案,这是 C# 生态中数据库迁移的行业标准。
我们尚未完成的工作
当前代码__并未__原生支持其他数据库供应商,尽管我们正在推进此项工作。添加多数据库支持将是超越重构层面的重大变更,即使实现后也将长期处于高度实验阶段。
特别重要的是,我们尚未优化 Jellyfin 其他组件以适应新的数据库访问模式。这意味着在重构剩余代码以适配新结构期间,unstable 构建版本可能出现显著性能下降。
新架构还支持在 Jellyfin 运行期间进行可靠备份,这在之前是无法实现的。
未来规划
虽然 unstable 构建通道已持续运行较长时间,但我们将按 Joshua 最初声明,本周临时关闭该通道并跳过 20240127 unstable 版本,以完成整周的 master 分支测试。包含这些变更的 unstable 构建将于 20240203 版本恢复,请运行 unstable 构建的用户在本周务必完成备份。
迁移过程会将原有 library.db 合并至 jellyfin.db 文件,并将旧文件重命名为 library.db.old,因此新版 unstable 构建将不再向前兼容旧版本。
我们明确__不支持 10.10.3 以下版本__的迁移。这意味着要测试迁移功能,必须使用 10.10.z 发布序列或当前 unstable 版本的最新数据库。
感谢您的支持!如有任何疑问,欢迎随时加入我们的 Matrix 频道获取帮助。
- JPVenson.