OrientDB - Índices

Index es un puntero que apunta a una ubicación de datos en la base de datos. Indexinges un concepto utilizado para localizar rápidamente los datos sin tener que buscar todos los registros en una base de datos. OrientDB admite cuatro algoritmos de índice y varios tipos dentro de cada uno.

Los cuatro tipos de índice son:

Índice SB-Tree

Proporciona una buena combinación de funciones disponibles en otros tipos de índices. Es mejor usar esto para una utilidad general. Es duradero, transaccional y admite consultas de rango. Es el tipo de índice predeterminado. Los diferentes tipos de complementos que admiten este algoritmo son:

  • UNIQUE- Estos índices no permiten claves duplicadas. Para índices compuestos, esto se refiere a la unicidad de las claves compuestas.

  • NOTUNIQUE - Estos índices permiten claves duplicadas.

  • FULLTEXT- Estos índices se basan en una sola palabra de texto. Puede utilizarlos en consultas a través delCONTAINSTEXT operador.

  • DICTIONARY - Estos índices son similares a los que usan UNIQUE, pero en el caso de claves duplicadas, reemplazan el registro existente con el nuevo registro.

Índice hash

Funciona más rápido y es muy ligero en el uso del disco. Es duradero, transaccional, pero no admite consultas de rango. Funciona como HASHMAP, lo que lo hace más rápido en búsquedas puntuales y consume menos recursos que otros tipos de índices. Los diferentes tipos de complementos que admiten este algoritmo son:

  • UNIQUE_HASH_INDEX- Estos índices no permiten claves duplicadas. Para índices compuestos, esto se refiere a la unicidad de las claves compuestas.

  • NOTUNIQUE_HASH_INDEX - Estos índices permiten claves duplicadas.

  • FULLTEXT_HASH_INDEX- Estos índices se basan en una sola palabra de texto. Puede utilizarlos en consultas a través del operador CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX - Estos índices son similares a los que utilizan UNIQUE_HASH_INDEX, pero en los casos de claves duplicadas, reemplazan el registro existente con el nuevo registro.

Índice de texto completo de Lucene

Proporciona buenos índices de texto completo, pero no se puede utilizar para indexar otros tipos. Es duradero, transaccional y admite consultas de rango.

Índice espacial de Lucene

Proporciona buenos índices espaciales, pero no se puede utilizar para indexar otros tipos. Es duradero, transaccional y admite consultas de rango.

Crear índices

Crear índice es un comando para crear un índice en un esquema particular.

La siguiente declaración es la sintaxis básica para crear un índice.

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

A continuación se muestran los detalles sobre las opciones en la sintaxis anterior.

<name>- Define el nombre lógico del índice. También puede utilizar la notación <class.property> para crear un índice automático vinculado a una propiedad de esquema. <clase> usa la clase del esquema y <propiedad> usa la propiedad creada en la clase.

<class-name>- Proporciona el nombre de la clase que está creando el índice automático para indexar. Esta clase debe existir en la base de datos.

<prop-names>- Proporciona la lista de propiedades que desea que indexe el índice automático. Estas propiedades ya deben existir en el esquema.

<type> - Proporciona el algoritmo y el tipo de índice que desea crear.

<key-type> - Proporciona el tipo de clave opcional con índices automáticos.

<metadata> - Proporciona la representación JSON.

Ejemplo

Pruebe la siguiente consulta para crear un índice automático vinculado a la propiedad 'ID' del usuario sales_user.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Si la consulta anterior se ejecuta correctamente, obtendrá el siguiente resultado.

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

Consultar índices

Puede utilizar la consulta de selección para obtener los registros en el índice.

Pruebe la siguiente consulta para recuperar las claves del índice denominado 'indexforId'.

SELECT FROM INDEX:indexforId

Si la consulta anterior se ejecuta correctamente, obtendrá el siguiente resultado.

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

Índices de caída

Si desea eliminar un índice en particular, puede usar este comando. Esta operación no elimina los registros vinculados.

La siguiente declaración es la sintaxis básica para eliminar un índice.

DROP INDEX <name>

Dónde <name> proporciona el nombre del índice que desea eliminar.

Pruebe la siguiente consulta para eliminar un índice llamado 'ID' del usuario sales_user.

DROP INDEX sales_users.Id

Si la consulta anterior se ejecuta correctamente, obtendrá el siguiente resultado.

Index dropped successfully