it-swarm.com.de

Reduzieren SSDs den Nutzen von Datenbanken?

Ich habe heute erst von Robert Martin gehört, und es scheint, als wäre er eine bemerkenswerte Figur in der Software-Welt. Ich meine also nicht, dass mein Titel so aussieht, als wäre es ein Klick-Köder oder ich stecke ihm Worte in den Mund, aber das ist einfach wie ich das, was ich von ihm hörte, mit meiner begrenzten Erfahrung und meinem begrenzten Verständnis interpretierte.

Ich habe mir heute ein Video (über Softwarearchitektur) bei einem Vortrag von Robert C. Martin angesehen, und in der zweiten Hälfte des Videos stand das Thema Datenbanken im Mittelpunkt.

Nach meinem Verständnis dessen, was er sagte, schien es, als würde er sagen, dass SSDs den Nutzen von Datenbanken ( erheblich verringern werden ).

Um zu erklären, wie ich zu dieser Interpretation gekommen bin:

Er diskutierte, wie das Abrufen von Daten mit Festplatten/sich drehenden Festplatten langsam ist. Heutzutage verwenden wir jedoch SSDs, bemerkte er. Er beginnt mit "RAM kommt" und fährt dann fort, indem er RAM Festplatten) erwähnt, sagt dann aber, dass er es nicht nennen kann RAM Festplatte, also greift auf zurück Ich sage nur RAM. Mit RAM brauchen wir also keine Indizes, da jedes Byte die gleiche Zeit benötigt, um abgerufen zu werden. ( Dieser Absatz wird von mir umschrieben )

Es macht also keinen Sinn, wenn er RAM (wie im Computerspeicher)) als Ersatz für DBs vorschlägt (wie ich seine Aussage interpretiert habe), weil das so ist, als ob alle Datensätze in Speicher, der während der Lebensdauer einer Anwendung verarbeitet wurde (es sei denn, Sie ziehen bei Bedarf aus einer Festplattendatei)

Also habe ich auf RAM zurückgegriffen, er meint SSD. In diesem Fall sagt er, dass SSDs den Nutzen von Datenbanken verringern. Er sagt sogar: "Wenn ich Oracle wäre, hätte ich Angst. Die Grundlage meiner Existenz ist die Verdunstung."

Nach meinem geringen Verständnis von SSDs sind SSDs im Gegensatz zu HDDs, bei denen es sich um O(n) Suchzeit handelt (ich würde denken), in der Nähe von O(1) oder fast zufällig. Sein Vorschlag war also für mich interessant, weil ich noch nie so darüber nachgedacht habe. Als ich vor einigen Jahren zum ersten Mal in Datenbanken eingeführt wurde, als ein Professor die Vorteile gegenüber einem regulären Dateisystem beschrieb, kam ich zu dem Schluss, dass die Hauptaufgabe einer Datenbank im Wesentlichen ein sehr indiziertes Dateisystem ist (sowie Optimierungen, Caching, gleichzeitiger Zugriff, etc) Wenn also Indizes in SSD nicht benötigt werden, macht diese Art von Datenbanken weniger nützlich.

Ungeachtet dessen fällt es mir schwer zu glauben, dass sie weniger nützlich sind, da jeder immer noch DBs als primären Punkt seiner Anwendung anstelle des reinen Dateisystems verwendet und das Gefühl hat, dass er zu stark vereinfacht wird die Rolle von Datenbanken.

Hinweis : Ich habe bis zum Ende zugesehen, um sicherzustellen, dass er nichts anderes gesagt hat.

Als Referenz: 42:22 ist, wenn das gesamte Datenbankthema auftaucht, 43:52 ist, wenn er mit "Warum haben wir überhaupt Datenbanken?" Beginnt.

Diese Antwort besagt, dass SSDs DBs erheblich beschleunigen. Diese Frage fragt, wie die Optimierung geändert wird.

