Častý přístup do daabáze   zodpovězená otázka

ASP.NET WebForms, ASP.NET MVC, Architektura, Databáze

Dobrý den,

mám aplikaci, ve které docela často přistupuji do databáze. Chci se zeptat na správné řešení následujícího kroku. Z jedné tabulky většinou vyselectovávám více hodnot, mám to dělat tak, že se připojím k databázi, vyselectuji všechny hodnoty a vložím je do nějakého pole, poté připojení zavřu a dále je předám nějaké metodě, která mi je zpracuje (hodnoty z pole porovnávám s jinými hodnotami), nebo mám spíše přes tuto metodu pomocí smyčky se neustále připojovat do databáze a kontrolovat hodnoty z databáze s mými hodnotami po jedné (vstupní parametr pro WHERE selectu by byla moje hodnota k porovnání).

Doufám že jsem to napsal srozumitelně.

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

Určitě bych to dělal v bloku.S tím,že bych spojení do DB pooloval,tzn.napsal si třídu,která by se o spojení s DB starala(otevírala,zavírala,vracle instanci na DbContext,atd.)

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

To záleží na spoustě věcí. Obecně je nejlepší mít připojení otevřené co nejkratší dobu. Doporučuji tedy tady otevřít jedno spojení na dobu načítání dat a pak s nimi pracovat v paměti. Tedy pokud je to možné z důvodů objemu dat a dalších rysů aplikace. Téměř vždy je totiž načítání seznamu po jednom nejpomalejší řešení.

Pokud si nejste jistý, udělejte výkonostní měření.

Dále také hodně záleží na použité technologii (ADO.NET, EntityFramework, Linq2Sql).

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

Záleží, kolik těch dat je. Pokud je jich řádově do 100 MB (záleží, co vám hosting dovolí a co jiného ještě aplikace dělá, jestli tuhle operaci bude možné spustit vícekrát najednou atd.), tak si je klidně načtěte do paměti - bude to lepší než posílat do databáze tisíce (sic jednoduchých) dotazů.

Jen pozor, ať do toho pole nesaháte z více vláken, pokud ano, tak zamykejte.

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