Az EFCore bekerült az unstable ágba, és ennek következményei lesznek.
Elértük az első mérföldkövet a régi adatbázis-kezelési kód tisztításában. Ez azt jelenti, hogy minden olyan SQL építőelem, amely közvetlenül a SQLite-ot célozta, eltávolításra került a kódból. Ez az első lépés egy teljesen új adatbázis-tervezés felé, de most egy pillanatra előre kell tekintenünk, hogy lássuk, mi következik.
Az unstable build-eket ezen a héten ideiglenesen leállítjuk, így a 20250127 verzió kimarad, hogy egy teljes hetet biztosítsunk az in-master teszteléshez. A build-ek a 20250203 unstable kiadással folytatódnak a jövő héten, ezért ha unstable verziókat futtatsz, győződj meg róla, hogy van biztonsági mentésed erre a hétre.
Egyébként olvass tovább, hogy megtudd, mit jelent mindez pontosan, és mit hoz a jövő.
— JPVenson
Mit tettünk pontosan?
Joshua 2024 novemberi blogbejegyzése részletesen ismertette a céljainkat, és most szeretném kihasználni ezt az alkalmat, hogy válaszoljak a visszajelzésekre és a kérdésekre, valamint tisztázzak néhány kulcsfontosságú pontot.
A régi kódban sok helyen közvetlen hozzáférés volt a háttérben futó SQLite adatbázishoz. A SQLite egy fájlalapú adatbázis, amelyben a Jellyfin a legtöbb fontos adatát tárolja. Ez négy fő problémát okozott:
- A régi kód nagyon gyengén volt megírva.
- A régi kód rendkívül összetett volt.
- A régi kód kizárólag SQLite támogatására lett írva, más adatbázist nem kezelt.
- Az adatbázis-migrációk manuálisan történtek, ami hibákra hajlamos megoldás volt.
Emiatt eddig nem tudtuk gyorsan és megbízhatóan bővíteni az adatbázist új funkciókkal vagy a meglévőket fejleszteni. Az új kód az EntityFramework migrációkat használja, amely az iparági szabvány a C# adatbázis-kezelésében.
Mit nem tettünk meg?
Bár már dolgozunk rajta, az új kód önmagában még nem támogatja az alternatív adatbázis-kezelőket. Más adatbázisok támogatásának bevezetése a jelenlegi refaktoráláson túlmutató, jelentős változás lesz, és amikor végül elérhetővé válik, valószínűleg még hosszú ideig nagyon kísérleti jellegű marad.
Nagyon fontos, hogy a Jellyfin többi részét még nem optimalizáltuk az új adatbázis-hozzáférési rendszerhez. Ez azt jelenti, hogy az unstable build-ek jelentősen lassabbak lehetnek, amíg a teljes kódbázist át nem állítjuk az új struktúrákra.
Az új architektúra emellett lehetővé teszi a Jellyfin példányok megfelelő biztonsági mentését futás közben, ami korábban megbízható módon nem volt kivitelezhető.
A jövő
Az unstable build-ek már egy ideje aktívak, de ezen a héten ideiglenesen kikapcsoljuk őket, hogy a 20240127 verzió kimaradjon, és egy teljes hetet biztosítsunk az in-master teszteléshez, ahogy azt Joshua korábban jelezte. A 20240203 unstable build-től kezdve újra elérhetőek lesznek ezek a verziók, így ha unstable build-et futtatsz, mindenképpen készíts biztonsági mentést ezen a héten.
A migráció során az old_library.db fájl tartalma bekerül az jellyfin.db fájlba, majd az old_library.db fájl library.db.old néven lesz elmentve. Ennek következtében az unstable build-ek már nem lesznek kompatibilisek a korábbi verziókkal.
A migráció nem támogatja a 10.10.3 előtti verziókat. Ez azt jelenti, hogy ha ki akarod próbálni a migrációs folyamatot, akkor előbb frissítened kell egy 10.10.z verzióra vagy a jelenlegi unstable kiadásra.
Köszönjük a figyelmet! Ha kérdésed van, csatlakozz a Matrix csatornáinkhoz, ahol segítséget kaphatsz.
— JPVenson
Mindig szoktam szolni, ajánlatos cache filet törölni, akinek nem sikerül, az egyszerüen a szerver választásnál, válassza a törlés gombot, és uj szerver hozzáadás, ott be irja https://media.ynm.hu és user és pass és megy is