V poslední době jsme se zabývali řešením toho, jak dostat data z Notes databázi na mobily tak, aby byla dostupná i bez připojení k internetu. Ba co víc, aby tato data šla na mobilu upravovat a zase zpátky přesunout do Notes databáze. A to nejen texty či čísla, ale i fotky, audio či jiné soubory. K tomu všemu, aplikace měla využívat i interních senzorů a zařízení mobilu, jak je lokace, rychlost, fotoaparát apod. Tento poslední požadavek znamenal, že aplikaci bude nutné napsat jako nativní a jelikož se jednalo o Android mobily, zvolili jsme pro vývoj Android Studio.
Mobilní zařízení mají možnost ukládat data do několika míst. Mohou to být textové soubory nebo častěji se využívá SQLite databáze, která je in memory databáze sloužící pro ukládání strukturovaných dat. Jelikož jsme potřebovali synchronizovat data se serverem, bylo k tomu nutné napsat i nějaký kód pro synchronizaci, ve kterém by se řešilo, co se má přepsat čím, takže obdoba Notes replikace. Proto jsme jako úložiště zvolili Couchbase databázi.
Couchbase databáze je podobně jak Lotus Notes, nestrukturovaná databáze, která ukládá svá data v podobě JSON. Kromě klasického serveru má ovšem i mobilní část, která se společně s aplikací, instaluje na mobil. Do ní se pak ukládají data a tuto databázi je pak možné replikovat se serverovou Couchbase s využitím jejich synchronizátoru Sync Gateway. Základní vlastnosti replikace:
Pomoci Couchbase databáze jsme tedy zajistili replikaci dat z mobilu na server. Na serveru to ovšem je nyní v Couchbase databázi, tudíž ještě je nutné dostat data na Notes server.
Pro synchronizaci dat mezi těmito dvěma systémy byl napsán Java agent, který porovnával datumy modifikace v obou systémech a na jejich základě dělal aktualizaci dat, přičemž ještě porovnával změny hodnot. Při tvorbě takového mechanismu je nutné nějak navrhnout řešení replikačních konfliktů, ale jelikož mnoho se dá vyřešit nastavením přístupů, omezeným počtem polí, které upravujete na mobilu, či určením priority záznamu dle konkrétního charakteru aplikace, nemusí to být až takový problém. Pro komunikaci s Couchbase serverem bylo využito Couchbase Java SDK. Zde je příklad napojení na Couchbase server z Notes Java agenta: