ToroDB Hackathon - Barcelona JUG 2015
-
Upload
8kdata-technology -
Category
Software
-
view
96 -
download
3
Transcript of ToroDB Hackathon - Barcelona JUG 2015
![Page 2: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/2.jpg)
ToroDB @NoSQLonSQL
EJERCICIO “OBLIGATORIO”
![Page 3: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/3.jpg)
ToroDB @NoSQLonSQL
Instalación ToroDB y puesta en marcha
● Instalar PostgreSQL 9.4. Crear un usuario y ajustar contraseña. Revisar pg_hba.conf (si es necesario)
● Clonar y construir con maven https://github.com/8kdata/mongowp
● Clonar y construir con maven https://github.com/torodb/torodb
![Page 4: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/4.jpg)
ToroDB @NoSQLonSQL
Instalación ToroDB y puesta en marcha
● Ejecutar java -jar torodb.jar –help y revisar opciones de arranque
● Crear base de datos vacía en PostgreSQL
● Lanzar ToroDB y jugar con la consola de Mongo. Mirar las tablas generadas
![Page 5: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/5.jpg)
ToroDB @NoSQLonSQL
HACKS VARIOS(a elegir 1 ó más, según gustos)
![Page 6: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/6.jpg)
ToroDB @NoSQLonSQL
Monitorización JMX
● Incorporar soporte de JMX en ToroDB, para poder monitorizar métricas desde jvisualvm y clientes JMX
● Monitorizar:➔ Tamaño de la cola general (leyendo estimación del ejecutor)
➔ Tamaño medio/varianz. colas sesiones➔ Número de sesiones
![Page 7: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/7.jpg)
ToroDB @NoSQLonSQL
Demostrar “tainted reads” de Mongo
● Crear un programa Java cliente, con el driver y API de MongoDB (3.0)
● Usar primitivas de sincronización / programación concurrente para provocar inserción de documentos / actualización de documentos ya leídos de manera concurrente a una lectura larga de una query
![Page 8: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/8.jpg)
ToroDB @NoSQLonSQL
Demostrar “tainted reads” de Mongo
● Puede ser necesario hacer un update que modifique el documento de manera notable (añadiendo muchos campos) y así volverá a aparecer en el resultset, al final
● Comprobar que en MongoDB el efecto se produce y en ToroDB NO
![Page 9: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/9.jpg)
ToroDB @NoSQLonSQL
Arreglar mongoimport 3.0 en ToroDB
● mongoimport v3.0 no funciona con ToroDB, porque falta algún comando del protocolo por implementar
● Estudiar con wireshark o tcpdump el/los comando/s que falta/n
● Implementarlos en mongowp y torodb
![Page 10: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/10.jpg)
ToroDB @NoSQLonSQL
Usar mongowp para crear un loggging proxy
● wireshark o tcpdump ayudan para estudiar el protocolo de Mongo, pero un proxy que loguee todas las peticiones del cliente es mucho mejor
● A un nivel básico, es algo muy sencillo de realizar gracias a mongowp
● Usa tu librería de logging favorita :)
![Page 11: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/11.jpg)
ToroDB @NoSQLonSQL
Quitar el prefijo “col_” en los schemas de Toro
● Cuando en MongoDB generas una colección, ToroDB crea un SCHEMA SQL con igual nombre
● Pero con el prefijo “col_” y todas las tablas usan dicho SCHEMA
● Quitarlo parece fácil pero tiene algunas dificultades. ¡A por ello!
![Page 12: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/12.jpg)
ToroDB @NoSQLonSQL
Probar el driver pgjdbc-ng en ToroDB
● ToroDB usa el driver “oficial” de PostgreSQL de JDBC
● Existe un driver alternativo, que usa el protocolo binario de PostgreSQL
● Probarlo en ToroDB puede ser tan simple como cambiar la dependencia maven y la URL.... o no ;)
![Page 13: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/13.jpg)
ToroDB @NoSQLonSQL
Crear un microbenchmark de Mongo con jmh
● jmh es un pequeño framework de benchmarking, orientado a microbenchmarks, incluido en la distribución de Java de Oracle
● Facilita crear benchmarks incluso con varios threads
● Crear un benchmark de Mongo/Toro
![Page 14: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/14.jpg)
ToroDB @NoSQLonSQL
Crear un benchmark de latenciacon hdrhistogram
● En bases de datos la latencia es en ocasiones más importante que las operaciones/s o el throughput
● hdrhistogram es un framework excelente para medirlo
● Crear una app cliente que mida la latencia de operaciones y las imprima
![Page 15: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/15.jpg)
ToroDB @NoSQLonSQL
Medir latencia operaciones en ToroDBcon hdrhistogram. Exportar via JMX
● Modificar ToroDB para que use internamente hdrhistogram para grabar estadísticas de latencia de tiempo de servicio de peticiones
● Imprimirlas periódicamente por consola
● (Mucho mejor) exportarlas vía JMX
![Page 16: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/16.jpg)
ToroDB @NoSQLonSQL
Medir el rendimiento de ToroDB conNewRelic
● NewRelic permite medir el rendimiento y analizar el mismo para aplicaciones Java
● En aplicaciones web no hay que hacer configuración especial
● En aplicaciones standalone es necesario definir en XML qué medir
![Page 17: ToroDB Hackathon - Barcelona JUG 2015](https://reader035.fdocuments.mx/reader035/viewer/2022071900/55bec194bb61eb267b8b4724/html5/thumbnails/17.jpg)