Datamigraties
Voert één met naam aangeduide Go-datamigratie uit die met een release wordt meegeleverd.
Hoe het werkt
Sommige wijzigingen laten zich niet in SQL uitdrukken: event-payloads herschrijven naar een nieuw binair formaat, verouderde gegevens normaliseren, afgeleide velden herberekenen. Elke zo’n wijziging wordt als gecodeerde migratie — een taak — in de applicatie meegeleverd.
U voert één taak tegelijk uit, op naam. Er is bewust geen “alles uitvoeren”-modus: in één keer door alle migraties heen vegen is onbegrensd en raakt elke werkruimte, en voorheen volstond het om één veld leeg te laten. Het veld Task is verplicht en de keuzelijst toont precies de taken die de uitgerolde versie registreert.
Een uitvoering verloopt dan zo:
- Standaard een voorbeeld — met Apply uit rapporteert de taak wat zij zou wijzigen, zonder iets weg te schrijven. Lees eerst het voorbeeld; daar is het voor
- Schrijft alleen op uw teken — zet Apply aan om door te voeren. Het formulier vraagt eerst om een bevestiging, omdat de wijzigingen in elke betrokken werkruimte worden weggeschreven en niet kunnen worden teruggedraaid
- Herbouwt eventueel projecties — een taak die event-payloads zo wijzigt dat projecties ze opnieuw moeten verwerken, meldt dat als vervolgtaak. Na afloop plant de worker Medewerkersprojecties herbouwen als nieuwe uitvoering. Die gekoppelde uitvoering verschijnt in de beheerinterface als een aparte regel die strikt na het voltooien van de migratie-uitvoering is gestart
Wanneer het wordt uitgevoerd
De taak is operator-gestuurd. Zij is bij de worker geregistreerd maar start nooit uit zichzelf — de API voert haar niet uit bij het opstarten. Start haar wanneer een migratie nodig is, via . Zij kan alleen vanuit de systeemwerkruimte worden uitgevoerd en staat in geen enkele andere werkruimte in de lijst.
Automatisch starten is uitgeschakeld omdat automatisch geschaalde API-replica’s elk een dubbele uitvoering in de wachtrij zouden zetten, en gelijktijdige uitvoeringen op dezelfde rijen zorgen voor databasecontentie en een stroom replay-events.
Parameters
| Parameter | Verplicht | Betekenis |
|---|---|---|
| Task | Ja | De uit te voeren migratie, gekozen uit de geregistreerde taken. Een uitvoering die geen taak noemt wordt geweigerd voordat er werk begint, net als een naam die niet geregistreerd is |
| Apply | Nee | Uit (standaard) toont een voorbeeld zonder te schrijven, voor taken die dat ondersteunen; taken die altijd schrijven negeren het. Aan voert de wijzigingen door, en die zijn niet ongedaan te maken |
| Employee | Nee | Beperkt een afgebakende taak tot één medewerker — handig om eerst op één medewerker te proberen vóór een globale uitvoering. Taken die altijd globaal werken negeren het |
De programmatische API accepteert dezelfde opties, plus workspace_id om een afgebakende taak tot één werkruimte te beperken; in het formulier zit geen werkruimtekiezer.
{"jobs":["migrations"],"options":{"tasks":["<taaknaam>"]}}
{"jobs":["migrations"],"options":{"tasks":["<taaknaam>"],"apply":true}}De opties waarmee een uitvoering is gestart, staan in de kolom Parameters van de uitvoeringslijst. Die kolom is standaard verborgen — zet haar aan via het kolommenu om twee uitvoeringen van dezelfde taak uit elkaar te houden.
Taakresultaten
Het resultaat bevat dry_run (het omgekeerde van Apply) en één sleutel per uitgevoerde taak:
| Sleutel | Betekenis |
|---|---|
dry_run | true wanneer er niets is weggeschreven — de uitvoering toonde alleen een voorbeeld |
applied | Of de taak haar wijzigingen daadwerkelijk heeft weggeschreven |
affected_count | Hoeveel entiteiten de taak heeft geraakt, of zou raken |
by_workspace | Aantallen per werkruimte, met opgezochte werkruimtenamen |
details | De geraakte entiteiten, met de voor/na-gegevens die de taak vastlegt |
Een naam die geen geregistreerde taak is, verschijnt als "unknown task" bij die naam.
Wanneer een taak met de markering “herbouwt projecties” draait, bevat het resultaat ook next_jobs: ["rebuild-employee-projections"] en plant de worker die taak automatisch in.
Opnieuw uitvoeren
Alle geregistreerde taken zijn op verzoek opnieuw uit te voeren. De selectiequery van elke taak filtert rijen weg die al gemigreerd zijn, dus opnieuw uitvoeren na een gedeeltelijk succes gaat verder waar de vorige keer stopte, en een voltooide taak opnieuw uitvoeren doet niets en meldt nul geraakte entiteiten.
Problemen oplossen
| Probleem | Oplossing |
|---|---|
| “No task selected” | Kies een taak in het veld Task. Er is geen “alles uitvoeren”-modus — de taak noemen is de enige manier om deze taak te draaien |
De uitvoering meldt "unknown task" | De naam is niet geregistreerd in de uitgerolde versie — meestal een taak die inmiddels is uitgefaseerd. Kies uit de lijst in plaats van een naam te typen |
| Run Job blijft uitgeschakeld | Apply staat aan en de bevestiging eronder is niet aangevinkt. Lees de waarschuwing en vink aan, of zet Apply weer uit om alleen een voorbeeld te bekijken |
affected_count is 0 | De taak heeft geen openstaande rijen — de normale toestand zodra zij voltooid is |
| Fouten tijdens een taak | Open de uitvoeringsdetails. Fouten per rij worden getoond; als de hele uitvoering faalt, duidt dat meestal op een fatale toestand. Corrigeer de gegevens en voer opnieuw uit |
| De vervolgtaak voor projectieherbouw is niet gestart | Als de uitvoering de status “completed” niet bereikte (halverwege mislukt), wordt de vervolgtaak overgeslagen. Herstel de fout, voer de taak opnieuw uit en start daarna zo nodig handmatig Medewerkersprojecties herbouwen |