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