Um TL; DR meine Frage zu beantworten, verringert das Aufkommen einer weit verbreiteten SSD-Nutzung auf dem Servermarkt (unabhängig davon, ob sie ansteht oder bereits stattgefunden hat) den Nutzen von Datenbanken ?

Es schien, als wollte der Moderator vermitteln, dass man mit SSDs die Daten auf der Festplatte speichern kann und sich keine Gedanken darüber machen muss, wie langsam das Abrufen sein würde, da bei älteren Festplatten wie bei SSDs die Suchzeiten nahe sind O(1) (glaube ich). Wenn dies zutrifft, würde dies hypothetisch einen der Vorteile verlieren, die es hatte: Indizierung, da der Vorteil, Indizes für schnellere Suchzeiten zu haben, weg ist.

28
Abdul

Es gibt einige Dinge in einer Datenbank, die optimiert werden sollten, wenn Sie SSDs verwenden. Wenn Sie beispielsweise für PostgreSQL sprechen, können Sie effective_io_concurrency Und random_page_cost Anpassen. Schnelleres Lesen und schnellerer Direktzugriff sind jedoch nicht das, was eine Datenbank tut. Es sorgt dafür

Er ist einfach falsch in Bezug auf Indizes. Wenn die gesamte Tabelle in RAM eingelesen werden kann, ist ein Index weiterhin nützlich. Glaubst du mir nicht? Lass uns ein Gedankenexperiment machen,

  • Stellen Sie sich vor, Sie haben eine Tabelle mit einer indizierten Spalte.

    CREATE TABLE foobar ( id text PRIMARY KEY );
    
  • Stellen Sie sich vor, diese Tabelle enthält 500 Millionen Zeilen.

  • Stellen Sie sich vor, alle 500 Millionen Zeilen werden zu einer Datei zusammengefasst.

Was ist schneller,

  1. grep 'keyword' file
  2. SELECT * FROM foobar WHERE id = 'keyword'

Es geht nicht nur darum, wo sich Daten befinden, sondern auch darum, wie Sie sie bestellen und welche Vorgänge Sie ausführen können. PostgreSQL unterstützt B-Tree-, Hash-, Gist-, SP-Gist-, GIN- und BRIN-Indizes (und Bloom über eine Erweiterung). Es wäre dumm zu denken, dass all diese Mathematik und Funktionen wegfallen, weil Sie einen schnelleren Direktzugriff haben.

59
Evan Carroll

Basierend auf Ihrem Beitrag scheint die klare Botschaft zu sein, dass Optimierungen der RDBMS-Suchzeit durch Hardware ersetzt werden, wodurch die Zeit IO Zeit vernachlässigbar) wird.

Das ist absolut wahr. SSD auf Datenbankservern kombiniert mit hoher (tatsächlicher) RAM macht IO Wartezeit erheblich kürzer. RDBMS-Indizierung und Caching sind jedoch immer noch von Wert, da selbst Systeme mit dieser riesig IO Segen kann und wird IO Engpässe durch Abfragen mit schlechter Leistung, die durch schlechte Indizierung verursacht werden. Dies tritt normalerweise nur bei Anwendungen mit hoher Arbeitslast oder schlecht geschriebenen Anwendungen auf.

Der Schlüsselwert für RDBMS-Systeme im Allgemeinen ist Datenkonsistenz, Datenverfügbarkeit und Datenaggregation. Die Verwendung einer Excel-Tabelle, einer CSV-Datei oder einer anderen Methode zum Verwalten einer "Datenbank" bietet keine Garantie.

SSD schützt Sie nicht davor, dass Ihr Primärserver aus irgendeinem Grund nicht verfügbar ist (Netzwerk, Betriebssystembeschädigung, Stromausfall). SSD schützt Sie nicht vor einer schlechten Datenänderung. SSD macht es nicht schneller, Analysen auszuführen, als sie nur zu haben.

12
Josh Bonello

