2009-11-04 4 views
5

Wir haben eine Reihe von Daten, die die Benutzer sehen möchten, Fenster von und tun dies schnell. Sie möchten vielleicht ein Fenster der Daten betrachten, das ein Tag, eine Woche, ein Monat oder ein willkürlicher Anfangs- und Enddaten ist. Das Sortieren und Zusammenfassen dieser ganzen Sachen in Echtzeit erweist sich als schmerzhaft für uns, also kam ich auf die Idee, etwas Ähnliches wie Mipmaps im 3D-Rendering zu machen. Sie speichern die gleichen Daten, die zuvor auf verschiedenen Skalen berechnet wurden, und interpolieren dann die Ergebnisse mit den verschiedenen Skalen. Ich wusste also schon, wie viele Zahlen für ein Jahr, einen bestimmten Monat, eine bestimmte Woche und einen bestimmten Tag für einen Laden vorlagen. Wenn sie nach einem bestimmten Bereich fragen, verwende ich die verschiedenen Skalen, um schnell etwas hinzuzufügen, das das richtige ergibt Ergebnisse, aber ich muss nicht unbedingt den gesamten Datensatz verarbeiten, ich nur vier oder fünf Datensätze abrufen und addieren oder subtrahieren sie.Gibt es ein Datenspeichermuster, das Mipmaps in Grafiken ähnelt?

Ist das ein echtes Muster? Macht es Sinn und es gibt Orte, an denen ich lesen kann, wie man es am besten macht, oder gibt es viel bessere Möglichkeiten, mit großen Datenmengen wie dieser umzugehen, wo sie in verschiedenen Schichten betrachtet werden müssen?

Es scheint, dass dies ein bekanntes und gelöstes Problem sein sollte. Zum Beispiel haben viele Leute Aktienportfolios und sie müssen jeden Tag solche Dinge tun. Unsere Daten sind keine Aktienkurse, aber die Idee ist die gleiche.

Antwort

2

OK, ich suchte und suchte und suchte noch mehr. Die Links von Andy Dent veranlassten mich, die Daten als "Zeitreihen" zu beschreiben, und das half einigen. Dann bin ich über OLAP gelaufen und habe gemerkt, dass ich das neu erfinde. Ich wusste, dass dies ein bekanntes, gründlich behandeltes Problem sein musste und ich hatte recht. OLAP ist es.

Sie erstellen eine Reihe von Aggregat-Tabellen, die die Daten entlang bestimmter Dimensionen aggregieren (Zeit in diesem Fall) und Sie können sogar Tools wie Mondrian abrufen, die Abfragen in einer anderen Abfragesprache (dh nicht SQL) und einer Menge von Abfragen benötigen Fakttabellen plus Aggregate, und es wird entscheiden, wie die Abfrage für diese Tabellen am besten durchgeführt werden soll.

1

In gewissem Sinne haben Sie Ihre Frage hier beantwortet, als Sie erklärt haben, wie das Mip Mapping funktioniert (durch Interpolation/Extrapolation).

Auf verschiedenen Ebenen von "Zoom" würden Sie nur eine niedrigere Auflösung oder Abtastrate der Daten wählen. Die Umkehrung würde auf höheren Ebenen von "Zoom" angewendet werden - bis zu dem Punkt, wo Sie Interpolation (wie linear/Polynom/Spline/etc) auf die Daten verwenden müssten, um die Werte zwischen Ihren Datenpunkten zu schätzen.

+0

Ich frage mich nur, ob es eine Menge Literatur dafür gibt. Vielleicht ist dies eine beschissene Lösung für Daten und es funktioniert nur OK für visuelle Dinge (die weit weniger nachsichtig als Geld sein können, vertraue mir darauf). Ich hoffte irgendwie, jemand würde sagen: "Oh ja, genau das machen wir für bla bla bla und es funktioniert super" oder "Ich kann sehen, wo du vielleicht denkst, dass naive Lösung funktionieren würde, aber du solltest es wirklich sein mit einer Bumpletag-Struktur und es würde Ihr Problem viel besser lösen. " –

1

Ich mag Ihre Analogie zum Mipmapping und ich denke, das Feld von Observations and Measurements, vor allem Sampling-Regimes ist wahrscheinlich, wo Sie das abstrakte Daten-Design, das Sie suchen, finden. Es gibt Ihnen die Theorie hinter den Daten, obwohl sie eher an XML-Datenmodelle als an relationale Tabellen denken.

Früher habe ich mit den Jungs von CSIRO zusammengearbeitet und viel von dem Gedanken, riesige Datensätze für Dinge wie Wasserprobensensoren zu verwalten. Mehr Details unter der SEEGrid wiki.