AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Intelligentes Datenbankdesign
Thema durchsuchen
Ansicht
Themen-Optionen

Intelligentes Datenbankdesign

Ein Thema von Prototypjack · begonnen am 28. Nov 2006 · letzter Beitrag vom 28. Nov 2006
Antwort Antwort
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#1

Intelligentes Datenbankdesign

  Alt 28. Nov 2006, 19:37
Datenbank: SQLite • Version: 3.x • Zugriff über: LibSQL
Hallo,
Ich arbeite (Auch wenn z.Z. die Zeit knapp ist) an meinem Player mit dem ich Versuche die Weltherrschaft an mich zu reißen.

Das Ding funktioniert und arbeitet ganz gut, jedoch wird bei einer kompletten Abfrage der Daten die Query extrem langsam.
Ich muss jedoch irgendwie die Daten in mein VirtualTreeView bekommen, da ich sonst keinen vernünftigen Player schreiben könnte.

Was mich motiviert ist, dass ich weiß das es möglich ist, Konkurrenten wie Songbird, WinAMP und MusikCube zeigen es. Dort vergeht kein Augenblick bis die Daten da sind, wohingegen bei mir die Abfrage und der Aufbau bereits fast eine Sekunde (bei gleichem Datenvolumen) braucht.

Jetzt ist meine Frage:
Wie baue ich meine Datenbank am performantesten auf? Momentan habe ich ein ähnliches Grundkonstrukt wie es auch MusikCube benutzt.
Wo setze ich Indizes? Wann sollte ich die Daten wie laden? Alle auf einmal? Bei Bedarf(Wann ja: Wann genau? Meine Test's ließen sich mein Programm wie Java anfühlen )?

Kann man beim Treiber/Wrapper noch Sachen herausholen? Ist LibSQL eine gute Wahl?

Ich hoffe ihr könnte damit was anfangen und mir helfen,
gruß,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Intelligentes Datenbankdesign

  Alt 28. Nov 2006, 20:05
Wie ist die Struktur der Datenbank? Wie sehen die Abfragen aus?
Markus Kinzler
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Intelligentes Datenbankdesign

  Alt 28. Nov 2006, 20:18
Achja, Entschuldigung.
Hier mal der Aufruf beim initialen Füllen aller Boxen:
Delphi-Quellcode:
      lResults.Query('SELECT "songid", "filename", "artist", "title", "a' +
        'lbum", "tracknum", "year", "genre", "rating", "playtime", "filesize"' +
        ', "lyrics", "format", "vbr", "bitrate", "lastplayed", "timesplayed" ' +
        'FROM "music"');
Und hier die Grundstruktur (SQLite):
CREATE TABLE "music" ("songid" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "format" varchar(10), "vbr" number(1), "filename" varchar(255), "artist" varchar(255), "title" varchar(255), "album" varchar(255), "tracknum" varchar(10), "year" number(4), "genre" varchar(255), "rating" number(1), "bitrate" integer, "lastplayed" timestamp, "notes" varchar(255), "timesplayed" integer, "timeadded" timestamp, "filesize" integer, "playtime" integer, "lyrics" memo ) Gruß,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Intelligentes Datenbankdesign

  Alt 28. Nov 2006, 20:20
Ich würde die Anzahl der zurückgegebenen Datensätze enschränken, ud beim Scrollen Nachladen.
Markus Kinzler
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Intelligentes Datenbankdesign

  Alt 28. Nov 2006, 20:32
Moin!
Danke erstmal für dein Antwort!
Die Idee hatte ich auch schon. Bei meinem test lud ich nur die essenzielle SongID und alles anderes dann dynamisch.

Leider wurde das Programm derart langsam, das ein solches Unterfangen untragbar wäre, zumindest unter diesen Gesichtspunkten.

Gibt's weitere Ideen?

Gruß,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Intelligentes Datenbankdesign

  Alt 28. Nov 2006, 20:35
Ich mente nicht die Anzahl der Felder, sondern die Anzahl der Datensätze.
Es gibt von VTV auch Beispiele für Datenbankanbindung, vielleicht sind diese ja hilfreich.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: Intelligentes Datenbankdesign

  Alt 28. Nov 2006, 21:07
vllt ladest du zuerst nur die titel bzw. den dateiname und dann füllst du die liste damit
und wenn du des angeezigt hast kannst du mit einem thread die einzelnen daten nach

außerdem bist du sicher das die query am längsten braucht? du könnstest überrall die zeit messen für verschiedne programmteile und alles in eine datei speichern und dann schaust du welcher teil am längesten braucht nun kannst du den programmteil beschleunigen
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz