sql >> Database >  >> NoSQL >> MongoDB

Welke NoSQL DB moet worden gebruikt voor schaarse Time Series-achtige gegevens?

Ik geloof dat letterlijk alle grote NoSQL-databases die vereiste zullen ondersteunen, vooral als je niet echt een grote hoeveelheid gegevens hebt (wat de vraag oproept, waarom NoSQL?).

Dat gezegd hebbende, heb ik onlangs een NoSQL-database voor tijdreeksgegevens moeten ontwerpen en ermee werken, zodat ik wat input kan geven over dat ontwerp, dat vervolgens kan worden geëxtrapoleerd naar alle andere.

Onze gekozen database was Cassandra , en ons ontwerp was als volgt:

  • Een enkele keyspace voor alle 'symbolen'
  • Elk symbool was een nieuwe rij
  • Elke keer dat invoer een nieuwe kolom was voor die relevante rij
  • Elke waarde (kan meer dan één waarde zijn) was het waardegedeelte van de tijdinvoer

Hiermee kunt u alles bereiken waar u om vroeg, met name om de gegevens voor een enkel symbool te lezen en indien nodig een bereik te gebruiken (kolombereikoproepen). Hoewel je zei dat prestaties niet kritiek waren, was het voor ons en dit was ook behoorlijk performant - alle gegevens voor een enkel symbool zijn per definitie gesorteerd (kolomnaam sorteren) en altijd opgeslagen op hetzelfde knooppunt (geen communicatie tussen knooppunten voor eenvoudige zoekopdrachten ). Ten slotte vertaalt dit ontwerp zich goed naar andere NoSQL-databases die dynamische kolommen hebben.

Verder vindt u hier wat informatie over het gebruik van MongoDB (en indien nodig gelimiteerde collecties) voor een tijdreekswinkel:MongoDB als een Time Series-database

Ten slotte is hier een bespreking van SQL versus NoSQL voor tijdreeksen:https://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql

Ik kan aan die discussie het volgende toevoegen:

  • De leercurve voor NoSQL zal hoger zijn, je krijgt de extra flexibiliteit en functionaliteit niet gratis in termen van 'zachte kosten'. Wie gaat deze database operationeel ondersteunen?
  • Als u verwacht dat deze functionaliteit in de toekomst zal groeien (ofwel omdat er meer velden aan elke tijdinvoer moeten worden toegevoegd, of als een veel grotere capaciteit in termen van aantal symbolen of grootte van de tijdreeksen van symbolen), ga dan zeker voor NoSQL. Het flexibiliteitsvoordeel is enorm, en de schaalbaarheid die u krijgt (met het bovenstaande ontwerp) op zowel de 'per symbool'- als het 'aantal symbolen'-basis is bijna onbegrensd (ik zeg bijna onbegrensd - maximale kolommen per rij zijn in de miljarden, maximale rijen per toetsruimte is onbegrensd geloof ik).


  1. mangoest/mongoest aangepaste sortering

  2. Gegevensmigratie van Oracle naar Mongo DB

  3. Hoe PyMongo gebruiken met Flask Blueprints?

  4. Vraag naar een specifieke datum met MongoDB en NodeJS