OrientDB - Indici

Index è un puntatore che punta a una posizione di dati nel database. Indexingè un concetto utilizzato per individuare rapidamente i dati senza dover cercare ogni record in un database. OrientDB supporta quattro algoritmi di indice e diversi tipi all'interno di ciascuno.

I quattro tipi di indice sono:

Indice SB-Tree

Fornisce una buona combinazione di funzionalità disponibili da altri tipi di indice. Meglio usarlo per utilità generale. È durevole, transazionale e supporta le query di intervallo. È il tipo di indice predefinito. I diversi tipi di plugin che supportano questo algoritmo sono:

  • UNIQUE- Questi indici non consentono chiavi duplicate. Per gli indici compositi, questo si riferisce all'unicità delle chiavi composite.

  • NOTUNIQUE - Questi indici consentono chiavi duplicate.

  • FULLTEXT- Questi indici si basano su una singola parola di testo. Puoi usarli nelle query tramiteCONTAINSTEXT operatore.

  • DICTIONARY - Questi indici sono simili a quelli che utilizzano UNIQUE, ma in caso di chiavi duplicate, sostituiscono il record esistente con il nuovo record.

Indice hash

Funziona più velocemente ed è molto leggero nell'utilizzo del disco. È durevole, transazionale, ma non supporta le query di intervallo. Funziona come HASHMAP, che lo rende più veloce nelle ricerche puntuali e consuma meno risorse rispetto ad altri tipi di indice. I diversi tipi di plugin che supportano questo algoritmo sono:

  • UNIQUE_HASH_INDEX- Questi indici non consentono chiavi duplicate. Per gli indici compositi, questo si riferisce all'unicità delle chiavi composite.

  • NOTUNIQUE_HASH_INDEX - Questi indici consentono chiavi duplicate.

  • FULLTEXT_HASH_INDEX- Questi indici si basano su una singola parola di testo. È possibile utilizzarli nelle query tramite l'operatore CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX - Questi indici sono simili a quelli che utilizzano UNIQUE_HASH_INDEX, ma in caso di chiavi duplicate, sostituiscono il record esistente con il nuovo record.

Indice di testo completo di Lucene

Fornisce buoni indici full-text, ma non può essere utilizzato per indicizzare altri tipi. È durevole, transazionale e supporta le query di intervallo.

Indice spaziale Lucene

Fornisce buoni indici spaziali, ma non può essere utilizzato per indicizzare altri tipi. È durevole, transazionale e supporta le query di intervallo.

Creazione di indici

Crea indice è un comando per creare un indice su uno schema particolare.

La seguente dichiarazione è la sintassi di base per creare un indice.

CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>] 
[METADATA {<metadata>}]

Di seguito sono riportati i dettagli sulle opzioni nella sintassi precedente.

<name>- Definisce il nome logico per l'indice. È inoltre possibile utilizzare la notazione <class.property> per creare un indice automatico associato a una proprietà dello schema. <class> utilizza la classe dello schema e <property> utilizza la proprietà creata nella classe.

<class-name>- Fornisce il nome della classe che si sta creando l'indice automatico da indicizzare. Questa classe deve esistere nel database.

<prop-names>- Fornisce l'elenco delle proprietà che si desidera venga indicizzato dall'indice automatico. Queste proprietà devono già esistere nello schema.

<type> - Fornisce l'algoritmo e il tipo di indice che si desidera creare.

<key-type> - Fornisce il tipo di chiave opzionale con indici automatici.

<metadata> - Fornisce la rappresentazione JSON.

Esempio

Prova la seguente query per creare un indice automatico associato alla proprietà "ID" dell'utente sales_user.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Se la query precedente viene eseguita correttamente, otterrai il seguente output.

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

Query sugli indici

È possibile utilizzare la query di selezione per ottenere i record nell'indice.

Prova la seguente query per recuperare le chiavi di indice denominate "indexforId".

SELECT FROM INDEX:indexforId

Se la query precedente viene eseguita correttamente, otterrai il seguente output.

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

Indici di rilascio

Se vuoi eliminare un particolare indice, puoi usare questo comando. Questa operazione non rimuove i record collegati.

La seguente dichiarazione è la sintassi di base per eliminare un indice.

DROP INDEX <name>

Dove <name> fornisce il nome dell'indice che si desidera eliminare.

Prova la seguente query per eliminare un indice denominato "ID" dell'utente sales_user.

DROP INDEX sales_users.Id

Se la query precedente viene eseguita correttamente, otterrai il seguente output.

Index dropped successfully