Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ToroDB Hackathon

8Kdata
April 25, 2015

ToroDB Hackathon

Esta presentación contiene ideas de proyectos para desarrollar para mejorar el proyecto ToroDB (https://github.com/torodb/torodb). Se utilizará el lenguaje Java (dado que es el lenguaje en el que está escrito ToroDB) pero algunas de las pruebas propuestas, al ser desde la perspectiva del cliente, podrían escribirse en otros lenguajes.

8Kdata

April 25, 2015
Tweet

More Decks by 8Kdata

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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 :)
  8. 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!
  9. 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 ;)
  10. 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
  11. ToroDB @NoSQLonSQL Crear un benchmark de latencia con 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
  12. ToroDB @NoSQLonSQL Medir latencia operaciones en ToroDB con 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
  13. ToroDB @NoSQLonSQL Medir el rendimiento de ToroDB con NewRelic •

    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