Optimalizace systému s 50 sql servery
Společnost Ratiopharm se na nás obrátila s žádostí o pomoc při optimalizaci vnitřně vyvíjeného CRM systému CMR. CMR je aplikace napsaná v programovacím jezyce Delphi a využívá ke svému chodu databázového serveru Microsoft SQL Server. Systém je koncipován jako offline řešení s online synchronizací, umožňuje tak všem zaměstnancům pracovat se všemi relevantními údaji kdekoliv v terénu a následně údaje synchronizovat s hlavním serverem.
Problém : Vlastní synchronizace probíhá velmi pomalu, synchronizace většího množství údajů trvá i několik hodin. Po celou tuto dobu není možné aplikaci využívat a navíc je třeba hradit náklady za vytáčené připojení k internetu.
Při změně regionu zaměstnance je nutné provést reinicializaci dat - která se dá provádět pouze na poboččce a trvá několik hodin.
Někteří zaměstnanci nemají relevantní záznamy a replikace v některých připadech neproběhne vůbec.
Po převzetí databázového modelu a vývojové dokumentace aplikace, jsme provedli jejich detailní analýzu. Dalším nezbytným krokem bylo po porovnání reálného stavu dustupných dat jednotlivých uživatelů oproti požadovanému stavu a následná kontrola replikačních skriptů, jednotlivých podmínek a souvisejících triggerů.
Analýzy odhalily zásadní chyby v databázovém návrhu a v metodice replikačních skriptů, jejichž důsledkem bylo špatné filtrování údajů a související chybné přidělení-nepřidělení záznamů do replikovaných dat uživatelů, spolu s nepřiměřeně vysokou náročností replikace na HW zdroje serveru i klientských stanic.
Prvním krokem optimalizace bylo odstranění nekorektních vazebních tabulek z databázového modelu a jejich náhrada za nové. Dále byly vytvořeny tabulky a funkce pro správu archivace údajů, které již nebudou uživatelům replikovány.
Na základě těchto úprav byly vytvořeny nové replikační skripty, které výrazně snížily objem, hardwarovou náročnost a v neposlední řadě i dobu trvání jednotlivých replikací.
Následně byly z databáze vyfiltrovány veškeré záznamy s vadnými údaji, záznamy bez návaznosti na existující data a další nekorektní data. Výsledná databáze již obsahovala pouze relevantní a korektně replikovatelné údaje.
Dalším krokem bylo provedení úprav samotné aplikace - byly ošetřeny všechny obrazovky pracující s odstraněnými nebo upravenými databázovými tabulkami a do hlavní správcovské aplikace přibyla funkcionalita pro správu archivace starších záznamů.
Na základě našich úprav došlo ke stabilizaci replikací a jejich několikanásobnému zrychlení.
Replikace již není třeba reinicializovat ani při větších změnách a vytvoření nového zaměstnance včetně prvotní inicializace je možné provádět i vzdáleně.
Provedené úpravy výrazně snížily provozní náklady systému, při současném zvýšení kvality udržovaných údajů. Úpravy zajistily zachování hodnoty investice do původního systému a uchránily tak společnost před další investicí do nového software s požadovanou funkcionalitou.