/ / Generovanie veľkých a pomalých správ na serveri - webové aplikácie, architektúra, server, webový server, aplikačný server

Generovanie veľkých a pomalých správ na serveri - webové aplikácie, architektúra, server, webový server, aplikačný server

Hypoteticky, ako by niekto mohol ísťimplementácia veľkých a pomalých správ na serveri? Myslím na správy, kde SQL nemôže byť optimalizovaný a to bude trvať až 60 sekúnd alebo viac na generovanie. Som si myslel, že čítaná kópia databázy nemôže zablokovať prichádzajúce dopyty alebo nejaký spôsob, ako mať proces na pozadí vykonať prácu a upovedomiť používateľa, keď sa správa skončí. Existuje najlepší spôsob, ako urobiť niečo takéto?

odpovede:

0 pre odpoveď č. 1

Je veľmi zriedkavé, že správy sa musia nachádzať blízkoreálny čas. Preto môžete s obchodnými expertmi diskutovať o tom, či je prijateľné, že údaje môžu byť na určitú dobu zastarané.Ak je toto obdobie dostatočne dlhé, mohli by ste predbežne vygenerovať správy a uložiť ich do vyrovnávacej pamäte.

Iný prístup, ktorý by bol flexibilnejší aškálovateľné by bolo publikovať udalosti, ktoré sú predmetom záujmu, na infraštruktúre správ, ako sa to deje. Potom by ste mohli mať asynchrónneho účastníka, ktorý využíva tieto udalosti, aby udržiaval denormalizovanú verziu správy aktuálnu.

Napríklad si predstavte, že musíme vypracovať správu o celkovom predaji na jeden produkt za rok. Ak aplikácia publikuje správu, ako je napríklad { type: "ProductSold", productId: 1, soldOn: someDate, price: 45.55 } potom môžete mať asynchrónneho účastníka, ktorý píše do tabuľky, ako je YearlyProductSales (year int, product_id uuid, total money) efektívne aktualizovať správu, keď sa objavujú nové tržby.

Keď udalosť opisuje niečo, čo sa už stalo a bolo zaznamenané, nebudete tiež musieť zamknúť nič pri čítaní údajov a zostavenie správy bude tak jednoduché ako SELECT * FROM YearlyProductSales.


0 pre odpoveď č. 2

Mnohé motory na hlásenie podporujú asynchrónne hlásenia. Presná implementácia závisí od vášho technického balíka, ale napríklad, ak používate Jasper Reports, tu je ako spustiť správu asynchrónne, Ak používate server SQL, Tu je to, ako to robíte pomocou SSRS. Väčšina motorov na vytváranie prehľadov má nejaký druh metód vykonávania async.

Nastavenie replík len na čítanie je osvedčený a pravdivý spôsob zmiernenia zaťaženia databázy. Opäť implementácia závisí od vášho technického balíčka. Odpoveď hore, ktorá začína po ceste smerom k techniky skladovania dát, stojí tiež za to. Dobré čítanie o dátových skladoch / dátových martách vám pomôže rozhodnúť, koľko úsilia potrebujete investovať tu.


0 pre odpoveď č. 3

Databáza SQL spracováva súčasné požiadavky transakcie a zamykanie a nemusíte sa obávať manipulácie sprichádzajúce dopyty. Ak chcete používateľovi poznamenať, že dotaz je vo fronte, musíte implementovať používateľské rozhranie, ako aj požiadavky Ajaxu a zobraziť stav procesu.