OrientDB - Index

Index est un pointeur qui pointe vers un emplacement de données dans la base de données. Indexingest un concept utilisé pour localiser rapidement les données sans avoir à rechercher tous les enregistrements d'une base de données. OrientDB prend en charge quatre algorithmes d'index et plusieurs types dans chacun.

Les quatre types d'index sont -

Index SB-Tree

Il fournit un bon mélange de fonctionnalités disponibles à partir d'autres types d'index. Mieux vaut l'utiliser pour une utilité générale. Il est durable, transactionnel et prend en charge les requêtes de plage. C'est le type d'index par défaut. Les différents types de plugins qui prennent en charge cet algorithme sont -

  • UNIQUE- Ces index n'autorisent pas les clés en double. Pour les index composites, cela fait référence à l'unicité des clés composites.

  • NOTUNIQUE - Ces index permettent la duplication des clés.

  • FULLTEXT- Ces index sont basés sur un seul mot de texte. Vous pouvez les utiliser dans les requêtes via leCONTAINSTEXT opérateur.

  • DICTIONARY - Ces index sont similaires à ceux qui utilisent UNIQUE, mais dans le cas de clés dupliquées, ils remplacent l'enregistrement existant par le nouvel enregistrement.

Index de hachage

Il fonctionne plus rapidement et est très léger dans l'utilisation du disque. Il est durable, transactionnel, mais ne prend pas en charge les requêtes de plage. Il fonctionne comme HASHMAP, ce qui accélère les recherches ponctuelles et consomme moins de ressources que les autres types d'index. Les différents types de plugins qui prennent en charge cet algorithme sont -

  • UNIQUE_HASH_INDEX- Ces index n'autorisent pas les clés en double. Pour les index composites, cela fait référence à l'unicité des clés composites.

  • NOTUNIQUE_HASH_INDEX - Ces index permettent la duplication des clés.

  • FULLTEXT_HASH_INDEX- Ces index sont basés sur un seul mot de texte. Vous pouvez les utiliser dans les requêtes via l'opérateur CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX - Ces index sont similaires à ceux qui utilisent UNIQUE_HASH_INDEX, mais en cas de clés en double, ils remplacent l'enregistrement existant par le nouvel enregistrement.

Index de texte intégral Lucene

Il fournit de bons index de texte intégral, mais ne peut pas être utilisé pour indexer d'autres types. Il est durable, transactionnel et prend en charge les requêtes de plage.

Indice spatial Lucene

Il fournit de bons index spatiaux, mais ne peut pas être utilisé pour indexer d'autres types. Il est durable, transactionnel et prend en charge les requêtes de plage.

Créer des index

Create index est une commande pour créer un index sur un schéma particulier.

L'instruction suivante est la syntaxe de base pour créer un index.

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

Voici les détails des options de la syntaxe ci-dessus.

<name>- Définit le nom logique de l'index. Vous pouvez également utiliser la notation <class.property> pour créer un index automatique lié à une propriété de schéma. <classe> utilise la classe du schéma et <property> utilise la propriété créée dans la classe.

<class-name>- Fournit le nom de la classe que vous créez l'index automatique à indexer. Cette classe doit exister dans la base de données.

<prop-names>- Fournit la liste des propriétés que vous souhaitez que l'index automatique indexe. Ces propriétés doivent déjà exister dans le schéma.

<type> - Fournit l'algorithme et le type d'index que vous souhaitez créer.

<key-type> - Fournit le type de clé facultatif avec des index automatiques.

<metadata> - Fournit la représentation JSON.

Exemple

Essayez la requête suivante pour créer un index automatique lié à la propriété 'ID' de l'utilisateur sales_user.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Si la requête ci-dessus est exécutée avec succès, vous obtiendrez la sortie suivante.

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

Interroger les index

Vous pouvez utiliser la requête de sélection pour obtenir les enregistrements dans l'index.

Essayez la requête suivante pour récupérer les clés de l'index nommé «indexforId».

SELECT FROM INDEX:indexforId

Si la requête ci-dessus est exécutée avec succès, vous obtiendrez la sortie suivante.

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

Index de suppression

Si vous souhaitez supprimer un index particulier, vous pouvez utiliser cette commande. Cette opération ne supprime pas les enregistrements liés.

L'instruction suivante est la syntaxe de base pour supprimer un index.

DROP INDEX <name>

<name> fournit le nom de l'index que vous souhaitez supprimer.

Essayez la requête suivante pour supprimer un index nommé 'ID' de l'utilisateur sales_user.

DROP INDEX sales_users.Id

Si la requête ci-dessus est exécutée avec succès, vous obtiendrez la sortie suivante.

Index dropped successfully