mousepad Geschrieben 7. September 2010 Teilen Geschrieben 7. September 2010 Hallo, bisher mussten meine Datenbanken nicht superschnell sein. Jetzt jedoch, sollen viele Daten gespeichert werden und später mit diesen gerechnet werden. Ich möchte Quotenverläufe bei betfair z.B. bei Pferderennen speichern. Alle 5 Minuten sollen von allen Pferden eines bestimmten Rennens die Quoten gespeichert werden. Zu JEDEM Zeitpunkt und JEDEM Pferd gehört eine "Quotentabelle", die z.B. so ausschaut: QUOTE-BACK-LAY-UMSATZ 2.20 €4 €1,417 2.22 €97 €602 2.24 €231 €1,060 2.26 €380 €1,703 2.28 €116 €2,959 2.30 €322 €9,130 2.32 €180 €8,697 2.34 €625 €6,015 2.36 €63 €4,938 2.38 €80 €4,389 (d.h. ich kann z.B. bei einer Quote von 2.26 auf das Pferd wetten und es werden Wetten dieser Art im Umfang von 116 EUR angeboten(backen) oder: jemand will zur Quote 2.30 wetten und ich kann als Buchmacher auftreten(layen).) Dabei ist die Anzahl der verschiedenen Quoten sowie die Quoten selbst natürlich variabel. Später sollen dann verschiedene Indikatoren berechnet werden, sodass meist Quoten/Volumen/Umsätze von einem bestimmten Pferd und einem bestimmten Zeitpunkt(oder mehreren aufeinanderfolgende) miteinander verechnet werden. Wie gestalte ich nun die Datenbankstruktur, sodass zu jedem Zeitpunkt und Pferd eine "Quotentabelle" abgespeichert wird und die Berechnungen danach nicht zu lange brauchen? Ich danke schon im vorraus, mousepad Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
.NETter Geschrieben 8. September 2010 Teilen Geschrieben 8. September 2010 Hallo, wie speicherst Du denn die Daten bisher? Welche Datenbank nutzt Du? Hast Du zu jedem Pferd eine eigene Tabelle? Wie werden diese befüllt und wie wieder ausgelesen? (SQL-Statements) (das mit den Pferden erinnert mich doch sehr stark an ein Praktikum in Essen ) Gruß, Thomas Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mousepad Geschrieben 8. September 2010 Autor Teilen Geschrieben 8. September 2010 Hallo, ich speichere die Daten bisher noch garnicht. Diese Daten können über einen Web Service von betfair abgefragt werden. Dabei erhält man alle "Quotentabellen" von allen Pferden eines Rennens als codierten String zurück. Ich möchte es bei diesem Projekt eben gleich von Anfang an "richtig" machen, sodass das Berechnen von Indikatoren(s. mein erster Post) schnell geht. Als Datenbank wollte ich eigentlich MySQL benutzen, weil ich damit schon Erfahrungen habe, diese mit C++ zu benutzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 8. September 2010 Teilen Geschrieben 8. September 2010 Zu JEDEM Zeitpunkt und JEDEM Pferd gehört eine "Quotentabelle", die z.B. so ausschaut Meinst du damit, dass du die Daten so erhältst, oder dass du dir in deiner DB wirklich für jeden Abfragezeitpunkt eine neue Tabelle erstellen willst? Falls letzteres zutrifft klingt das für mich ziemlich falsch für Datenbanklayouts. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
.NETter Geschrieben 8. September 2010 Teilen Geschrieben 8. September 2010 Hallo, wie sieht denn überhaupt die Struktur der gelieferten Daten aus? Ich kann mir den Aufbau der Daten aus dem Webservice noch nicht so ganz vorstellen. Für jedes Pferd eine Tabelle zu erstellen ist wie FinalFantasy schon gesagt hat natürlich völlig daneben. Daher müsste man eben wissen welche Daten ankommen und in welcher Struktur. Vielleicht mal einen Beispieldatensatz? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 8. September 2010 Teilen Geschrieben 8. September 2010 Vielleicht mal einen Beispieldatensatz? Steht doch im Ursprungspost! Ich kenne mich weder mit Wetten noch mit dem Quotenzeug aus, deshalb kann ich kein sinnvolles DB-Layout vorschlagen, aber ein Datenbanklayout, welches immerwieder neue Tabellen anlegt, ist prinzipiell schonmal falsch. Da mir aus dem ersten Post nicht ganz klar wurde, ob der Fragesteller sich damit nur auf das Format der eintreffenden Daten bezog, oder ob er darauf auch schon sein DB-Layout aufbauen wollte, habe ich nur mal darauf hingewiesen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mousepad Geschrieben 8. September 2010 Autor Teilen Geschrieben 8. September 2010 Hallo, ich will natürlich keinesfalls ständig neue Tabellen anlegen :eek. Deswegen frage ich ja hier. Ich bekomme z.B. alle fünf Minuten für jedes Pferd eine solche "Quotentabelle"(Länge varaibel, Quoten variabel) und muss jetzt diese Daten jetzt speichern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 8. September 2010 Teilen Geschrieben 8. September 2010 Na dann mal so ins Blaue geschätzt: In eine Tabelle nimmst du alle bekannten Pferde (redundanz, atomarität) und in einer weiteren Tabelle speicherst du dir die Quoten mit den Beträgen mit Foreign Key auf das Pferd und vermutlich aktuellem Timestamp. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
.NETter Geschrieben 8. September 2010 Teilen Geschrieben 8. September 2010 Steht doch im Ursprungspost! Das denke ich nicht. Denn hier steht weder etwas von einem Pferd (für jedes Pferd eine Tabelle) noch etwas von einem Rennen (für jedes Rennen und jedes Pferd eine Tabelle). Wo steht der Name (oder Numemr) des Pferdes oder des Rennens. Irgendwie muss ich diese Tabelle ja einem Pferd und einem Rennen zurodnen können. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
.NETter Geschrieben 8. September 2010 Teilen Geschrieben 8. September 2010 Vielleicht könnte es in etwas so aussehen Die Übertragungsnummer kann man zur Identifizierung des Laufs (Du bekommst ja alle 5 Minuten eine Tabelle) nutzen. Ich weiß nicht ob Du alle Quotentabellen eines Rennens für ein Pferd speichern willst oder immer nur die Letzte. So hast Du die Wahl alle zu speichern oder anhand der Übertragungsnummer "veraltete" Sätze gleich zu löschen und somit wieder Platz zu sparen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mousepad Geschrieben 8. September 2010 Autor Teilen Geschrieben 8. September 2010 (bearbeitet) Hallo, danke für die Beiträge bisher. Ich möchte natürlich keine alten Daten wieder löschen. Was haltet ihr von folgenden Entwurf? Tabelle 1: RENNEN mit den Spalten Re_ID als INT AUTO_INCREMENT PRIMARY KEY RENNEN PFERD Tabelle2: QUOTEN mit den Spalten QUOTEN_ID als INT AUTO_INCREMENT PRIMARY KEY RE_ID als foreignkey auf Re_ID ZEIT_ID als INT ZEIT als DATETIME QUOTE BACKVOLUMEN LAYVOLUMEN UMSATZ mit einem Index über (QUOTEN_ID,ZEIT_ID). Ich würde ZEIT_ID einführen um jeweils den nächsten Zeitpunkt zu erwischen, da es ja stest zu leichetn Verzögerungen kommt und so ZEIT des nächsten Datensatzes nicht genau feststeht. EDIT: Entschuldigung .NETter, ich habe deinen Beitrag übersehen und schau mir erst deinen Etwurf an. Bearbeitet 8. September 2010 von mousepad Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.