![]() |
Datenbank: absoulte Database • Version: 4,87 • Zugriff über: per table und query
mehrdimensionale Datenbank ? Firebird
Hallo,
eine Frage an die Datenbankprofis ich habe ein Problem was die Datenstruktur (ich nutze im moment absolute Database) meiner datenbank angeht meine TabellenStruktur (ich speichere hier realtime Börsendaten für spätere tests) ID Datetime open high low close Index auf ID und Datetime Problem: ich habe jetzt nach ca. 3Wochen bereits knapp 2mio datensätze (was natürlich zu erwarten war) aber ich musste leider feststellen das der index die datenbankgröße extrem in die höhe treibt und abfragen sind schon jetzt sehr zeitintensiv jetzt meine Frage gibt es eine Datenbank (vielleicht Firebird ?) in der ich in einer tabelle daten als array mehrdimensional speichern kann ? bsp - ID \--- Date \--------- time, open, high, low, close so könnte ich mir im grunde die indeces sparen es gibt ja in delphi "childdef" bloß habe ich hierzu nirgens ein bsp oder eine nähere beschreibung gefunden... und absdatabase scheint das nicht zu unterstützen eine andere möglichkeit wäre sicher für jede ID eine eigene tabelle anzulegen... aber das widerspricht ja aus meiner sicht dem sinn einer datenbank.. Danke Ralf |
Re: mehrdimensionale Datenbank ? Firebird
Hallo Ralf,
Zitat:
Zitat:
Kannst du View's verwenden? Wie sehen solche Abfragen aus? Und was verstehst du unter zeitintensiv ? (Sekunden, Minuten und Stunden) Zitat:
Zitat:
table_1 ID1 // primary Key Date // Secondary Key table_2 ID2 // primary Key ID1 // foreign Key time // Secondary Key open high low close Zitat:
Zitat:
|
Re: mehrdimensionale Datenbank ? Firebird
Hallo,
erst mal danke für die Antwort... da ich ja noch nicht so viel in delphi und vor allem mit DBs gemacht habe, habe ich erst mal die absolute database genommen da ich schnell mit ihr zurechtkam... und bei Firebird für Delphi 200 leider noch nicht die Componenten zur Verfügung standen die ich gerne hätte... ![]() Getestet hatte ich nur mit kleineren Datenmengen, überrascht hat mich, dass die Datenbank durch den Index gelich um 50% größer wurde... Mit Zeitintensiv bei der Abfrage habe ich einen Datenserver eines Chartprogrammes genommen - und hier hat die abfrage der gleichen Datenmenge etwa 7 sec und bei ABSdatabase ungefähr 22 sec gedauert.. Views/OLAP gibt es scheinbar nicht - ich muß mich jetzt doch mal intensiv mit Firebird beschäfigen naja nächste woche soll ja laut support ein trial von Fibplus für Delphi 2005 verfügbar sein. Woran kann man den eigentlich erkennen ob eine Datenbank auf schnelle Auswertungen ausgelegt ist - sollten das nicht eigentlich alle DBs sein... ? cu Ralf |
Re: mehrdimensionale Datenbank ? Firebird
Bei so was helfen wohl nur Tests. Indices sind beim speichern auch eher eine Bremse. Zusätzlich zu dem Datensatz an sich muß auch noch der Index angelegt und verwaltet werden. Backup/Restore dauert auch länger usw. Ich würde den Index eher mal draußen lassen und wie gesagt testen. Firebird legt schon selbst so was an, wenn es notwendig ist. Geht es um spezielle Such-Mechanismen oder wozu ein extra Index ?
|
Re: mehrdimensionale Datenbank ? Firebird
Zitat:
Zitat:
Zitat:
b) manchmal ist es mehr manchmal weniger - wie eben die Strukturen (Suchbäume) abgelegt werden Zitat:
gibt es einen SELECT ? Zitat:
und teste dann die Antwortzeiten Zitat:
Was bedeutet "eine Datenbank ist auf schnelle Auswertungen ausgelegt" ? - da spielen viele Faktoren eine Rolle wie z.B. Tabellenstruktur, Index, View's oder Aufbau von SELECT's, Reihenfolge der Felder in der Where-Klausel, etc. Zitat:
auch beim Interbase ist ein Index bei dieser Datenmenge zu empfehlen Zitat:
Zitat:
|
Re: mehrdimensionale Datenbank ? Firebird
Ich wollte darauf hinaus, daß zumindest der Primary Key automatisch angelegt wird. Und der Witz ist eben der : meine Test-DBs haben ca. 10-100 MB ohne Blobs usw. So ganz klein sind sie also auch nicht ! Von Hand habe ich keinen einzigen Index neu anlegen müssen und die Geschwindigkeit ist trotzdem brauchbar.
Allerdings brauche ich schon uniques und die müssen bekanntermaßen zusammengesetzt werden. Aber auch das wird in FB/IB automatisch geregelt. Was ein Index ist, das braucht mir keiner zu erklären, das ist schon klar. Deshalb meine Empfehlung : nicht beim Feinschliff anfangen, wenn das Grundgerüst noch nicht steht. 8) |
Re: mehrdimensionale Datenbank ? Firebird
Hallo Ralf,
Zitat:
Du schreibst, dass du Daten sammelst für spätere Tests. Während der Sammelphase würde ich einen informationsfreien primary key verwenden (lfdnr) und die Asset-Nummer und den Börsentag aus der Indizierung nehmen. Der erhöhte Speicherbedarf für die Indexdaten sollte eigentlich kein Problem sein, aber da deine Daten dummerweise schon geordnet ankommen, quält sich die Datenbank beim Pflegen der Inserts sehr - und das bei einer Zuwachsrate von 100.000 pro Tag. Die Zugriffspfade kannst du ja dann in der Auswertungsphase definieren. Und wenn dann ADS nicht mitkommt, kannst du Daten immer noch mit wenig Aufwand nach Firebird oder einem anderen SQL Server schaufeln. Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz