Frage

Ich war kürzlich auf der OEIS (Online-Enzyklopädie der Ganzzahlsequenzen) kürzlich, versucht, eine bestimmte Sequenz aufzusuchen, die ich hatte.

Nun ist diese Datenbank ziemlich groß.Die Website gibt an, dass, wenn die Ausgabe von 2006 (! 5 Jahre) gedruckt wurde, 750 Textmengen einnehmen würde.

Ich bin sicher, dass dies derselbe ist, dass Google auch umgehen muss.Sie haben jedoch auch ein verteiltes System, in dem sie den Lastausgleich nutzen.

Vernachlässigung der Lastausgleichung jedoch, wie viel Zeit dauert es, um eine Abfrage im Vergleich zur Datenbankgröße zu erledigen?

oder mit anderen Worten, wie ist die Zeitkomplexität einer Abfrage in Bezug auf dB-Größe?

edit: Um die Dinge spezifischer zu gestalten, gehen Sie an, dass die Eingabeabfrage einfach eine Zeichenfolge ansieht, z. B.: generasacodicetagpre.

War es hilfreich?

Lösung

Es hängt stark von der Abfrage, Struktur der Datenbank, der Konflikte usw. ab. Im Allgemeinen finden die meisten Datenbanken jedoch einen Weg, einen Index zu verwenden, und dieser Index wird entweder eine Art Baumstruktur sein (siehe http://en.wikipedia.org/wiki/b-tree für eine Option) In diesem Fall ist Zugriffszeit proportional zum Protokoll (n) oder sonst ein Hash, in dem die Zugriffszeit ist proportional zu o (1) im Durchschnitt (siehe http://en.wikipedia.org/wiki/hash_function #Hash_tables für eine Erklärung, wie sie arbeiten).

ist also die Antwort typischerweise o (1) oder o (log (n)), abhängig davon, welche Art von Datenstruktur verwendet wird.

Dies kann dazu führen, dass Sie sich fragen, warum wir keine Hash-Funktionen verwenden. Es gibt mehrere Gründe. Hash-Funktionen machen es schwer, Wertebereiche abzurufen. Wenn die Hash-Funktion Daten nicht gut verteilen kann, ist es möglich, Zugriffszeiten zu o (n) zu werden. Hashes braucht gelegentlich, was möglicherweise sehr teuer ist. Und log (n) wächst langsam genug, dass Sie es als vernünftigerweise nahe an allen praktischen Datensätzen behandeln können. (Von 1000 bis 1 Petabyte variiert es um einen Faktor von 5) und häufig zeigt sich die aktiv angeforderten Daten, die sich in der aktiv angeforderten Daten befinden, um die Bäume einen besseren Job in RAM zu halten. Infolgedessen sind Bäume in der Praxis etwas häufiger gesehen. (Obwohl Hashes keinesfalls selten ist.)

Andere Tipps

das hängt von einer Reihe von Faktoren ab, einschließlich der Implementierung des Datenbankmotors, der Indexierungsstrategie, der Besonderheiten der Abfrage, der verfügbaren Hardware, Datenbankkonfiguration usw.

Es gibt keine Möglichkeit, eine solche allgemeine Frage zu beantworten.

Eine ordnungsgemäß entworfene und implementierte Datenbank mit Terabyte von Daten kann tatsächlich eine stark gestaltete kleine Datenbank übertreffen (Partauber eins ohne Indexierung und eine, die nicht sargable Abfragen und Dinge wie korrelierte Unterabfragen auftreten.Deshalb muss jeder, der erwartet, große Datenmengen zu haben, um einen Experten für das Datenbankendesign für große Datenbanken für große Datenbanken einzustellen, um das intielelle Design nicht später zu erledigen, wenn die Datenbank groß ist.Möglicherweise müssen Sie auch in die Art der Geräte investieren, die Sie benötigen, um die Größe zu handhaben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top