Jeg tror bogstaveligt talt alle de store NoSQL-databaser vil understøtte dette krav, især hvis du faktisk ikke har en stor mængde data (hvilket rejser spørgsmålet, hvorfor NoSQL?).
Når det er sagt, har jeg for nylig været nødt til at designe og arbejde med en NoSQL-database til tidsseriedata, så jeg kan give noget input til det design, som så kan ekstrapoleres for alle andre.
Vores valgte database var Cassandra
, og vores design var som følger:
- Et enkelt tasterum for alle 'symboler'
- Hvert symbol var en ny række
- Hver gang indtastning var en ny kolonne for den relevante række
- Hver værdi (kan være mere end en enkelt værdi) var værdien del af tidsindtastningen
Dette giver dig mulighed for at opnå alt, hvad du har bedt om, især at læse dataene for et enkelt symbol og bruge et interval, hvis det er nødvendigt (kolonneområdekald). Selvom du sagde, at ydeevnen ikke var kritisk, var den for os, og den var også ret effektiv - alle data for et enkelt symbol er per definition sorteret (kolonnenavnssortering) og altid gemt på den samme node (ingen krydsknudekommunikation for simple forespørgsler ). Endelig oversættes dette design godt til andre NoSQL-databaser, der har dynamiske kolonner.
Ud over dette er her nogle oplysninger om brug af MongoDB (og begrænsede samlinger, hvis det er nødvendigt) til en tidsseriebutik:MongoDB som en tidsseriedatabase
Endelig er her en diskussion af SQL vs NoSQL for tidsserier:https://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql
Jeg kan tilføje følgende til den diskussion:
- Læringskurven for NoSQL vil være højere, du får ikke den ekstra fleksibilitet og funktionalitet gratis i form af 'bløde omkostninger'. Hvem vil understøtte denne database operationelt?
- Hvis du forventer, at denne funktionalitet vil vokse i fremtiden (enten som flere felter, der skal tilføjes til hver tidsindtastning, eller meget større kapacitet i form af antal symboler eller størrelsen på symbolets tidsserie), så gå helt klart med NoSQL. Fleksibilitetsfordelen er enorm, og den skalerbarhed, du får (med ovenstående design) på både 'pr. symbol' og 'antal symboler'-basis er næsten ubegrænset (jeg siger næsten ubegrænset - maksimale kolonner pr. række er i milliarder, maksimum rækker pr. nøglerum er ubegrænset, tror jeg).