Google Web

Mostrando entradas con la etiqueta sql. Mostrar todas las entradas
Mostrando entradas con la etiqueta sql. Mostrar todas las entradas

30 dic 2011

2011 - Recapitulación en código

A menos de 48 horas de terminar el 2011, me pongo a pensar en la cantidad de código inútil que tuve que arrojar para ganarme el alcohol de cada día. También código que no genero dinero, pero aún así sirve para perder el tiempo (o si lo pusiera en Linkedin para ganar "skills"). A manera de raro resumén algunos puntos:


  • Python - Creo que el "skill" que más alimente (y con profit) fue mis inicios en el desarrollo web con Python, en particular con Google App Engine. No dire que fue de mi agrado inmediato, tarde en reconocer el valor del lenguaje y la plataforma, pero se le toma cariño. Hubiera esperado más proyecto de este tipo (por el dinero también, ¿por que no?). Aunque no considero mi nivel de Python, como competitivo, me gustaría continuar el desarrollo.
  • Facebook API - De la mano con Python, estuve adentrandome en las APIs de Facebook y sus virtudes. Igual, al principio es algo extraño, sobretodo estan en medio de la migración de las API's a Graph, que la verdad es una maravilla contra FQL y el demás de API's absurdas que tenía FB antes.
  • MSOLAP - Si, fue un año rudo en cuestión de OLAP, aprendí mucho Analysis Services, y aún así me sigo sintiendo bastante novato. Estuve viendo optimizaciones, particionamiento, analisis de dimensiones, y demás brujerías que no podría explicar del todo bien, pero entiendo que hacen. Aquí si pondría un STOP, así grandote y rojo, porque no creo que quiera continuar haciendo Cubos OLAP.
  • .NET - Aquí tenemos desolación, se que hay cosas nuevas y fascinantes, pero la verdad que poco acercamiento tuve. La única excepción a considerar sería utilizar ASP.NET MVC3, pero no tanto como podría haber esperado, esta lindo el asunto pero como que no es lo mio.
  • Java - Hace poco menos de un mes, lo intente, juro que lo intente. Instale mi Android SDK, mi Eclipse, e intente leer un poco de como hacer basura en Android, pero algo paso, que lo olvide (yo digo que me bloquee a mi mismo a olvidar el tema). Quizás el siguiente año lo vea de nuevo, junto con el olvidado Objective-C (que según eso debería estar trabajandolo pero no me han dado el proyecto aún).
  • Javascript - Lo pase de noche, aprendi un poco más de JQuery, pero olvide otro tanto. No es cierto, vi un poco de Javascript de ese loco y raro en Node.js, pero no me gusto, así que lo di por cerrado el caso.
  • Ruby - Igual que arriba, lo instale, lo vi, y dije "OK nos vemos señor lenguaje japones, hasta nunca". Pido a los dioses no me toque usarlo jamás.
  • PHP - Algo paso, pero no se que, creo que deje de programar PHP por alguna mistica razón. Ya lo que hago solo es refrito de WebCore, el cual por cierto esta bastante flojo en commits.

Creo que así puedo resumir lo que vivi en código este año. Este siguiente año no creo llegar a profundizar ninguna tecnología nueva, pero bueno, tampoco esperaba tocar Python este año (sin albur).

12 dic 2008

2 Fast 2 MySQL

Amigo, usted es un depresivo coder que se ve horrorizado por complejas y hermosas consultas SQL en sistemas legados que desconocen IX, FK y demás fancy features? Tiene el terrible problema de hacer transformaciones de datos tan complicadas y cargadas que los discos de su HD saldran girando fuera de su eje? Si esta en esa situación, lo comprendo, sufro de los mismos males. Por eso hoy le recomiendo, hacer una idiotes. Si señor, montar MySQL en un RAM disk.

WTF? Pues bien la idea no es novedosa, más no es aplicada a diario. Y les puedo decir que no puedo hacer comparativa alguna, mis consultas y ejecucciones son tan rápidas que ya tengo tiempo libre para mi familia xD. Para realizar esta amable tarea, basta que consigamos un buen driver de RAM Disk, recomiendo este (Descargar), el cual es muy fácil de entender y de usar. Creamos nuestro RAM disk, de unos 500 MB. Que tanto puede ser no?

Una vez creado procedemos a parar MySQL, editar el my.ini para apuntar nuestro datadir a nuestra recien creada unidad RAM. Entonces procedemos a copiar el contenido de todo datadir original en nuestro RAM disk, prendemos MySQL y apreciad el poder de no usar el disco duro!!!

Espero que lo pongan a prueban, y vean la velocidad. Solo hay que tener cuidado de no apagar la maquina, sino recuperaste tu info. Para recuperarla basta revertir los cambios en my.ini y copiar los archivos del RAM disk al datadir original.

16 sept 2008

No more UNION

El día de hoy quiero compartir con ustedes un hallazgo de esas funciones místicas (si Pimienta, es místico esto) de MySQL. Se trata del keyword ROLLUP de GROUP BY. Qué es esto y como funciona? Supongamos el siguiente ejemplo:

SELECT NombreCliente, SUM(MontoPago) FROM Clientes GROUP BY NombreCliente

Ahorrando los detalles de que era habia un JOIN en Clientes y Pagos. Tenemos un listado con la suma de los pagos por cliente, pues bien, si queriamos tener un gran total de esto la gente era tonta y en lenguaje de programación hacian una suma de las sumas de pagos (he visto mucho código así, lo juro). Otros menos torpes como yo, usamos el famoso UNION para agregar un NULL como NombreCliente y sumar todo. Ok nada novedoso para muchos, pero bueno MySQL trae un nivel bastante agradable para mejorar esto.

SELECT NombreCliente, SUM(MontoPago) FROM Clientes GROUP BY NombreCliente
UNION
SELECT NULL as NombreCliente, SUM(MontoPago) FROM Clientes

Usando ROLL UP tenemos:

SELECT NombreCliente, SUM(MontoPago) FROM Clientes GROUP BY NombreCliente WITH ROLLUP

Lo que nos da el mismo resultado, y es hermoso. Claro este SELECT no tiene complicaciones, pero cuando tienes un SELECT construido para generar un pivote dinámico, tienes complicaciones existenciales más importantes que reflejar los JOINS y clausulas del UNION.

Espero que le ayude a alguién este tip, que a mi la verdad me sirvió de mucho!

EDIT: A lo que preguntaron por messenger, si en SQL Server al parecer si existe la palabra clave ROLLUP, se maneja igual según MSDN, más no lo he checado.