AnsweredAssumed Answered

Algunas dudas sobre transactional queries

Question asked by spilby on Oct 21, 2015
Latest reply on Oct 22, 2015 by spilby
Buenas,

acabamos de pasar a la versión 5.0.2 de Alfresco (veníamos de la 4.1.6) con la intención, sobretodo, de mejorar el tiempo de respuesta en las búsquedas, que con grandes cantidades de información se hacía excesivamente lento.

El principal cambio se producirá en las llamadas "transactional queries", que buscarán en BD en lugar de pasar por los índices de Solr. Me gustaría confirmar en algunas puntos su correcta utilización, y comentarlo con quienes tenéis seguro ya experiencia usándolas.

1. Por una parte debemos activarlas en el alfresco-global.properties. Por defecto solr.query.fts.queryConsistency está en modo TRANSACTIONAL_IF_POSSIBLE, por lo que entiendo que si no añado nada al properties, ya se ejecutarán de forma transaccional si la query así lo indica. ¿Es así?

Otra forma de forzar que sea transaccional por código es mediante el parámetro


params.setQueryConsistency(QueryConsistency.TRANSACTIONAL);


Aquí viene mi primera duda. No sé si entiendo bien la diferencia entre "TRANSACTIONAL" y "TRANSACTIONAL_IF_POSSIBLE". ¿Quiere decir que TRANSACCIONAL fuerza sí o sí a que sea transaccional aunque no añada el setQueryConsistency transactional en el código? ¿Y que si añado en el properties el IF_POSSIBLE (o lo que es lo mismo, no pongo nada) sólo será transaccional si así lo obligo mediante el setQueryConsistency por código java?

2. Hay un apartado en la documentación que habla de "Configuring an optional patch for upgrade" y dice: "To enable the patch that adds the required indexes to the database, set the following property in the alfresco-global.properties file: system.metadata-query-indexes.ignored=false "

¿Esta property es la que me permitirá hacer las consultas transaccionales usando índices de BD? ¿Debo definir aparte esos índices o ya se añaden automáticamente cuando en el XML del modelo indico: index enabled="true"? ¿O no tiene nada que ver una cosa con la otra? Lo de que sea opcional me despista y no comprendo bien su propósito.

3. Según he entendido, hay queries que anularían automáticamente el uso transaccional de la query. Es decir, que dejaría de ser transaccional e iría a buscar al solr en lugar de a BD dependiendo de qué ponga en la query.

Utilizar un OR, por ejemplo, causaría ese efecto. O utilizar el PATH.

En cambio utilizar el TYPE o buscar por title, permite la transaccionalidad. ¿Y buscar por un valor concreto de un metadato propio? ¿Se considera full text search por lo que iría al SOLR?

Merci por la ayuda!

Outcomes