Die allgemeine Frage
Was sind die Unterschiede zwischen Algorithmen, die Datenstrukturen verwenden, und Algorithmen, die Datenbanken verwenden?
Ein Kontext
Dies ist eine Frage, die mich seit einiger Zeit nervt, und ich konnte keine überzeugende Antwort darauf finden.
Derzeit arbeite ich daran, mein Verständnis von Algorithmen zu verbessern, die natürlich stark mit Datenstrukturen verbunden sind. Dies sind grundlegende Strukturen wie Bag, Queue, Stack, Priority Queue und Heap.
Ich verwende auch täglich Datenbanken, um die Daten zu speichern, die vom Endbenutzer verarbeitet und übermittelt oder vom Programm verarbeitet wurden. Ich rufe die Daten ab und sende sie über eine DAL, die über eigene Datenstrukturen verfügt, die basierend auf den Tabellen in der Datenbank generiert werden.
Meine Fragen kommen, wenn ich die Möglichkeit habe, die Daten mithilfe der Datenbank zu sortieren, um sie in aufsteigender / absteigender Reihenfolge geordnet an mich zurückzusenden oder die Daten abzurufen und in meine Logik zu laden, diese Daten in einer Prioritätswarteschlange zu verarbeiten und den Heap zu sortieren alles davon. Oder eine andere Möglichkeit besteht darin, mithilfe der Datenbank nach Datensätzen zu suchen, anstatt eine Teilmenge der Datensätze zu laden und mithilfe einer binären Suche den Datensatz oder die Datensätze zu finden, an denen ich interessiert bin.
In meinen Gedanken würde ich versuchen, möglichst viele Vorgänge auf der Datenbankebene durchzuführen, bevor sie gesendet werden, da die Kommunikation teuer ist. Ich frage mich daher auch, wann Sie Algorithmen und Datenstrukturen verwenden, die streng in Ihrer eigenen Logik definiert sind, um Daten zu verarbeiten, anstatt die der Datenbank.
Also hier sind die Fragen ...
Fragen
- Was sind die Unterschiede zwischen Datenstrukturen und Datenbanken?
- Wann verwenden wir Algorithmen, die Datenstrukturen verwenden, die ausschließlich in Ihrer eigenen Logik und nicht in der der Datenbank definiert sind?
- @ Harvey post: Wann werden die Methoden in der Datenbank weniger effizient als Methoden in Ihrer eigenen Logik?
- @mirculixx post: Was macht eine Methode effizient?
- @ Harvey Post: Wie ist die Verarbeitung von Daten mit Datenstrukturen schneller als die Verarbeitung in der Datenbank?
Klarstellungen
- @Grant post: Die Datenbanken, mit denen ich normalerweise arbeite, sind relational, und diese Fragen ergeben sich aus der Arbeit mit ihnen. Ich denke jedoch, dass diese Fragen auf jedes Persistenz-Framework anwendbar sind (wenn ich Framework sage, meine ich das im allgemeinsten Sinne).
Ich weiß, dass Antworten ohne einen bestimmten Kontext schwierig sind. Denkanstöße, Ratschläge oder Diskussionspunkte sind hauptsächlich das, wonach ich suche und würden mich sehr freuen!