saltar al contenido

Indexación con RDM - cuándo usar qué método de indexación

Actualmente, RDM admite 4 tipos diferentes de índices que el usuario puede elegir usar con su base de datos. Estos tipos son: árbol B, árbol R, Hash y AVL. Cada uno tiene sus propios casos de uso ideales y se detallarán a continuación, pero el usuario es libre de probar cada tipo en su propia base de datos y encontrar el rendimiento ideal. 

Árbol B  

El método de indexación predeterminado para RDM es el árbol b. Un árbol b es una estructura de árbol autoequilibrada que mantiene los datos ordenados para permitir tanto la búsqueda como el acceso secuencial. Las inserciones, eliminaciones, actualizaciones y búsquedas se pueden realizar en una escala logarítmica. Un árbol b es una buena solución para bases de datos en disco porque el ancho de los nodos del árbol b puede mantener la profundidad del árbol de nodos más pequeña que un árbol binario autoequilibrado. Esto da como resultado un menor acceso al disco necesario para realizar búsquedas y actualizaciones en el árbol.  

La implementación del árbol b de RDM es un árbol externo no agrupado ordenado según los valores de columna especificados en la definición del índice. Hay una entrada en un nodo de árbol b para cada fila de la tabla de la que se deriva el índice. Los nodos se identifican por su ID de objeto, denominado ID de nodo para objetos de nodo. Esto permite que la implementación sea eficiente para las bases de datos que utilizan el motor en disco o en memoria. En ambos motores, las referencias a una identificación de nodo se buscarán a través del índice de identificación del cajón en el que está almacenado el árbol b. En el motor en disco, el índice de identificación contendrá un desplazamiento y el tamaño del nodo en el paquete de archivo. En el motor en memoria, el índice de identificación contendrá un puntero al nodo. La implementación del árbol b de RDM utiliza un tamaño de nodo de 32 elementos; sin embargo, solo los elementos que están en uso se almacenarán en el servidor de archivos de transacciones. Los nodos de árbol b de RDM nunca se actualizan; en su lugar, se crea un nuevo nodo y el índice de identificación se actualiza para apuntar a la ubicación del nuevo nodo. El nodo antiguo estará disponible para su reutilización en transacciones posteriores.  

Base de datos de almacenamiento en disco Raima

R-Tree (indexación espacial)

RDM 14.1 ha agregado un algoritmo de índice diseñado específicamente para datos geoespaciales llamado R-Tree. Es un árbol de búsqueda equilibrado que organiza sus datos en páginas y está diseñado para agrupar objetos cercanos y luego representarlos en el siguiente nivel del árbol. Este es el tipo de índice ideal cuando los usuarios necesitan una recuperación rápida de datos multidimensionales dentro de un cuadro delimitador.  Un uso común en el mundo real de un árbol R podría ser almacenar objetos espaciales como ubicaciones de restaurantes o los polígonos de los que están hechos los mapas típicos: calles, edificios, contornos de lagos, costas, etc. y luego encontrar respuestas rápidamente a las consultas. como "Buscar todos los museos en un radio de 2 km de mi ubicación actual", "recuperar todos los tramos de carretera en un radio de 2 km de mi ubicación" (para mostrarlos en un sistema de navegación) o "buscar la gasolinera más cercana" (aunque sin tomar carreteras cuenta)

Administrador de base de datos Raima del índice R-tree

Picadillo  

La implementación de hash en RDM 14.1 usa un algoritmo de hash extensible. El algoritmo de hash extensible no requiere que el desarrollador adivine la cardinalidad de un índice durante el tiempo de diseño. Esto es importante para el motor de almacenamiento en memoria, ya que no es necesario reservar memoria para un conjunto de depósitos que es posible que nunca se utilicen. En cambio, a medida que aumenta el número de depósitos en el hash, aumentará el tamaño del directorio. La implementación actual solo permite claves únicas y ordena los datos en función de las columnas con clave (los datos se organizan en función del hash de esas columnas). Esto significa que se puede usar un hash para búsquedas, pero no para rangos o acceso secuencial.

Captura de pantalla 2019-01-17 a las 15.37.26

AVL  

RDM 14.1 también ha agregado un algoritmo de índice específicamente para ser utilizado por el motor de almacenamiento en memoria llamado árbol AVL. Un AVL es un árbol binario autoequilibrado que en RDM se implementa internamente en una fila en lugar de externamente. No hay duplicación de datos en el AVL ya que, a diferencia de un árbol B, no se mantienen los nodos externos que contienen copias de columnas indexadas. Un AVL es un árbol binario, lo que significa que la profundidad del árbol será mucho mayor que la de un árbol B. Por esta razón, el índice AVL es más adecuado para el motor de almacenamiento en memoria que usa el formato de fila expandido que el motor basado en disco que usa el formato de fila empaquetada. El formato de fila empaquetada contiene una implementación para el índice AVL, pero esto se incluye principalmente para conservar una imagen en memoria en el disco y no para uso general en tablas basadas en disco.  

Un AVL se puede utilizar para cualquier operación para la que se utilizaría un índice de árbol b. El AVL admite búsquedas, rangos, escaneo y restricciones tanto duplicadas como únicas. El optimizador de SQL utilizará un AVL de la misma manera que un árbol B, pero utilizará un peso ligeramente diferente en función de las diferencias de implementación entre un árbol B y un AVL.  

Tablero curcuit

Pruebe RDM con los diferentes métodos de indexación ahora