Pavel Pytlík · vývoj a provoz systémů
← Realizace
Dokončená zakázka Interaktivní demo

Případová studie

Migrace znalostní báze

Přenos celé firemní znalostní báze z Confluence do Redmine: zhruba 30 000 stránek a 230 000 verzí historie, bez ztráty autorů, příloh, oprávnění a pořadí stránek.

Výchozí stav

Firemní znalosti ve 207 prostorech

Znalostní báze firmy byla v Confluence: 207 prostorů včetně osobních, zhruba 30 000 stránek a 230 000 verzí historie. K tomu přílohy a obrázky, uživatelé, skupiny, oprávnění na úrovni prostorů i jednotlivých stránek a pořadí stránek ve stromu.

Celá znalostní báze měla přejít do Redmine.

Problém

Při migraci se data ztrácejí potichu

Obsah se nedá jednoduše zkopírovat: Confluence a Redmine mají jiný formát stránek, jinou strukturu oprávnění a jiný model historie.

Největší riziko není chyba, která migraci zastaví, ale ztráta, kterou nikdo nezaznamená: chybějící příloha, stránka s jinými oprávněními nebo historie bez autorů. Migrace navíc nesmí přetížit zdrojový server.

Řešení

Vlastní převodní nástroj s kontrolou na konci

Navrhl a vyvinul jsem převodní nástroj v Pythonu, bez obecných ETL nástrojů:

  • Mapování prostorů na projekty podle mapovací tabulky.
  • Zachování stromové struktury a pořadí stránek.
  • Převod obsahu do Markdownu včetně maker, odkazů a tabulek.
  • Přenos historie: každá verze jako revize, zapsaná za původního autora.
  • Přenos oprávnění, členství a rolí včetně omezení na jednotlivých stránkách.
  • Řízení zátěže zdroje: sonda zdraví, automatické ladění rychlosti a hlídač zaseknutí.
  • Závěrečné porovnání zdroje a cíle stránku po stránce.

Výsledek

Výsledek migrace

≈ 30 000 stránek přenesených do Redmine
≈ 230 000 verzí historie včetně autorů
207 prostorů včetně osobních
Zdroj ↔ cíl porovnání stránku po stránce na konci migrace

Autoři, přílohy, oprávnění i pořadí stránek zůstaly zachované. Závěrečná kontrola porovnala zdroj a cíl stránku po stránce, takže se nic neztratilo potichu.

Moje role

Nástroj, příprava cíle a kontroly

Navrhl a vyvinul jsem převodní nástroj, připravil cílový systém (doplňky pro wiki makra a oprávnění stránek, účty z LDAP), řídil průběh migrace a provedl závěrečné kontroly konzistence.

Jak to běží

Tok dat ze zdroje do cíle

Čtení ze zdroje, převod a zápis do cíle jsou oddělené kroky. Na konci stojí kontroly konzistence.

Tok dat bez ETL nástrojů · vlastní převodní kód
Zdroj · Confluence
  • Prostory ≈ 207 včetně osobních
  • Stránky ≈ 30 000, XHTML
  • Historie ≈ 230 000 verzí, autor a datum
  • Přílohy a obrázky
  • Uživatelé, skupiny, oprávnění VIEW / EDIT / ADMIN, restrikce stránek
  • Strom a pořadí stránek
čtení: REST API, CQL, JSON-RPC
→
Transformace · Python
01 Výběr a mapování prostor → projekt, moduly podle mapovací tabulky
02 Stromová struktura rodič = poslední předek, zápis po úrovních
03 Pojmenování titulky bez diakritiky, identifikátory, soubory
04 Převod obsahu XHTML → Markdown + makra, odkazy, tabulky
05 Historie a autoři verze → revize, zápis za původního autora
06 Oprávnění úrovně 0–3, členství, role, restrikce
řízení zátěže zdroje: sonda zdraví, auto-tune, hlídač zaseknutí
→
Cíl · Redmine
  • Projekty a podprojekty z mapovací tabulky
  • Wiki stránky CommonMark + makra
  • Revize stránek historie, autor v komentáři
  • Přílohy
  • Členství, role, oprávnění stránek
  • Pořadí ve stromu
zápis: REST API, za autora
Příprava cíle

Pluginy pro wiki makra a oprávnění stránek přes API, PlantUML, CommonMark, účty z LDAP.

Kontroly konzistence

Počty stránek a revizí zdroj × cíl, ověření oprávnění, porovnání obsahu stránku po stránce, audit úplnosti.

Technologie

Na čem systém stojí

Python REST API Confluence Redmine CommonMark LDAP

Ukázky

Jak systém vypadá

Snímky z interaktivního dema se smyšlenými daty. Kliknutím obrázek zvětšíte.

Další rozvoj a provoz

Dokončeno, postup je přenositelný

Migrace je dokončená zakázka.

Stejný postup, tedy mapování, převod s řízením zátěže a závěrečné porovnání zdroje s cílem, se hodí pro každý přechod mezi systémy, kde nesmí nic chybět: výměnu firemního systému, slučování databází nebo vyřazení staré aplikace.

Další krok

Řešíte podobný problém?

Domluvme si krátkou úvodní konzultaci zdarma. Probereme současný stav, výsledek, který očekáváte, a zda dává vývoj na míru ekonomický smysl.