datenbank in vector um zu suchen



  • Hallo, ich habe da mal eine frage. Wenn ich zbsp. eine kundendatenbank habe und diese nach einem kunden durchsuche möchte. ist es dann nicht vom vorteil wenn ich diese datenbank vorher in einen vector einlese und dann diesen vector durchsuche. das würde doch unheimlich schneller laufen als sich durch die datenbank zu kämpfen. Was meint ihr dazu?



  • so ein schwachsinn.

    alle (zu mindest die meisten) db haben spezielle suchalgorithmen, die auf die jeweilige db optimiert und zugeschnitten sind.

    ausserdem bedenke die zeit, um die ganze datenbank in ein vektor einzulesen.
    und stellt dir vor, du liest die kunden db von einer z.b. Telefonbuch-CD.

    ich würde gerne sehen, wie du einpaar gigabyte an daten in speicher einspeist und dann noch schnell suchst.



  • hi,

    dann lieber einen thread starten und die ersten 20 reinladen z.b.. entsprechend dann nach laden.

    das wäre wohl vielleicht noch die sinnvollste lösung...

    nur ein gedanke.



  • keiner schrieb:

    hi,

    dann lieber einen thread starten und die ersten 20 reinladen z.b.. entsprechend dann nach laden.

    das wäre wohl vielleicht noch die sinnvollste lösung...

    nur ein gedanke.

    und wie willst du dann suchen??



  • dann lieber einen thread starten und die ersten 20 reinladen z.b.. entsprechend dann nach laden

    naja, Xqgene hat schon recht. Damit der letzte Datensatz bei der Suche auch berücksichtigt werden kann, musst du vor der Suche ALLE Datensätze geladen haben.
    Bei großen Datenmengen wird dass, wie Xqgene schon sagt sehr unhandlich. Dann fängt man an zu tricksen, zum BEispiel versucht mann dann die Daten in Dateien auszulagern und so Arbeitsspeicher zu sparen.... Genau diese Gedanken waren die Grundsteine für die Entwickler, welche die Datenbanken und/oder SQL erfunden haben.

    Alles Keks. Jede parametrisierte SQL-Anweisung ist schneller, handlicher, sicherer.

    Anders sieht es aus, wenn man sich im Anwendungsbereich von der Dantenabnk abkapseln möchte. Siehe 3 Tier Architektur. Ein vernünftiges Warehousing-Konzept verbietet dann den Zugriff von Anwendungen auf die Datenbank. Das würde man dann über ein wohldimensionierten Applicationserver machen. Eventuell würde man sich die Daten in ein Klassenkonstrukt laden und angeforderte Teile zum Client schieben. Es werden mehrere Clients von einem Applicationserver gespeist, der die Geschäftslogic gleich mit implementiert und verwaltet. Aber das ist eh ein anderes Konzept, welches mehr durch Probleme mit Änderungen auf Datenbasis zu tun haben. Diese Probleme entstehen, wenn die Datenbasis stehts weiterentwickelt wird, oder die Datenbasis auf Datenbanken anderer Quellen zu finden ist. Zum Beispiel externe Datenenbanken. Dann braucht man den Buffer (Applicationserver) um die darauf aufsetzende Anwendungsstruktur stabil zu halten. Hier sind die Gründe also nicht unbedingt Schelligkeit sondern Sicherheit.


Anmelden zum Antworten