Búsqueda de texto completo

Tipo de índice de abrasión - ¿Por qué es importante?

Tipos de índices en la búsqueda de texto completo (FTS) - se refiere a la especificación colectiva del formato de índice invertido y sus aspectos de almacenamiento. Scorch es el tipo de índice avanzado y en evolución. Pero antes de profundizar en los detalles del scorch, es imprescindible repasar el antiguo tipo de indexación conocido como upside_down.

En el formato de indexación invertida, los aspectos de almacenamiento del índice de respaldo se descargan en un almacén de valores clave. En esencia, esto significa que todas las estructuras de datos rudimentarias de recuperación de información, como el diccionario de términos, las listas de publicaciones, etc., se almacenan en forma de claves y valores en un almacén genérico de claves y valores. Como muchos sistemas similares, las claves se decoran con más detalles para identificar lo que representa el valor. Vamos a omitir los detalles aquí, ya que el tema principal en discusión es scorch. El upside_down era el tipo de índice por defecto hasta el lanzamiento de Couchbase server 5.5.0.

El cuidado diseño bleve(biblioteca de indexación) nos ayudaron a experimentar y a comparar el rendimiento de la representación del índice invertido en diferentes sistemas de clave-valor (por ejemplo: levelDB, RockDB, mossStore, etc.). Pero antes, la representación clave-valor demostró ser un cuello de botella a la hora de escalar el índice invertido.

A continuación se exponen algunos de los principales problemas observados,

  • gran amplificación del tamaño del índice debido principalmente a la representación ingenua de los datos en formatos KV.
  • no se aprovecharon los potenciales de deduplicación de datos.
  • representación menos amigable para servir consultas en lenguaje natural como distancia difusa/edición.

Estos fallos se convirtieron en problemas de escalabilidad mayores con conjuntos de datos masivos, lo que llevó a tomar la decisión de rediseñar la representación del índice invertido y el almacenamiento en disco.  Y esos esfuerzos concibieron el nuevo tipo de índice llamado chamuscar.

Scorch

Muchos conceptos fundamentales del diseño de scorch se inspiran en el de Lucene.

Scorch sigue una arquitectura de índices basada en segmentos. Cada índice es una colección de segmentos y cada segmento es un subíndice autosuficiente e inmutable capaz de servir la consulta.

Con scorch, decidimos representar internamente los documentos mediante identificadores numéricos. Esto abrió enormes oportunidades de optimización en la representación del índice invertido.

Veamos ahora con más detalle la arquitectura de los segmentos. Cada segmento se compone de estos bloques principales.

Diccionario de términos - Podría decirse que es la parte más importante de un índice invertido. Almacena cada término indexado, junto con su frecuencia de documento y un puntero a las listas de contabilización por campo.

Scorch utiliza transductores de estado finito (FST) para implementar estos diccionarios de términos. Las implementaciones basadas en FST ayudan a ahorrar memoria y a optimizar las consultas avanzadas, como las basadas en la distancia de edición o en expresiones regulares, aprovechando la tecnología DFA propiedad de los FST.

Listas de envíos - Proporciona la lista de documentos en los que aparece un término de búsqueda. Como hemos dado IDs numéricos para representar documentos internamente, esto puede representarse mejor como un mapa de bits. Las representaciones de mapa de bits ayudan a ahorrar espacio, búsquedas más rápidas y código optimizado SSE.

Normas de frecuencia/Datos de localización - Los detalles de frecuencia y norma de los términos indexados se utilizan al puntuar. La ubicación o los detalles posicionales son necesarios para realizar consultas de frases o resaltar los resultados, etc. Así pues, estos valores numéricos no ordenados son varint codificadas y almacenadas mediante una lógica de fragmentación propia.

Campos almacenados - Ayuda a los usuarios a almacenar valores de campo no analizados en el índice y recuperarlos como parte de los resultados de la búsqueda. Esto ayuda a evitar más viajes de búsqueda de datos al KV.  Scorch utiliza técnicas de compresión en la lógica de chunking propietaria para representar estos datos.

DocValues - realiza búsquedas inversas en el índice, por ejemplo: encuentra todos los valores indexados para un documento dado. Esto ayuda a potenciar consultas como facetas u ordenación en campos personalizados, etc. Scorch utiliza una representación columnar sobre la lógica de fragmentación comprimida patentada para representar esta parte del índice.

Scorch utiliza un nuevo formato binario llamado "zap" para representar el contenido de estos segmentos aplanados por bytes en el disco. Y estos bytes de segmento de disco son mmap'ed.

TLDR; - Las optimizaciones anteriores de scorch permitieron reducir el tamaño de los índices hasta 4 veces y mejorar el rendimiento de las consultas (en latencia y rendimiento) hasta 20 veces en muchas consultas de nuestras pruebas comparativas internas.

Scorch es el tipo de índice por defecto desde la versión 6.0.0 del servidor Couchbase y se están añadiendo más funcionalidades para scorch en las próximas versiones de FTS.

Por lo tanto, se recomienda encarecidamente actualizar los índices a los formatos de índice scorch, si tiene un caso de uso genuino de FTS.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Sreekanth Sivasankaran

Sreekanth Sivasankaran es Ingeniero Principal/Gerente Superior de Ingeniería en Couchbase R&D. Dirige el diseño y desarrollo de la funcionalidad de búsqueda distribuida y de alto rendimiento. Cuenta con más de 17 años de experiencia en el desarrollo de productos en diversos ámbitos como las telecomunicaciones, los teléfonos móviles, el software empresarial, las tecnologías de macrodatos y los sistemas distribuidos.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.