Så flyttade vi tio års arbete

Finnairplan i farlig situation” lyder en rubrik publicerad på Yles webbnyheter onsdagen den 30 oktober 2002, klockan 10.35. Den rubriken inledde ett årtionde med verktyget ”Nyhetswebben”.

Ett decennium och 225 000 artiklar senare har Nyhetswebben ersatts av ett nytt system, ”Drupal”. Men de gamla nyheterna finns kvar.

Hur flyttar man tio års arbete mellan två olika system? Det var en utmaning som Svenska Yles webbavdelning stod inför år 2012. Nyhetswebben är ett lättviktigt internt verktyg, medan Drupal är ett komplext öppet verktyg.

Till att börja med sammanställde vi en ”Entity Relationship”-modell som visualiserar hur nyheternas databas är uppbyggd. ER-modellen avslöjar relationer mellan databasens tabeller och kolumner. Denna information hjälpte oss utveckla skript för att pussla ihop artiklarna.

ER-modell

Följande steg var att kartlägga innehållet. Den gamla nyhetssajten bestod ju inte enbart av nyheter, utan även av kolumner, fördjupningar och bloggar, med mera. Kartläggningen hjälpte oss besluta vilka delar av innehållet som skulle migreras, och i vilken ordning.

Vi undersökte och utvecklade tekniska migreringsmetoder. Vi beslöt exportera innehållet från den gamla databasen som en XML-ström (Extended Markup Language) och importera den genom Drupal-modulerna ”Feeds Import” och ”XPathParser”.

Två delar

Migreringen består huvudsakligen av två delar; dels av en exportdel som skapar en XML-ström ur det gamla systemet, dels en importdel som fogar in XML-strömmen som artiklar i det nya systemet.

Exportdelen utgörs mer tekniskt av ett PHP-program som kör MySQL-kommandon i databasen. Programmet pusslar ihop enskilda informationsbitar till artiklar. Artiklarna blir separata objekt i XML-strömmen, så att varje enskild informationstyp får en egen XML-tagg. En utmaning i exportdelen var att ”tvätta” dataströmmen så att avvikande eller korrumperade informationsbitar inte skulle söndra importen.

Den tekniska utvecklingen utmynnade i detaljerade planer. Detta var första gången vi migrerade ett så stort antal artiklar till ett nytt system och vi ville vara säkra på att processen skulle fungera.

Redan de första testerna visade att Drupal inte kan hantera 225 000 artiklar utan prestandaproblem. Det behövdes mellanlagring bland annat via programvarorna ”Memcache” och ”Varnish” för att höja prestandan till en acceptabel nivå. Ytterligare skapade Drupal för varje artikel ett visst antal lyft – lika många lyft som antalet avdelningar artikeln hade funnits i. Detta gjorde att det totala antalet artiklar i Drupal steg till mer än en halv miljon.

Testerna visade också att importen måste köras stegvis för att undvika tekniska avbrott, så kallade ”timeouts”. Vi skapade ett ”Drush”- (Drupal Shell) kommando som kunde köra importen i mindre paket. Detta kommando kördes i sin tur av ett ”Linux Shell”-skript automatiskt i etapper om hundra artiklar åt gången. Hela importen av de gamla nyhetsartiklarna tog ungefär sju timmar i anspråk.

Migreringen fortsätter

Importen av gammalt innehåll har fortsatt med bland annat ”kulturen.fi” där vi använde samma migreringsmetod som för nyheterna. I detta projekt testade vi också att importera artiklar direkt från RSS-filer (”Rich Site Summary”), vilket fungerar nästan lika bra. RSS är en sorts XML. Problemet med RSS-filer är dock att deras syntax är mer begränsad.

För ett tredje projekt, ”Maktbasen”, importerade vi icke-standardiserad information i form av så kallade entiteter, så som personer, företag och kommuner. Det fanns en del halvfärdiga importmetoder tillgängliga ute på fältet, men det effektivaste sättet för oss var att importera entiteterna direkt till Drupals databas.

Drupals entiteter består av en huvudtabell där innehållet hålls ihop av ett unikt ID, samt enskilda tabeller för alla fält som ingår i en viss entitet.

Migreringen av innehåll har fortsatt med bland annat Mat och fritid. För Mat och fritids recept använde vi en likande XML-generator som för nyheterna, men skapade en ny importör, eftersom recepten fick en egen innehållstyp i Drupal.

För resten av sajtens artiklar använde vi nyhetsimporten som vid det här laget hade utvecklats till en generell importör för artiklar. Denna XML-importör kan numera användas för i princip vilken typ av innehåll som helst som kan översättas till XML.

Fotnot:
Verktyget ”Nyhetswebben”, skapades ursprungligen av Robert Tamm. Nyheterna, tidigare ”Internytt”, har även använt andra webbverktyg. Artiklarna från tiden före oktober 2002 verkar dock till största delen ha gått förlorade.

Nyhetswebben 2.1

Författare: Christian Wikström

Webmaster, Journalist