Hodně záznanů - paměť nebo db?   zodpovězená otázka

Architektura, Databáze

Řeším teď jednu obecnější otázku.

Mám DB a v ní několik tabulek. Jedna tabulka může mít tisíce záznamů, další desetisice a třetí statistice. Všechny jsou propojeny kaskádově relaci. Takže záznam z první tabulky může s sebou nést dalších X záznamů z druhé tabulky a každá z těhle kombinací může nést další záznamy ze třetí tabulky. Takže pokud bych chtěl zobrazit všechny detaily jednoho záznamu z první tabulky, tak to může znamenat i třeba 20-30 různých položek.

A teď k věci. Aplikace bude nabízet hledání dle kritérií ze všech tabulek a já dle kritérií zobrazím seznam nalezených záznamů z první tabulky. Už mám připravený také objektový model pro celou sadu záznamů, ale teď řeším jestli celý výsledek dotazu načíst do paměti (i třeba s nějakým stránkováním po X záznamech) nebo spíše načíst jen informace z první tabulky a informace z dalších propojených tabulek zobrazit pouze když si o to uživatel "řekne", tj. spustit několik poddotazů a rychle aktualizovat form.

Zatím se spíše příkláním k variantě s poddotazy na požádání, protože je fakt, že uživatel zpravidla nebude potřebovat uplně všechny záznamy.

Jak to řešíte?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podobné dilema jsem řešil.

Nakonec jsem se přiklonil k variantě načítání dat do objektového modelu, ale jen z jediného důvodu. DB server je vzdálený, přistupovat na něj lze z více IP adres. Uživatelé se často připojují pomocí mobilních technologií, takže rychlosti odezev nejsou nikterak oslňující. Pokud potřebuje uživatel pracovat s větším množstvím klientů a smluv, práce s DB ho poměrně zdržuje. S tímto řešením se mu na začátku načte z DB množina klientů a smluv a nadále pracuje už jen lokálně přímo nad objektovým modelem. Veškeré změny na závěr své práce odešle do DB. Má to jisté výhody a samozřejmě i nevýhody. Např. pokud by pracovali dva uživatelé nad stejnou množinou dat, promítne se do DB změna toho, kdo jí odeslal později. Samozřejmě se to dá ošetřit.

Mé doporučení je jasné. Pokud budou uživatelé pracovat s DB "lokálně" tj. v rámci místní sítě, není žádný důvod k tomu to řešit takto a rozhodně sahněte po "dotazech na vyžádání". Od toho DB systémy jsou. Do paměti je někdy praktické načítat např. různé číselníky nebo slovníky. Nikoliv však konkrétní data.

Doufám, že jsem dotaz pochopil správně a nepřispívám tady tak trochu mimo kontext :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

moc děkuji, tak jsem to myslel:)

Už jsem to začal řešit jako dotaz na vyžádání a vše plně funkční bez viditelných prodlev.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback