Převod dat z Lotus Notes databáze do MongoDB

O dokumentově orientované databázi MongoDB jsme psali již v několika článcích.  Pro mnoho vlastností podobných Notesům ji používáme ve svým webových aplikacích postavených na PHP a vytvářených v prostředí aplikačního frameworku Symfony .  Pokud konkrétní nasazení zahrnuje přechod z Lotus Notes nebo jejich souběžný provoz, máme pro tyto účely vyvinut převodník, který provádí synchronizaci nebo jednorázové převedení dat z Lotus Notes právě do MongoDB. Dokumentově orientovaný charakter této databáze umožňuje i převod komplikovanějším datových typů, jako jsou richtexty, přílohy nebo vícehodnotová pole.

Samotný převodník je vytvořen ve formě Lotus Notes databáze.  Formou konfiguračních dokumentů se vytvoří připojení k MongoDB s parametrizováním celého procesu.  Konfigurací je možno nastavit:

  • z jakého serveru a jaká databáze bude exportována
  • jaká data budou exportována – možnost zadání ve formě pohledu s definicí, jaké typy dokumentů převáděny být nemají
  • je možno specifikovat datum poslední modifikace dat, které budou do exportu zahrnuty
  • seznam jednotlivých polí z Lotus Notes dokumentů, která budou převáděna
blog2014_09_11_01
blog2014_09_11_02

 

Mapování jednotlivých polí pro převod se děje formou samostatných záznamů. V  nich je možno specifikovat:

  • zdroj dat z Lotus Notes dokumentu – tím může být jednotlivé pole, formule nebo příloha
  • název pole v MongoDB, které může být odlišné
  • specifikace, zda-li se jedná o vícehodnotové pole. V MongoDB bude reprezentováno polem hodnot
  • typ pole – převodník podporuje kromě běžných typů polí, jako jsou text, číslo, datum,  také možnost přenášet richtexty (ty jsou převedeny do HTML použitelného pro editaci na webu) a přílohy (ty jsou uloženy do datastoru MongoDB speciálně upraveného pro soubory s názvem GridFS )

Takto nadefinovaný převod databáze pak běží formou ručního nebo periodického spouštění.  Samotná synchronizace využívá unikátní ID dokument z Lotus Notes, čímž dochází ke svázání záznamu pro pozdější aktualizace. 


blog2014_09_11_03