Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 16395|Odpověď: 0

[Zdroj] Databázové schéma: Oddělení čtení a zápisu do CQRS

[Kopírovat odkaz]
Zveřejněno 04.05.2020 9:58:50 | | | |
Oddělení čtení a zápisu

Když podnikání společnosti nadále roste a počet uživatelů výrazně roste, původní databáze pravděpodobně nebude schopna sama obstát. Pak ano

  • Scale-in, což zvyšuje výkon hardwaru, ale je pravděpodobné, že počet uživatelů bude nadále růst a zvýšený výkon brzy zmizí.
  • Oddělení čtení a zápisu: Databáze to nevydrží, je to jen příliš mnoho čtení a zápisu, zvláště pokud jsou v posledních 24 hodinách složité dotazy, například u nejoblíbenějších produktů. Vyžaduje velmi složité SQL příkazy a samozřejmě je pomalý na spuštění.


Aby však bylo možné oddělit čtení a zápis, je nutné databázi rozdělit na hlavní a slave knihovny.

Hlavní relační databáze na trhu podporují replikaci dat, takže databázi můžete rozdělit na dvě role: master a slave, psát operace na master serveru a synchronizovat master server s ostatními slave servery.

Offline operace, jako jsou čtení a analýza dat, se provádějí na slave serveru.

Víme, že mnoho aplikací na internetu je čteno, takže více slave může sdílet zátěž a zajistit dostupnost a správnost dat.



Odpovídající původní aplikační kód je však také nutné upravit a změnit tak, aby se pro zápis dat používala hlavní knihovna a pro čtení dat se používala slave knihovna, což je ekvivalent přepisování.

Komplexní dotazy

Nicméně i po přepsání kódu jsem zjistil, že výkon se stále výrazně nezlepšil, protože se používalo příliš mnoho složitých dotazů, a v databázové komponentě jsme uvedli, že připojení jsou velmi náročná na výkon.

Můžeme tedy použít samostatnou tabulku pro uložení populárních produktů za posledních 24 hodin, takže k tomu stačí použít jednoduché SQL?

Jinými slovy, jedna sada databázových tabulek není vhodná pro různé chování, jako jsou reporty, vyhledávání, transakce atd.

Aktuální tabulka je navržena pro přidávání a úpravu dat a není vhodná pro složité dotazy.

Ale musíme také zvážit, jak se tato dotazovací báze aktualizuje, zda toto zpoždění snášíme, zda nemusí být aktualizována v reálném čase.

CQRS

Zda lze zpoždění tolerovat, je třeba nahlížet z obchodního hlediska, například u oblíbených nejlepších produktů za posledních 24 hodin, trochu zastaralých informací nemá velký dopad, stačí konečná konzistence.

Můžeme použít CQRS (Command Query Responsibility Segregation), tedy oddělení příkazů pro přidávání nebo úpravu příkazů od dotazovacích povinností.



V CQRS je důraz kladen na oddělení čtení (Dotaz) a zápisu (příkaz), protože data čtená uživateli jsou obvykle zastaralá, takže proč je potřeba číst z databáze, můžete přímo vytvořit zdroj čtených dat. Může to být Cache, XML, JSON atd.

Jak vyřešit problém, jak aktualizovat, který jsem zmínil? Můžete použít událost, tedy událost, například když je produkt prodán, můžete publikovat událost pro úpravu původního modelu čtení.

Tímto způsobem se synchronizace stává asynchronní prostřednictvím mechanismu událostí.

Nakonec je tato metoda nejlépe použita pouze pro složité dotazy a původní jednoduché dotazy jsou stále načítany v relační databázi. Proč? Protože zavedení nové technologie vyžaduje cenu, například synchronní mutační kroky a mechanismy událostí, nemůžeme vidět jen výhody nových technologií a ne nevýhody.






Předchozí:Jining nový koronavirus – aktualizace zpráv o velkých datech v reálném čase – stažení zdrojového kódu
Další:Dopad souboru dll.refresh při odkazování na knihovnu tříd projektu
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com