Onkel Bob sprach wahrscheinlich über In-Memory-Datenbanken wie Redis oder Gemfire . In diesen Datenbanken ist wirklich alles in der Datenbank im RAM enthalten. Die Datenbank könnte leer beginnen und mit kurzlebigen Daten (die als Cache verwendet werden) abgelegt werden, oder sie lädt zunächst alles von der Festplatte ein und überprüft regelmäßig Änderungen an der Festplatte.

Dies wird immer beliebter, weil RAM wird immer billiger und es möglich wird, ein Terabyte an Daten in einer In-Memory-Cluster-Datenbank zu speichern. Es gibt viele Anwendungsfälle, in denen die Die Geschwindigkeit des sofortigen Zugriffs auf Dinge macht es wertvoll, RAM) anstelle einer schnellen Festplatte wie SSD einzugeben. Sie können SQL für einige davon sogar weiterhin verwenden, wenn dies sinnvoll ist.

Warum sollte dies Oracle beunruhigen? Die Daten wachsen und es ist unwahrscheinlich, dass RDBMS verschwinden. Im Laufe der Jahre wurde jedoch viel Zeit für die Entwicklung von Oracle aufgewendet, um das Abrufen von Daten auf sich drehenden Festplatten sehr schnell zu gestalten. Oracle muss sich an eine völlig andere Speicherebene anpassen. Sie sind mit Oracle Database In Memory , aber sie sind einer anderen Konkurrenz ausgesetzt als in der Vergangenheit. Überlegen Sie, wie viel Zeit darauf verwendet wurde, sicherzustellen, dass der Abfrageoptimierer die richtigen Strategien basierend auf dem Layout der Dinge auf der Festplatte auswählt.

8
Alan Shutko

Community Wiki Post sammelt Antworten, die ursprünglich als Fragenkommentare hinterlassen wurden


Ich würde genau das Gegenteil sagen. Da die Lese-/Schreibgeschwindigkeiten so hoch sind, können Sie jetzt eine GPU-beschleunigte Datenbank (z. B. BlazingDB oder Alenka ) verwenden, um Zahlen noch schneller zu verarbeiten. Jetzt können noch komplexere Abfragen schneller ausgeführt werden. Jetzt können Abfragen, die nicht einmal in Betracht gezogen werden, mit einer angemessenen Geschwindigkeit ausgeführt werden. Je komplexer und je mehr Daten, desto besser geht es Ihnen - Cybernard

Während Bob Martin schon lange da ist und seine Meinungen im Allgemeinen hörenswert sind (wenn er nicht zustimmt :-), denke ich, taucht er in diesem Fall in die Menge "Der Tod relationaler Datenbanken liegt bei uns" ein (von denen) Ich bin assoziiertes Mitglied :-). Für einige Dinge unter begrenzten Umständen kann ein etwas überzeugendes Argument angeführt werden, dass nicht relationale Datenbanktechnologien einen Vorteil bieten können. Trotzdem bietet IMO, das relationale Modell, das auf verschiedene Weise fehlerhaft ist, immer noch das beste heute verfügbare Allzweck-Datenbankmodell. YMMV. - Bob Jarvis

Der Hauptgrund, warum wir Datenbanken verwenden, ist nicht, dass Festplatten langsam sind (ursprünglich wurde dies als Grund für die Verwendung von Datenbanken genannt nicht), sondern weil Daten kompliziert sind. Der Hauptzweck einer Datenbank besteht darin, mehreren Apps/Benutzern zu ermöglichen, zu finden die richtigen Daten zu finden und diese sogar gleichzeitig kontrolliert zu ändern. Dies schnell zu tun ist nur ein sekundäres Ziel von Datenbanken. - RBarryYoung

RDBMS wird nicht so schnell verschwinden. Sie sind die beste Wahl für einige Arten von Anwendungen, und NoSQL (Mongo usw.) ist die beste Wahl für andere. Pferde für Kurse. - sh1rts

Datenbank hilft beim Organisieren von Daten. Es war sowieso nicht wirklich für den schnellen Zugriff auf Daten ausgelegt. - JI Xiang

8
Paul White 9