sql >> Databáze >  >> NoSQL >> MongoDB

Rozdíl mezi databázemi založenými na dokumentu a databázemi založenými na klíči/hodnotě?

Hlavní rozdíly jsou datový model a možnosti dotazování.

Obchody typu klíč–hodnota

První typ je velmi jednoduchý a pravděpodobně nepotřebuje žádné další vysvětlení.

Datový model:více než jen obchody s páry klíč–hodnota

Ačkoli existuje určitá debata o správném názvu databází, jako je Cassandra, rád bych je nazval sloupcovými rodinnými obchody . Přestože páry klíč-hodnota jsou nezbytnou součástí Cassandry, neomezuje se jen na to. Umožňuje vnořovat páry klíč–hodnota, takže klíč může odkazovat na více párů podklíč–hodnota.

Páry klíč–hodnota však nelze vnořovat donekonečna. Jste omezeni na tři úrovně (rodiny sloupců) nebo čtyři úrovně vnoření (rodiny nadsloupců). V případě, že termín rodina sloupců nezní, podívejte se na článek WTF o SuperColumn, je to dobré vysvětlení Cassandrina datového modelu.

Databáze dokumentů , jako jsou CouchDB a MongoDB ukládají celé dokumenty ve formě objektů JSON. Tyto objekty si můžete představit jako vnořené páry klíč–hodnota. Na rozdíl od Cassandry můžete vnořovat páry klíč–hodnota, kolik chcete. JSON také podporuje pole a rozumí různým typům dat, jako jsou řetězce, čísla a booleovské hodnoty.

Dotazy

Domnívám se, že obchody s řadou sloupců lze dotazovat pouze pomocí klíče nebo zapsáním funkcí map-reduce. Nemůžete se dotazovat na hodnoty jako v SQL databázi. Pokud vaše aplikace potřebuje složitější dotazy, bude muset vaše aplikace vytvořit a udržovat indexy, aby měla přístup k požadovaným datům.

Databáze dokumentů podporují dotazy podle klíče a funkce redukce map, ale také vám umožňují provádět základní dotazy podle hodnoty, jako je „Dejte mi všechny uživatele s více než 10 příspěvky“. Databáze dokumentů jsou tímto způsobem flexibilnější.



  1. Mongoose -- Vynutit název kolekce

  2. Pole výsledků Mongoose/MongoDB jsou v JavaScriptu nedefinovaná

  3. Jak zjistím, zda se používá index

  4. Přístup k databázi produkce meteorů v roce 2016