it-swarm-eu.dev

Jaké jsou rozdíly mezi NoSQL a tradičním RDBMS?

Jaké jsou rozdíly mezi NoSQL a tradičním RDBMS?

Během posledních několika měsíců byla NoSQL často zmiňována v technických zprávách. Jaké jsou jeho nejdůležitější vlastnosti v porovnání s tradičním RDBMS? Na jaké úrovni (fyzické, logické) dochází k rozdílům?

Kde jsou nejlepší místa k použití NoSQL? Proč?

71
Spredzy

NoSQL znamená „nejen SQL“ a obvykle to znamená, že databáze není relační databáze, která byla v posledních desetiletích velmi populární.

Důvod, proč byl NoSQL v posledních letech tak populární, je hlavně proto, že když relační databáze vyroste z jednoho serveru, není už tak snadné používat. Jinými slovy, v distribuovaném systému se příliš nevyrovnávají. Všechny velké weby, které jste zmínili o Googlu, Yahoo, Facebooku a Amazonu (o Digg moc nevím), mají spoustu dat a ukládají data do distribuovaných systémů pro několik důvody. Může se stát, že data se nevejdou na jeden server, nebo existují požadavky na vysokou dostupnost .

CAP věta

Vlastnosti distribuovaného systému lze popsat CAP Věta . Ze tří vlastností můžete mít maximálně dvě:

  • [~ # ~] c [~ # ~] onsistency
  • [~ # ~] a [~ # ~] dostupnost
  • tolerance k síti [~ # ~] p [~ # ~] artitioning

Amazon Dynamo používá Event Consistency , aby se přiblížil a získal všechny tři vlastnosti. Příspěvek Dynamo: Amazon's Highly Available Key-Value Store stojí za přečtení, když se dozvíte o databázích NoSQL a distribuovaných systémech. Amazon Dynamo má vlastnosti A a P.

Google používá odlišný přístup s BigTable , který má vlastnosti C a A.

Další NoSQL databáze

Jak jsem psal na začátku, existuje mnoho dalších druhů databází NoSQL, které jsou navrženy pro různé požadavky. Např. grafové databáze jako Neo4j , databáze dokumentů jako CouchDB a multimodel/objektové databáze jako OrientDB .

Nakonec bych rád řekl, že relační databáze zůstanou populární. Jsou velmi flexibilní a udržovatelné. Nejsou však vždy tou nejlepší volbou.

61
Jonas

NoSQL je velmi široký pojem a obvykle se označuje jako „nejen SQL“. Tento termín upadá z laskavosti v komunitě mimo RDBMS.

Zjistíte, že databáze NoSQL má málo společných charakteristik. Lze je zhruba rozdělit do několika kategorií:

  • ukládá klíče/hodnoty
  • Databáze inspirovaná Bigtable (na základě dokumentu Google Bigtable)
  • Dynamo inspirované databáze
  • distribuované databáze
  • databáze dokumentů

Toto je obrovská otázka, ale v tomto Průzkum distribuovaných databází .

Pro krátkou odpověď:

Databáze NoSQL mohou upustit od různých částí ACID, aby dosáhly určitých dalších výhod - tolerance oddílů, výkon, distribuce zatížení nebo lineární škálování s přidáním nového hardwaru.

Pokud jde o to, kdy je použít - záleží zcela na potřebách vaší aplikace.

22

NoSQL je druh databáze, která nemá pevné schéma jako tradiční RDBMS. U databází NoSQL je schéma definováno vývojářem za běhu. Nepíšou normální příkazy SQL proti databázi, ale místo toho používají API k získání dat, která potřebují. Databáze NoSQL lze obvykle snadno škálovat na různých fyzických serverech, aniž by bylo nutné vědět, na kterém serveru jsou hledaná data.

Pro tuto flexibilitu však existují určité kompromisy: Databáze NoSQL v porovnání se systémy RDBMS, jako je SQL Server, Oracle, DB2, MySQL atd., Postrádají funkce. Neexistuje žádný Service Broker, protokolování transakcí, balíčky ETL atd.

NoSQL není něco nového. Ve skutečnosti to bylo asi 50–60 let. Tehdy se to nazývalo COBOL. Stejný přesný nápad, přišla s tím jen jiná skupina.

12
mrdenny

V zásadě odpadá nastavení relace, primární a cizí klíče a další režijní náklady spojené s udržováním transakční bezpečnosti vám často přináší extrémní zvýšení výkonu. To však není jedinečné u nových databází/datových úložišť, protože např. MySQL byla vyladěna tak, aby fungovala na "úrovních NoSQL" obcházením vrstev.

Stručně řečeno, často můžete dosáhnout působivého výkonu, pokud jste v pořádku s rizikem možného ztráty dat. Většina systémů NoSQL to dělá. Např. MongoDB uvádí změny dat, které se mají zapisovat, když je to vhodné. Samotná data jsou bezpečná a transakčně bezpečná, ale jsou uchovávána v nestálém úložišti (paměti). Pokud ztratíte energii, nemůžete si být stoprocentně jistí, že jste neztratili data nebo že nemáte poškozená data.

Je to kompromis mezi bezpečností a výkonem.

6
Johanna Larsson

Dobrým místem pro začátek je vstup na Wikipedii . V podstatě místo toho vztahující se data v jedné tabulce k druhé ukládáte věci jako páry klíčové hodnoty a neexistuje žádné databázové schéma, je zpracováno místo toho v kódu.

Několik webů používá současně NoSQL i typické servery RDBMS, ale k ukládání různých dat. Takže si nemusíte vybírat jeden nebo druhý.

5
steve.lippert

Těžce jsem pracoval na MongoDB NoSQL Database a Oracle.

Schéma

SQL databáze má své vlastní předdefinované schéma pro ukládání strukturovaných dat.

V databázi NoSQL neexistuje předdefinované schéma, zde je schéma nejdynamičtějším prvkem založeným na datových prvcích.

Škálovatelnost

SQL databáze jsou vertikálně škálovatelné, což znamená, že chceme-li škálovat základní databázi SQL, musíme poskytnout hardwarové zvýšení, na kterém je nainstalován systém DBMS. To je místo, kde občas platí omezení škálovatelnosti.

Databáze NoSQL jsou horizontálně škálovatelné, což znamená, že pokud to chceme škálovat, musíme přidat více uzlů a vytvořit distribuční síť na základě naší vlastní potřeby a požadovaného výkonu. Tímto způsobem snižují zatížení databáze

Získávání dat

V databázích založených na SQL můžeme pro definování a manipulaci s daty použít SQL (Structured Query Language), který je dnes velmi silný.

Z pohledu databáze NoSQL se dotazy zaměřují na sběr a dokumenty. Někdy se nazývá UnQL (Unstructured Query Language). Toto je stále ve vývojové fázi, takže se liší od dodavatele k prodejci databáze NoSQL.

Pro více informací o klíčových rozdílech můj blog: Rozdíl mezi databází SQL a NoSQL

0