CAP Teorém pro Distribuované Databázové Systémy

Úvod

Tady je dobře známo, že počítačové vědy věta navržené Eric Brewer, který říká, že pro databáze s distributed data můžete pouze slib, že dva z následujících tří vlastností:

  • Konzistence
  • Dostupnost
  • Partition tolerance

Tohle je velmi abstraktní a terminologie není zrovna intuitivní, takže se v tomto článku budeme dělat naše nejlepší k prolomení této teorie se z abstraktní více reálném světě mluvit a příklady. Tato věta může se budete přemýšlet o vaší databáze architektury, pokud jde o to, co aplikace opravdu potřebuje, a oběti, které to může mít, aby se k dosažení těchto.

definování terminologie CAP

pojďme si některé základní definice z cesty, abychom mohli být na stejné stránce, Jak se pohybujeme vpřed a mluvíme o této větě.

ČEPICE – Konzistenci, Dostupnost, Oddíl Tolerance

  • Konzistence – Všechny vaše data servery mají stejná data, takže můžete dotaz libovolný server v systému a získat stejné údaje.
  • dostupnost-každý požadavek na datové servery dostane odpověď. Pokud je jeden server zaneprázdněn, je směrován na jiný, který je schopen reagovat.
  • tolerance oddílů-schopnost systému pokračovat v práci, i když dojde k selhání sítě a některé servery nemohou komunikovat.

Základní Předpoklad – P je Nemožné

V distribuovaném databázovém systému vaše data jsou rozdělena do různých serverech a tyto servery mluvit s každým jiný přes síť tak, že mohou udržovat stejnou sadu dat. Problém je v tom, že se sítě rozbijí, a tak předpokládáme, že bude vždy komunikovat, tj. Z hlediska této teorie to znamená, že v reálném světě musíte obětovat toleranci rozdělení. Pokud perfektní neutuchající síť existovala, pak bychom neměli mít problém dosažení Konzistence a Dostupnost, ale tohle je skutečný svět, postavený na fyzické dráty, které selžou, a tak předpokládáme, že to bude fail.

pokud P není možné, jaké jsou naše možnosti?

protože jsme se vzdali tolerance oddílů, věta říká, že nyní si musíme vybrat mezi konzistencí a dostupností.

můžete si vybrat dostupnost, kde vaše aplikace může uspokojit všechny příchozí požadavky, ale nemůže zaručit, že data jsou nejnovější.

co vaše aplikace potřebuje?

Pokud je vaše aplikace webem sociálních médií a nemusí mít vždy nejnovější data, možná budete chtít zvolit dostupnost. Záleží na tom, že vaši uživatelé vidí příspěvek po 30 sekundovém zpoždění? Pokud ne, můžete upřednostňovat dostupnost, protože upřednostňujete, aby uživatelé měli přístup k datům, i když se nejedná o nejaktuálnější data.

Pokud na druhé straně vaše aplikace vyžaduje, aby každé čtení do databáze bylo absolutně nejnovějšími daty, budete muset obětovat Dostupnost a zvolit konzistenci. Některé požadavky budou muset chybovat kvůli tomu, že informace nelze zaručit, že se jedná o absolutně nejnovější.

volby provedené relační a NoSQL

databázové technologie jako SQL a další relační databázové systémy navržené s kyselinou upřednostňují konzistenci. Na druhou stranu většina databází NoSQL upřednostňuje dostupnost.

Závěr

věříme, že zkoumání této věty, pokud jde o vaše aplikace je vynikající cvičení a pomůže vám vyhodnotit priority vaší aplikace. Pokud máte distribuovaný datový systém, prozkoumejte svou architekturu a pochopte, kterou oběť děláte.

MongoDB, CockroachDB, a Postgres jsou všechny velké databáze tech, které dnes dělají naše databáze architektury extrémně robustní, ale jak jsme se bavili, že nejsou dokonalé. Nemáme dokonalou síť a vždy existuje „chyba uživatele“. Pokud se stěhujete do výrobního prostředí a chcete diskutovat o nejlepších možnostech pro vaši aplikaci, neváhejte nás kontaktovat na Object Rocket.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.