Doorgaan naar hoofdinhoud

EFCore-refactoring is nu beschikbaar

· 3 minuten leestijd
Onofficiële Beta-vertaling

Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →

EFCore is nu beschikbaar in unstable-versies, en dit zal gevolgen hebben.

We hebben eindelijk onze eerste mijlpaal bereikt in het opruimen van de verouderde database-toegangscode. Dit betekent dat alle SQL-builders die rechtstreeks op SQLite waren gericht, uit de code zijn verwijderd. Dit markeert de eerste stap naar een compleet nieuw database-ontwerp, maar nu moeten we even vooruitkijken naar wat er komen gaat.

Unstable-builds worden deze week tijdelijk uitgeschakeld, waarbij de unstable van 20250127 wordt overgeslagen om een volledige week van in-master-testen mogelijk te maken. Ze worden weer ingeschakeld voor de unstable van 20250203 volgende week. Zorg dus dat je deze week back-ups klaar hebt staan als je unstable-builds gebruikt.

Lees verder om te zien wat dit precies betekent en wat de toekomst brengt.

- JPVenson

Wat hebben we precies gedaan

Joshua's blogpost van november 2024 schetste veel van wat we wilden bereiken. Ik wil deze gelegenheid aangrijpen om de feedback en vragen die we hebben ontvangen te adresseren en enkele belangrijke punten te verduidelijken.

De oude code bevatte veel gevallen van rechtstreekse toegang tot de onderliggende SQLite-database. SQLite is een op bestanden gebaseerde database waarin Jellyfin de meeste belangrijke gegevens opslaat. Dit was problematisch om vier redenen.

  1. De oude code was zeer slecht geschreven

  2. De oude code was erg complex

  3. De oude code was expliciet geschreven om alleen SQLite te ondersteunen

  4. Migratiebeheer in de oude code was handmatig en foutgevoelig

Hierdoor konden we de database niet snel en betrouwbaar uitbreiden om nieuwe functies toe te voegen of bestaande te verbeteren. De nieuwe code gebruikt EntityFramework-migraties, de industriestandaard voor databasemigraties in de C#-ecosysteem.

Wat hebben we nog niet gedaan

Hoewel we eraan werken, voegt de huidige code niet zelfstandig ondersteuning toe voor alternatieve databaseproviders. Het toevoegen van ondersteuning voor andere databaseproviders zal een ingrijpende verandering zijn die verder gaat dan alleen de refactoring, en zal waarschijnlijk nog lang als hoogst experimenteel worden beschouwd.

Cruciaal is dat we de rest van Jellyfin nog niet hebben geoptimaliseerd voor de nieuwe database-toegang. Dit betekent dat unstable-builds mogelijk aanzienlijk langzamer zijn terwijl we de rest van de code herschrijven om de nieuwe structuren te benutten.

De nieuwe architectie maakt ook een betrouwbare manier mogelijk om Jellyfin-instanties te back-uppen terwijl ze actief zijn, iets wat voorheen onmogelijk was.

De toekomst

Unstable-builds zijn al enige tijd actief, maar we schakelen ze deze week tijdelijk uit en slaan de unstable van 20240127 over voor een volledige week in-master-testen, zoals Joshua oorspronkelijk had aangekondigd. We zullen unstable-builds weer inschakelen voor de unstable-week van 20240203 met deze wijzigingen. Zorg dus dat je deze week back-ups klaar hebt staan als je unstable-builds gebruikt.

De migratie zal het oude library.db samenvoegen in het jellyfin.db-bestand en het vervolgens hernoemen naar library.db.old. Hierdoor zijn unstable-builds niet langer compatibel met eerdere versies.

Voor migratie ondersteunen we expliciet geen versies ouder dan 10.10.3. Dit betekent dat als je de migraties wilt testen, je moet beginnen met een actuele database van de 10.10.z-releasetrain of de huidige unstable-versie.

Bedankt, en mocht je vragen hebben, schroom dan niet om onze Matrix-kanalen te joinen voor hulp.

- JPVenson.