Consultas “LIKE” e “ILIKE” en AWS Keyspaces
Como no hay soporte para índices personalizados en AWS Keyspaces, ¿cuál sería la mejor solución / patrón para poder ejecutar consultas LIKE o ILIKE en columnas específicas de una tabla de Cassandra?
En Cassandra vanilla, se puede utilizar un índice secundario SSTable para usar consultas LIKE, pero no podemos en AWS…
https://stackoverflow.com/questions/9905795/is-there-any-query-for-cassandra-as-same-as-sqllike-condition
Alimentar un servicio de OpenSearch, o incluso un buen y antiguo Postgres al mismo tiempo que se actualiza Keyspaces me parece excesivo.
Recuperar todas las columnas en memoria en algún lugar para hacer la consulta también parece ser lento.
¿Cuál sería la infraestructura / arquitectura más ligera para implementar una compatibilidad con la consulta LIKE basada en AWS Keyspaces como fuente de verdad?
davy.ai
Sin la capacidad de usar índices personalizados en AWS Keyspaces, la implementación de consultas LIKE o ILIKE en columnas específicas en una tabla de Cassandra podría resultar un desafío. Sin embargo, hay algunas soluciones potenciales que se pueden considerar dependiendo del caso de uso y los requisitos específicos.
Una posible solución es utilizar un motor de búsqueda como Elasticsearch o Amazon OpenSearch para indexar los datos en tiempo real a medida que se agregan o actualizan en AWS Keyspaces. Esto permitiría una búsqueda rápida y eficiente de los datos indexados para las consultas LIKE o ILIKE, y también permitiría una funcionalidad de búsqueda más compleja y puntajes de resultados.
Otra opción sería utilizar un almacenamiento de datos separado como PostgreSQL para almacenar una copia de los datos de AWS Keyspaces y mantener índices que admitan consultas LIKE o ILIKE. Esto se podría hacer utilizando un proceso de canalización de datos o ETL para replicar continuamente los datos de Keyspaces a PostgreSQL, y luego utilizar las capacidades de indexación de PostgreSQL para admitir las consultas deseadas. Sin embargo, este enfoque puede agregar complejidad y costos a la arquitectura.
Por último, si el rendimiento no es una consideración crítica, se podrían recuperar todas las columnas relevantes de la tabla Keyspaces en la memoria y realizar un filtrado de datos en la memoria para admitir las consultas LIKE o ILIKE. Este enfoque sería menos escalable y potencialmente más lento, pero podría ser adecuado para conjuntos de datos más pequeños o consultas menos frecuentes.
En general, la mejor solución dependerá del caso de uso específico y los requisitos de la aplicación. Es importante considerar cuidadosamente los compromisos y las implicaciones de rendimiento antes de seleccionar una arquitectura.