Optimizar la visualización de la taxonomía
PostPosted:Fri Jan 04, 2013 5:19 pm
Estoy usando OpenKM en un Ubuntu 12 con Mysql.
En mi repositorio tengo un primer nodo llamado Legajos del cual se desprenden una carpeta por cada letra y dentro de cada letra los legajos cuyos apellidos correspondan a dicha letra. La cantidad de legajos cargados es de aprox. 20.000 y debo llegar a 90.000.
El problema se me plantea cuando quiero browsear la taxonomía, ya que es bastante lento. Describo el proceso para que entiendan en donde está la lentitud.
1- Voy a la opción Archivo --> Buscar carpeta
2- Escribo parte del nombre del legajo y obtengo los resultados. Este proceso es rapidisimo.
3- Elijo un resultado y selecciono la opción "Ir a la carpeta". Acá se da la lentitud. Esto puede tardar casi un minuto hasta que se posiciona en la taxonomia en la carpeta correspondiente.
He notado que con el usuario okmAdmin es algo más rápido, en cambio con un usuario que pertenece al rol que tiene acceso al nodo "Legajos" y sus subcarpetas,la demora es la que mencioné anteriormente.
Suponiendo que era un problema de optimización de Mysql empecé a cambiar sus parámetros de configuración pero no obtuve resultados. Analizando las consultas que genera el OpenKM encontré que ejecuta lo siguiente:
y después por cada nodo ejecuta consultas parecidas a estas:
Current error: 1, New error: 3
y luego una ventana de OpenKM con los siguientes mensajes:
Ahora las preguntas:
1- hay alguna manera de optimizar la taxonomia para que su navegación se más rapida?
2- El modo de seguridad recursiva, requiere alguna reconfiguración o no funciona por un bug?
3- Hay alguna optimización que pueda hacerse sobre las tablas de Mysql?
Desde ya muchas gracias!!!
Diego
En mi repositorio tengo un primer nodo llamado Legajos del cual se desprenden una carpeta por cada letra y dentro de cada letra los legajos cuyos apellidos correspondan a dicha letra. La cantidad de legajos cargados es de aprox. 20.000 y debo llegar a 90.000.
El problema se me plantea cuando quiero browsear la taxonomía, ya que es bastante lento. Describo el proceso para que entiendan en donde está la lentitud.
1- Voy a la opción Archivo --> Buscar carpeta
2- Escribo parte del nombre del legajo y obtengo los resultados. Este proceso es rapidisimo.
3- Elijo un resultado y selecciono la opción "Ir a la carpeta". Acá se da la lentitud. Esto puede tardar casi un minuto hasta que se posiciona en la taxonomia en la carpeta correspondiente.
He notado que con el usuario okmAdmin es algo más rápido, en cambio con un usuario que pertenece al rol que tiene acceso al nodo "Legajos" y sus subcarpetas,la demora es la que mencioné anteriormente.
Suponiendo que era un problema de optimización de Mysql empecé a cambiar sus parámetros de configuración pero no obtuve resultados. Analizando las consultas que genera el OpenKM encontré que ejecuta lo siguiente:
Query /* select nb.uuid from NodeBase nb where nb.parent=:parent and nb.name=:name */ select nodebase0_.NBS_UUID as col_0_0_ from OKM_NODE_BASE nodebase0_ where nodebase0_.NBS_PARENT='cafebabe-cafe-babe-cafe-babecafebabe' and nodebase0_.NBS_NAME='okm:root' limit 1
Query /* select nb.uuid from NodeBase nb where nb.parent=:parent and nb.name=:name */ select nodebase0_.NBS_UUID as col_0_0_ from OKM_NODE_BASE nodebase0_ where nodebase0_.NBS_PARENT='c38d2468-8843-4ca0-b4e6-b4cdc3eb666f' and nodebase0_.NBS_NAME='Legajos' limit 1
Query /* select nb.uuid from NodeBase nb where nb.parent=:parent and nb.name=:name */ select nodebase0_.NBS_UUID as col_0_0_ from OKM_NODE_BASE nodebase0_ where nodebase0_.NBS_PARENT='543fb20a-1545-47b3-8911-ff8c18cbd48e' and nodebase0_.NBS_NAME='A' limit 1
Query /* load collection com.openkm.dao.bean.NodeBase.userPermissions */ select userpermis0_.NUP_NODE as NUP1_67_0_, userpermis0_.NUP_PERMISSION as NUP2_0_, userpermis0_.NUP_USER as NUP3_0_ from OKM_NODE_USER_PERMISSION userpermis0_ where userpermis0_.NUP_NODE='b1ff6fb8-3aa5-4c75-856b-4976373d5c68'
Query /* load collection com.openkm.dao.bean.NodeBase.rolePermissions */ select rolepermis0_.NRP_NODE as NRP1_67_0_, rolepermis0_.NRP_PERMISSION as NRP2_0_, rolepermis0_.NRP_ROLE as NRP3_0_ from OKM_NODE_ROLE_PERMISSION rolepermis0_ where rolepermis0_.NRP_NODE='b1ff6fb8-3aa5-4c75-856b-4976373d5c68'
Query /* select distinct(nbp.group) from NodeBase nb join nb.properties nbp where nb.uuid=:uuid */ select distinct properties1_.NPG_GROUP as col_0_0_ from OKM_NODE_BASE nodebase0_ inner join OKM_NODE_PROPERTY properties1_ on nodebase0_.NBS_UUID=properties1_.NPG_NODE where nodebase0_.NBS_UUID='b1ff6fb8-3aa5-4c75-856b-4976373d5c68'
y después por cada nodo ejecuta consultas parecidas a estas:
Query /* load collection com.openkm.dao.bean.NodeBase.userPermissions */ select userpermis0_.NUP_NODE as NUP1_67_0_, userpermis0_.NUP_PERMISSION as NUP2_0_, userpermis0_.NUP_USER as NUP3_0_ from OKM_NODE_USER_PERMISSION userpermis0_ where userpermis0_.NUP_NODE='ffd439de-0680-4d00-bf7f-0fbc82754b5a'Por otro lado, pensé que quizás el problema estaba en el tipo de seguridad configurado. Leyendo en la wiki (http://wiki.openkm.com/index.php/Applic ... figuration) cambié la opción security.access.manager y en vez de simple (es como estaba configurado) lo configuré como recursive. Pero al reiniciar el Tomcat y tratar de ingresar al sistema obtengo primero una ventana del navegador con el siguiente error:
Query /* load collection com.openkm.dao.bean.NodeBase.rolePermissions */ select rolepermis0_.NRP_NODE as NRP1_67_0_, rolepermis0_.NRP_PERMISSION as NRP2_0_, rolepermis0_.NRP_ROLE as NRP3_0_ from OKM_NODE_ROLE_PERMISSION rolepermis0_ where rolepermis0_.NRP_NODE='ffd439de-0680-4d00-bf7f-0fbc82754b5a'
Current error: 1, New error: 3
y luego una ventana de OpenKM con los siguientes mensajes:
OKM-012006(GetRootFolder): error interno de la aplicaciónPor lo tanto debo volver atrás con el cambio y dejarlo en "simple".
null
Error de comunicación con el servidor (callbackGetUserLastUploadedDocuments)
OKM-015006(findPooledTaskInstances): OKM-015006
Could not find datasource
Error de comunicación con el servidor (getLastMonthTopDownloadedDocument)
Error de comunicación con el servidor (getLastUploadedDocuments)
OKM-015006(findUserTaskInstances): OKM-015006
Could not find datasource
OKM-012006(GetThesaurusFolder): error interno de la aplicación
Null
OKM-012006(GetPersonalFolder): error interno de la aplicación
Null
OKM-012006(GetMailFolder): error interno de la aplicación
Null
OKM-012006(GetTrashFolder): error interno de la aplicación
Ahora las preguntas:
1- hay alguna manera de optimizar la taxonomia para que su navegación se más rapida?
2- El modo de seguridad recursiva, requiere alguna reconfiguración o no funciona por un bug?
3- Hay alguna optimización que pueda hacerse sobre las tablas de Mysql?
Desde ya muchas gracias!!!
Diego