Grundlæggende om grafdatabasen Neo4j · Lektion

Avancerede indekseringsstrategier

Undersøg forskellige typer indekser i Neo4j, og lær at anvende dem strategisk for at fremskynde komplekse graftraverseringer.

Lektion 2 af 411 trin

Avancerede indekseringsstrategier er en gratis Grundlæggende om grafdatabasen Neo4j-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Grundlæggende om grafdatabasen Neo4j, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Grundlæggende om grafdatabasen Neo4j-kurset indeholder 4 lektioner i alt.

Gør forespørgsler hurtigere med indekser

Ligesom et bogindeks hjælper dig med hurtigt at finde oplysninger, gør databaseindekser hentning af data markant hurtigere.

I Neo4j er indekser afgørende for optimering af forespørgsler, især når du arbejder med store datasæt. De gør det muligt for databasen hurtigt at finde noder eller forbindelser ud fra bestemte egenskabsværdier uden at gennemgå hele grafen.

Genopfriskning: indekser for nodeegenskaber

Du kender måske allerede de grundlæggende indekser for nodeegenskaber. De er afgørende for at gøre forespørgsler hurtigere, når noder filtreres efter bestemte labels og egenskabsværdier.

Hvis du f.eks. ofte søger efter en Person ud fra dennes name, gør et indeks på :Person(name) opslaget langt hurtigere.

Oprettelse af et indeks for nodeegenskaber

Lad os oprette et simpelt indeks for personers navne. Først sørger vi for, at databasen er ryddet op, og derefter tilføjer vi et indeks. Dette indeks gør forespørgsler som MATCH (p:Person {name: 'Alice'}) RETURN p hurtigere.

CREATE CONSTRAINT ON (p:Person) ASSERT p.id IS UNIQUE;
CREATE (a:Person {id: '1', name: 'Alice', age: 30});
CREATE (b:Person {id: '2', name: 'Bob', age: 25});

// Create an index on the 'name' property of 'Person' nodes
CREATE INDEX FOR (p:Person) ON (p.name);

Indeksering af forbindelsesegenskaber

Vidste du, at du også kan indeksere egenskaber på forbindelser? Det er nyttigt, når dine forespørgsler filtrerer ud fra selve forbindelsernes attributter.

Hvis du f.eks. har (Person)-[WORKS_AS {role: 'Manager'}]->(Company), kan et indeks på egenskaben role for WORKS_AS-forbindelsen gøre forespørgsler efter bestemte roller markant hurtigere.

Oprettelse af et indeks for forbindelsesegenskaber

Lad os oprette et indeks for egenskaben role på vores WORKS_AS-forbindelser. Det gør forespørgsler, der filtrerer efter forbindelsens rolle, hurtigere.

CREATE (c:Company {name: 'NeoCorp'});
MATCH (a:Person), (c:Company)
WHERE a.name = 'Alice' AND c.name = 'NeoCorp'
CREATE (a)-[:WORKS_AS {role: 'Developer', years: 5}]->(c);

// Create an index on the 'role' property of 'WORKS_AS' relationships
CREATE INDEX FOR ()-[r:WORKS_AS]-() ON (r.role);

Fuldtekstsøgning med indekser

Nogle gange har du brug for mere end eksakte match. Fuldtekstindekser giver dig mulighed for at udføre avancerede tekstsøgninger, herunder delvise ordmatch, upræcise match og søgninger på tværs af flere egenskaber.

Det er ideelt til at finde noder eller relationer, hvor en egenskab indeholder bestemte nøgleord, f.eks. når du søger efter en film ud fra et ord i dens titel eller beskrivelse.

Implementering af et fuldtekstindeks

Sådan opretter du et fuldtekstindeks og bruger det til at forespørge efter noder. Vi opretter et indeks, der søger på tværs af egenskaberne title og description for noder af typen Movie.

CREATE (m1:Movie {title: 'The Great Adventure', description: 'A thrilling journey.'});
CREATE (m2:Movie {title: 'Mystic Forest', description: 'Explore a magical world.'});

// Create a full-text index for Movie titles and descriptions
CALL db.index.fulltext.createNodeIndex(
  'movieFullTextIndex',
  ['Movie'],
  ['title', 'description']
);

// Query the full-text index for 'adventure'
CALL db.index.fulltext.queryNodes(
  'movieFullTextIndex',
  'adventure'
) YIELD node
RETURN node.title, node.description;

Sammensatte indekser til flere egenskaber

Når dine forespørgsler ofte filtrerer efter flere egenskaber samtidigt for den samme node eller relation, kan et sammensat indeks gøre en stor forskel.

I stedet for at oprette separate indekser for hver egenskab kombinerer et sammensat indeks dem. Det er meget effektivt til forespørgsler som MATCH (p:Person {firstName: 'John', lastName: 'Doe'}).

Oprettelse af et sammensat indeks

Lad os oprette et sammensat indeks på både firstName og lastName for noder af typen User. Det optimerer forespørgsler, der filtrerer efter begge egenskaber samlet.

CREATE (u1:User {firstName: 'Jane', lastName: 'Smith', email: 'jane@example.com'});
CREATE (u2:User {firstName: 'John', lastName: 'Doe', email: 'john@example.com'});

// Create a composite index on firstName and lastName for User nodes
CREATE INDEX FOR (u:User) ON (u.firstName, u.lastName);

Kontrol af indeksstrategi

Du har lært om flere avancerede indekseringsstrategier i Neo4j. Nu kan du teste din forståelse af, hvornår og hvordan du bruger dem effektivt.

Opsummering: Avancerede indekseringsstrategier

Godt klaret! I denne lektion har du udforsket avancerede indekseringsstrategier i Neo4j:

  • Nodeegenskabsindekser: Du har gennemgået deres rolle i at gøre opslag af noder hurtigere.
  • Relationsindekser: Du har lært, hvordan du indekserer egenskaber på relationer for at gøre filtrering hurtigere.
  • Fuldtekstindekser: Du har opdaget, hvordan du udfører avancerede tekstsøgninger ved hjælp af specialiserede indekser.
  • Sammensatte indekser: Du har forstået, hvordan du optimerer forespørgsler, der filtrerer efter flere egenskaber samtidigt.

Strategisk brug af disse indekser er afgørende for at opnå optimal ydeevne for forespørgsler i dine Neo4j-applikationer.

Gratis at komme i gang

Lær Grundlæggende om grafdatabasen Neo4j med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Avancerede indekseringsstrategier” gratis?

Ja — alle 3 lektioner i læringssporet Grundlæggende om grafdatabasen Neo4j, inklusive “Avancerede indekseringsstrategier”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Grundlæggende om grafdatabasen Neo4j-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Avancerede indekseringsstrategier”?

Undersøg forskellige typer indekser i Neo4j, og lær at anvende dem strategisk for at fremskynde komplekse graftraverseringer. Du øver dig i Grundlæggende om grafdatabasen Neo4j med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Grundlæggende om grafdatabasen Neo4j?

Der kræves ingen tidligere erfaring. Grundlæggende om grafdatabasen Neo4j på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Avancerede indekseringsstrategier”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Grundlæggende om grafdatabasen Neo4j-lektion?

Ja. Alle Grundlæggende om grafdatabasen Neo4j-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Optimering af Cypher-forespørgsler
  2. Avancerede indekseringsstrategier
  3. Skalering af Neo4j med kausal klyngedannelse
  4. Profilering af forespørgsler med EXPLAIN og PROFILE
← Tilbage til Grundlæggende om grafdatabasen Neo4j