Hei,
Du vil se at nikita har noen gren med flyway erfaringer:
https://gitlab.com/OsloMet-ABI/nikita-noark5-core/-/branches/active
Dette er for meg ikke i utgangspunkt et spørsmål om hvordan vi bruker flyway, det er mer et spørsmål om når vi tar det i bruk. Mine enkle tester av flyway med PostgreSQL gjorde at jeg ble skeptisk fordi jeg fikk feilemeldinger ofte. Da bruker jeg tid som jeg egentlig ikke har til å jobbe med det som oppleves for med som idiotiske feil., da flyway skal gjøre livet mitt enklere, ikke vanskeligere. Kanskje det er noe med at hibernate og flyway ikke helt får det til. Begge er en beskrivelse av databasen, mens flyway håndterer migrasjon, noe hibernate ikke er laget for.
Når det er sagt så er det sikkert manglende kompetanse og tid til å ta et flyway kurs for å forstå det riktig. Som oftest fungerer de enkle eksemplene godt i dev-modus. Videre er både flyway og liquibase veldig kommersielle og med den generelle enshitification vi ser med programvare, er jeg skeptisk til å bruke tid på et program som plutselig kan lukkes. Da blir det kanskje et spørsmål hvorvidt prosjektet er interessant nok til at noen vil jobbe med en fork.
Om man ønsker å ta i bruk flyway så håper jeg at det som er i flyway grenene gir det som trengs. Når den lange listen av viktige ting blir kortere så kan vi bruke mer tid på flyway. Fram til da så er vi dessverre nødt til gjøre dette manuelt.
Thomas ________________________________ Fra: Ole Aamot ole@aamot.software Sendt: torsdag 17. april 2025 11:14 Til: Petter Reinholdtsen pere@hungry.com Kopi: nikita-noark@nuug.no nikita-noark@nuug.no Emne: Re: Tre nye indekser for PostgreSQL
On Thursday, April 17, 2025 at 11:09:35 am +02:00, Ole Aamot ole@aamot.software wrote: On Thursday, April 17, 2025 at 11:02:16 am +02:00, Ole Aamot ole@aamot.software wrote: On Thursday, April 17, 2025 at 10:44:35 am +02:00, Ole Aamot ole@aamot.software wrote:
On Tuesday, April 15, 2025 at 7:58:16 am +02:00, Petter Reinholdtsen pere@hungry.com wrote:
[Ole Aamot] Var det dette du tenkte på med tanke på databasemigrering?
Nei. Jeg snakker om at Nikita skal oppdatere databasen ved oppstart, hvis den ikke har forventet datastruktur.
Aha, da skjønner jeg! Du tenker på en form for automatisk migrering ved oppstart av applikasjonen – altså at hvis databasen mangler tabeller eller felter, så skal Nikita (programmet) selv kunne opprette eller oppdatere strukturen uten manuell inngripen.
En slik løsning innebærer ofte at man ved oppstart sjekker:
1. Om databasen finnes.
2. Om nødvendige tabeller eksisterer.
3. Om felter og indekser er på plass.
4. Og eventuelt kjører migreringsskript for å oppdatere databasen til siste "versjon".
Eksempel på hvordan man kan gjøre dette i Python med SQLite:
Og hvis du vil at Nikita skal sjekke og oppdatere databasen ved oppstart, finnes det et par etablerte måter å gjøre dette på i Java-verdenen. Den vanligste og tryggeste løsningen er å bruke et migreringsverktøy som:
✅ Flyway eller Liquibase
Disse verktøyene lar deg versjonere og kjøre databasemigreringer automatisk ved oppstart – typisk via main() eller Spring Boot-lifecycle.
Jeg er sikker på at det finnes Python-bibliotek av enten Flyway eller Liquibase, som du kan benytte i noark5-tester, til å skrive migreringsskript i Python i stedet for Java, som er mitt valgte språk etter IN105-studium ved IFI i 1998, men jeg er sikker på at du løser dette enkelt som den superflinke programmeren du er, Petter. :-) ...og for de som vil lære mer om Python med å løse knapsack problemer og Dijkstra er den akademiske veien dit https://introcomp.mit.edu/spring25 og 6.100B veien å gå videre etter 6.100A.
Mvh, Ole Aamot