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ý).