PHP Master | MongoDB -Indexierung, Teil 1
Key Takeaways
- Indexierung in MongoDB kann die Leistung und den Durchsatz erheblich verbessern, indem die Anzahl der vollständigen Dokumente reduziert werden, die gelesen werden müssen, wodurch die Anwendungsleistung verbessert wird.
- mongoDB unterstützt verschiedene Arten von Indexen, einschließlich Standard -_ID -Index, Sekundärindex, Verbindungsindex, Multikey -Index und Multikey -Verbindungsindex. Jeder Typ dient einem bestimmten Zweck und wird für verschiedene Arten von Abfragen verwendet.
- mehr als ein Index kann in einer Sammlung definiert werden, aber eine Abfrage kann nur einen Index während ihrer Ausführung verwenden. Der beste Index wird zur Laufzeit von MongoDBs Query-optimizer ausgewählt.
- Während die Indexierung die Lesevorgänge dramatisch verbessern kann, verursacht es auch seine eigenen Kosten. Die Indexierungsvorgänge belegen Platz und verursachen zusätzlichen Overhead bei jedem Einsatz, Aktualisierung und Löschen von Betrieb auf der Sammlung. Daher profitieren die indizierenden Vorteile von Leseblühen mehr als schreibschreibige Sammlungen.
- Standard _id Index
- Sekundärindex
- Verbindungsindex
- Multikey Index
- Multikey Compound Index
<span>{ </span> <span>"_id": <span>ObjectId</span>("5146bb52d852470060001f4"), </span> <span>"comments": { </span> <span>"0": "This is the first comment", </span> <span>"1": "This is the second comment" </span> <span>}, </span> <span>"post_likes": 40, </span> <span>"post_tags": { </span> <span>"0": "MongoDB", </span> <span>"1": "Tutorial", </span> <span>"2": "Indexing" </span> <span>}, </span> <span>"post_text": "Hello Readers!! This is my post text", </span> <span>"post_type": "private", </span> <span>"user_name": "Mark Anthony" </span><span>}</span>
Standard _id Index
Standardmäßig erstellt MongoDB für jede Sammlung einen Standardindex für das Feld _id. Jedes Dokument verfügt über ein eindeutiges Feld als Primärschlüssel, ein 12-Byte-ObjektID. Wenn keine anderen Indizes verfügbar sind, wird dies standardmäßig für alle Arten von Abfragen verwendet. Öffnen Sie die MongoDB -Shell, um die Indizes für eine Sammlung anzuzeigen, und machen Sie Folgendes:
Sekundärindex
In Fällen, in denen wir in anderen Feldern als _ID -Feld die Indizierung verwenden möchten, müssen wir benutzerdefinierte Indizes definieren. Angenommen, wir möchten nach Posts basierend auf dem Feld user_name suchen. In diesem Fall definieren wir einen benutzerdefinierten Index im Feld user_name der Sammlung. Solche benutzerdefinierten Indizes als der Standardindex werden als sekundäre Indizes bezeichnet. Um den Effekt der Indexierung auf die Datenbank zu demonstrieren, analysieren wir kurz die Abfrageleistung, ohne zuerst zu indizieren. Dafür werden wir eine Abfrage ausführen, um alle Beiträge mit einem user_name mit "Jim Alexandar" zu finden.<span>{ </span> <span>"_id": <span>ObjectId</span>("5146bb52d852470060001f4"), </span> <span>"comments": { </span> <span>"0": "This is the first comment", </span> <span>"1": "This is the second comment" </span> <span>}, </span> <span>"post_likes": 40, </span> <span>"post_tags": { </span> <span>"0": "MongoDB", </span> <span>"1": "Tutorial", </span> <span>"2": "Indexing" </span> <span>}, </span> <span>"post_text": "Hello Readers!! This is my post text", </span> <span>"post_type": "private", </span> <span>"user_name": "Mark Anthony" </span><span>}</span>
- Cursor - Zeigt den in der Abfrage verwendeten Index an. BasicCursor zeigt an, dass der Standardindex verwendet wurde und MongoDB die gesamte Sammlung durchsuchen musste. Wenn wir die Indexierung anwenden, wird bTreecuror anstelle von BasicCursor . verwendet
- n - Gibt die Anzahl der Dokumente an, die die Abfrage zurückgegeben hat (in diesem Fall ein Dokument).
- nscannedObjects - Gibt die Anzahl der von der Abfrage durchsuchten Dokumente an (in diesem Fall wurden alle 500 Dokumente der Sammlung durchsucht). Dies kann ein Betrieb mit großem Overhead sein, wenn die Anzahl der in der Sammlung sehr großer Dokumente sehr groß ist.
- nScanned - Zeigt die Anzahl der während des Datenbankvorgangs gescannten Dokumente an.
Verbindungsindex
Es wird Fälle geben, in denen eine Abfrage mehr als ein Feld verwendet. In solchen Fällen können wir zusammengesetzte Indizes verwenden. Betrachten Sie die folgende Abfrage, die sowohl die post_type- als auch post_likes -Felder verwendet:<span>{ </span> <span>"_id": <span>ObjectId</span>("5146bb52d852470060001f4"), </span> <span>"comments": { </span> <span>"0": "This is the first comment", </span> <span>"1": "This is the second comment" </span> <span>}, </span> <span>"post_likes": 40, </span> <span>"post_tags": { </span> <span>"0": "MongoDB", </span> <span>"1": "Tutorial", </span> <span>"2": "Indexing" </span> <span>}, </span> <span>"post_text": "Hello Readers!! This is my post text", </span> <span>"post_type": "private", </span> <span>"user_name": "Mark Anthony" </span><span>}</span>
- field1
- field1, field2
- field1, field2, field3
<span><span><?php </span></span><span><span>// query to find posts with user_name "Jim Alexandar" </span></span><span><span>$cursor = $collection->find( </span></span><span> <span>array("user_name" => "Jim Alexandar") </span></span><span><span>); </span></span><span><span>// use explain() to get explanation of query indexes </span></span><span><span>var_dump($cursor->explain());</span></span>
Multikey Index
Wenn die Indexierung in einem Array -Feld durchgeführt wird, wird es als Multikey -Index bezeichnet. Betrachten Sie unser Post -Dokument erneut; Wir können einen Multikey -Index auf post_tags anwenden. Der Multikey -Index würde jedes Element des Arrays indexieren, sodass in diesem Fall separate Indizes für die post_tags -Werte erstellt werden: mongoDB , Tutorial , Indexierung und bald.
Multikey Compound Index
Wir können einen Multikey -Verbindungsindex erstellen, aber mit der Einschränkung, dass höchstens ein Feld im Index ein Array sein kann. Wenn wir also Feld1 als Zeichenfolge und [Field2, Feld3] als Array haben, können wir den Index {field2, field3} nicht definieren, da beide Felder Arrays sind. Im folgenden Beispiel erstellen wir einen Index auf den Feldern post_tags und user_name:
Indexierungsbeschränkungen und Überlegungen
Es ist wichtig zu wissen, dass die Indexierung nicht in Abfragen verwendet werden kann, bei denen reguläre Ausdrücke, Negationsoperatoren (d. H. $ ne, $ nicht usw.), arithmetische Operatoren (d. H. $ mod usw.), JavaScript -Ausdrücke in der $ where verwendet werden Klausel und in einigen anderen Fällen. Die Indexierungsvorgänge haben auch ihre eigenen Kosten. Jeder Index nimmt Platz ein und führt zu einem zusätzlichen Overhead bei jedem Einsatz, Aktualisierung und Löschen von Operationen in der Sammlung. Sie müssen das Les: Schreibverhältnis für jede Sammlung berücksichtigen. Die Indexierung ist vorteilhaft für les-hungrige Sammlungen, ist jedoch möglicherweise nicht für Schreibkollektionen. MongoDB hält Indizes im RAM. Stellen Sie sicher, dass die Gesamtindexgröße die RAM -Grenze nicht überschreitet. Wenn dies der Fall ist, werden einige Indizes aus dem RAM entfernt und daher verlangsamen Abfragen. Außerdem kann eine Sammlung maximal 64 Indizes haben.Zusammenfassung
Das ist alles für diesen Teil. Zusammenfassend sind die Indizes für eine Anwendung von großem Nutzen, wenn ein ordnungsgemäßer Indexierungsansatz gewählt wird. Im nächsten Teil werden wir die Verwendung von Indizes für eingebettete Dokumente, Unterdokumente und Bestellungen untersuchen. Bleiben Sie dran! Bild über Fotolienhäufig gestellte Fragen zur MongoDB -Indexierung
Was ist die Bedeutung der MongoDB -Indexierung in der Datenbankverwaltung? Es verbessert die Leistung von Datenbankoperationen erheblich, indem es einen effizienteren Weg zu den Daten bietet. Ohne Indizes muss MongoDB einen Sammlungsscan durchführen, d. H. SCORKEL in einer Sammlung scannen, um die Dokumente auszuwählen, die der Anweisung für Abfragen übereinstimmen. Mit Indizes kann MongoDB seine Suche auf die relevanten Teile der Daten einschränken und so die Datenmenge verringern, die sie scannen müssen. Dies führt zu schnelleren Abfragemaßzeiten und einer geringeren CPU -Verwendung, was in großen Datenbanken besonders vorteilhaft ist.
Wie funktioniert die MongoDB -Indexierung? Diese Datenstruktur umfasst den Wert eines bestimmten Feldes oder einer Reihe von Feldern, die vom Wert des Feldes geordnet sind, wie im Index angegeben. Wenn eine Abfrage ausgeführt wird, verwendet MongoDB diese Indizes, um die Anzahl der Dokumente zu begrenzen, die sie überprüfen muss. Die Indizes sind besonders vorteilhaft, wenn die Gesamtgröße der Dokumente den verfügbaren RAM überschreitet. Die Leistung Ihrer Fragen. Dazu gehören Einzelfeld-, Verbindungs-, Multikey-, Text-, 2D- und 2dSphere -Indizes. Jeder Indextyp dient einem bestimmten Zweck und wird für verschiedene Arten von Abfragen verwendet. Beispielsweise werden einzelne Feld- und Verbindungsindizes für Abfragen auf einzelnen bzw. mehreren Feldern verwendet. Multikey -Indizes werden für Arrays verwendet, und Textindizes werden für den String -Inhalt verwendet.
Wie erstelle ich einen Index in MongoDB? . Diese Methode erstellt einen Index für ein bestimmtes Feld, wenn der Index noch nicht vorhanden ist. Die Methode nimmt zwei Parameter vor: das Feld oder die Felder zum Index und ein Optionsdokument, mit dem Sie zusätzliche Optionen angeben können.
Kann ich mehrere Indizes in MongoDB erstellen? Indizes in MongoDB. Es ist jedoch wichtig zu beachten, dass Indizes zwar die Abfrageleistung verbessern, aber auch Systemressourcen, insbesondere Speicherplatz und Speicher, konsumieren. Daher ist es entscheidend, Indizes mit Bedacht und nur auf diesen Feldern zu erstellen, die häufig abgefragt werden. MongoDB hängt weitgehend von den Abfragemustern Ihrer Anwendung ab. Felder, die häufig in Sortiervorgängen abfragt oder verwendet werden, sind gute Kandidaten für die Indexierung. Darüber hinaus sind Felder mit einem hohen Grad an Einzigartigkeit auch gute Kandidaten für die Indexierung, da sie die Anzahl der Dokumente, die MongoDB bei der Ausführung einer Abfrage scannen müssen, erheblich reduzieren können.
Sie können überprüfen, ob in MongoDB ein Index mit der Methode getIndexes () vorhanden ist. Diese Methode gibt eine Liste aller Indizes in einer Sammlung zurück, einschließlich des standardmäßigen _id -Index.
Kann ich einen Index in mongoDB? MongoDB unter Verwendung der DropIndex () -Methode. Diese Methode entfernt den angegebenen Index aus einer Sammlung. . Dies kann besonders nützlich sein, wenn kein einzelner Index eine Abfrage erfüllen kann, aber der Schnittpunkt von zwei oder mehr Indizes kann.
Wie wirkt sich die Indexierung auf Schreibvorgänge in MongoDB aus? Dies liegt daran, dass jedes Mal, wenn ein Dokument eingefügt oder aktualisiert wird, alle Indizes der Sammlung auch aktualisiert werden müssen. Je mehr Indizes eine Sammlung hat, desto langsamer wird die Schreibvorgänge sein. Es ist wichtig, beim Erstellen von Indizes ein Gleichgewicht zwischen Leseleistung und Schreibleistung zu finden.
Das obige ist der detaillierte Inhalt vonPHP Master | MongoDB -Indexierung, Teil 1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP überlädt Datei -Hochladen über die Variable $ \ _ Dateien. Zu den Methoden zur Sicherstellung gehören: 1. Upload -Fehler, 2. Dateityp und -größe überprüfen, 3.. Dateiüberschreibung verhindern, 4. Verschieben von Dateien auf einen dauerhaften Speicherort.

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.
