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

Jakou NoSQL DB použít pro řídká data, jako jsou časové řady?

Věřím, že doslova všechny hlavní databáze NoSQL budou tento požadavek podporovat, zvláště pokud ve skutečnosti nemáte velký objem dat (což vyvolává otázku, proč NoSQL?).

To znamená, že jsem nedávno musel navrhnout a pracovat s databází NoSQL pro data časových řad, abych mohl poskytnout nějaké informace o tomto návrhu, který pak lze extrapolovat pro všechny ostatní.

Naše vybraná databáze byla Cassandra a náš návrh byl následující:

  • Jeden klíčový prostor pro všechny „symboly“
  • Každý symbol byl nový řádek
  • Pokaždé byl záznam pro příslušný řádek nový sloupec
  • Každá hodnota (může být více než jedna hodnota) byla hodnotovou částí časového vstupu

To vám umožní dosáhnout všeho, co jste požadovali, zejména číst data pro jeden symbol a v případě potřeby použít rozsah (volání rozsahu sloupců). I když jste řekli, že výkon není kritický, byl pro nás a toto bylo také docela výkonné – všechna data pro každý jednotlivý symbol jsou podle definice seřazená (třídění podle názvu sloupce) a vždy uložena na stejném uzlu (žádná meziuzlová komunikace pro jednoduché dotazy ). Konečně, tento návrh se dobře převádí do jiných NoSQL databází, které mají dynamické sloupce.

Dále je zde několik informací o používání MongoDB (a v případě potřeby omezených kolekcí) pro úložiště časových řad:MongoDB jako databáze časových řad

Nakonec je zde diskuse o SQL vs NoSQL pro časové řady:https://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql

K této diskusi mohu přidat následující:

  • Křivka učení pro NoSQL bude vyšší, dodatečnou flexibilitu a funkčnost nezískáte zdarma, pokud jde o „měkké náklady“. Kdo bude tuto databázi operativně podporovat?
  • Pokud očekáváte, že tato funkcionalita v budoucnu poroste (buď tím, že ke každému časovému vstupu bude přidáno více polí, nebo mnohem větší kapacita, pokud jde o počet symbolů nebo velikost časové řady symbolů), rozhodně použijte NoSQL. Výhoda flexibility je obrovská a škálovatelnost, kterou získáte (s výše uvedeným návrhem), jak na bázi „na symbol“, tak na „počet symbolů“, je téměř neomezená (říkám téměř neomezená – maximální počet sloupců na řádek je v miliardách, max. Počet řádků na klíčový prostor je podle mého názoru neomezený).


  1. Jak přimět klienta ke stažení velmi velkého souboru, který je generován za běhu

  2. Mongo agregace a MongoError:výjimka:BufBuilder se pokusil o grow() na 134217728 bajtů, čímž překročil limit 64 MB

  3. Nelze načíst data z API pomocí Express NodeJS a MongoDB, načítání

  4. Souhrnný/projektový dílčí dokument jako dokument nejvyšší úrovně v mongo