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

náklady na klíče v databázi dokumentů JSON (mongodb, elasticsearch)

Správně jste si všimli, že dokumenty budou mít jinou velikost. Ušetříte tedy minimálně 15 bytes na dokument (60% pro podobné dokumenty), pokud se rozhodnete přijmout druhé schéma. To skončí něco jako 140MB za vašich 10 million evidence. To vám poskytne následující výhodu:

  • Úspora pevného disku. Jediný problém je, že při pohledu na ceny současných HDD je to většinou k ničemu.
  • Úspora paměti RAM. Ve srovnání s pevnými disky to může být užitečné pro indexování. V mongodb pracovní sada indexů by se měla vejít do RAM, aby bylo dosaženo dobrého výkon . Pokud tedy budete mít indexy na těchto dvou polích, ušetříte nejen 140MB místa na HDD, ale také 140MB potenciálního prostoru RAM (což je ve skutečnosti patrné).
  • I/O . K mnoha úzkým místům dochází kvůli omezení vstupního/výstupního systému (rychlost čtení/zápisu z disku je omezená). Pro vaše dokumenty to znamená, že se schématem 2 můžete potenciálně číst/zapisovat twice as many documents za 1 sekundu.
  • síť . V mnoha situacích je síť dokonce mnohem pomalejší než IO, a pokud je váš DB server na jiném stroji, pak se data musí posílat po drátě vašemu aplikačnímu serveru. A také budete moci odeslat dvakrát tolik dat.

Po vyprávění o výhodách vám musím říci nevýhodu malých kláves:

  • čitelnost databáze. Když provedete db.coll.findOne() a vidí {_id: 1, t: 13423, a: 3, b:0.2} je docela těžké pochopit, co je zde přesně uloženo.
  • čitelnost aplikace podobné s databází, ale alespoň zde můžete mít řešení. S mapovací logikou, která transformuje currentDate na c a price na p můžete napsat čistý kód a mít krátké schéma.



  1. Přímý způsob generování kódu pomocí Mongoose a Node.js a podtržení?

  2. PyMongo se špatně chová s čísly s plovoucí desetinnou čárkou

  3. Načtěte dílčí dokumenty, které odpovídají maximální hodnotě v poli

  4. Zveřejněte obrázek pomocí binárních a dalších dat