Not Only SQL

Siempre soy escéptico, o más bien prudente, con las nuevas tecnologías revolucionarias, así que cuando hace unos meses se empezó a hacer ruido con NoSQL, llamándolo movimiento y prometiéndose el mejor invento después del pan de molde, aparqué el tema para más tarde como hago con cualquier nuevo buzzword que nos intentan vender. Si es importante, ya me volveré a topar con él (es una forma de gestionar la infoxicación, como otra cualquiera :P).

En los últimos meses he estado involucrado en un proyecto SaaS (Software as a Service), y me intrigan las consecuencias que puede tener este modelo de software para el Software Libre (interesante al respecto la Franklin Street Statement on Freedom and Network Services), lo que me ha llevado al cloud computing (es que ahora todo son buzzwords), y a toparme de nuevo con NoSQL.

Resumiendo (mucho) se trata de almacenamientos de datos no relacionales (más complicado de lo que parece, tantos años educándonos sobre modelos relacionales), que gracias a no depender de las restricciones que acaba sufriendo un sistema de gestión de datos relacional, nos pueden dar ciertas características muy deseables cuando necesitamos acceder a muchos datos (y muy rápido).

Esos almacenamientos trabajan, por ejemplo, orientados a documentos o pares clave/valor (sí, como el venerable BerkeleyDB; y recordemos: sin relaciones), y se desprenden en muchos casos de SQL en su API para dar características que resultan muy difíciles de conseguir con un sistema relacional:

  • No tienen un esquema de datos fijo: se puede cambiar el modelo de datos sobre la marcha, dando trabajo a la capa de negocio.
  • No existen agregaciones de forma implícita: no hay relaciones, así que no se puede hacer un join de forma nativa entre tablas :P.
  • Permiten gran escalabilidad y rendimiento: algunos son distribuidos, otros permiten replicación tal cual, y en general proponen modelos de almacenamiento en disco muy optimizado.
  • En general proporcionan APIs sencillas: ya no es necesaria la complejidad del SQL, porque no hay relaciones.

Estas características abren la puerta a aplicaciones muy interesantes, sobretodo en el campo del cloud computing, y me parece muy importante que hayan soluciones open source disponibles para este tipo de infraestructura (un buen ejemplo sería CouchDB, MongoDB o Apache Jackrabbit).

Pero no todo es tan bueno como parece, empezando por el nombre que han elegido para el movimiento: debería ser algo más como Not Only SQL, ya que estos nuevos sistemas de bases de datos no nos valdrán para solucionar cualquier problema: habrán casos que necesitemos obligatoriamente relaciones.

Además nos encontramos con que el SQL, que más o menos nos sirve para entendernos con cualquier modelo relacional (aunque en la práctica usamos un API, y no SQL directamente, como por ejemplo JDBC en Java, DBI en Perl o PDO en PHP), ya no es el lenguaje franco para hablar con la base de datos, y corremos el riesgo de perder la independencia de la capa de negocio que buscamos en un diseño modelo-vista-controlador.

Pero en general me parece una idea genial, para los casos en los que nos ayude a resolver el problema que tenemos entre manos.

Por ejemplo, en ln.usebox.net podríamos haber usado un sistema de bases de datos no relacional, ya que empleo un modelo de datos realmente simple sin relaciones (bueno, una URL puede tener un Alias; pero es una relación 1:1 como máximo); así que podría estar usando ya mismo un almacenamiento en la nube (como el SimpleDB de Amazon), lo que hubiera permitido escalar horizontalmente sin que nosotros hubieramos tenido que hacer nada (salvo pagarle a Amazon cuando toque :D).


Instalando CentOS desde DVD sobre NFS

Este lunes que viene tengo que dar la primera clase de un curso de administración de sistemas Linux. He decidido centrame en la estrategia RHEL (soporte de largo recorrido, y de pago), CentOS (soporte de largo recorrido, comunidad) y Fedora (soporte de corto recorrido, pero con funcionalidades punteras).

Básicamente trabajaremos con CentOS como distribución para servidores estable (con Red Hat Enterprise Linux como contrapartida con soporte de pago), y Fedora como distribución de escritorio con todo a la última.

El problema que se me planteaba para hacer la práctica de la instalación es que CentOS no tiene un instalador con un solo CD, y distribuir el DVD por todos los puestos es un incordio.

Normalmente suelo hacer las instalaciones en red, arrancando con la versión mínima de net-install, pero con tantos puestos y sin garantías de la calidad de la conexión a Internet, no podía arriesgarme a que todas las máquinas compitieran por el ancho de banda y se nos fuera el tiempo tontamente.

Así que voy a poner el DVD accesible vía NFS, y que hagan la instalación en red vía red local ;).

Serviré el DVD desde mi escritorio (una Ubuntu, para el caso es lo de menos). Instalo fácilmente el servicio NFS con:

$ sudo aptitude install nfs-kernel-server

Eso tirará de dependencias para todo lo necesario.

Montamos la ISO:

$ sudo mkdir /CentOS_NFS
$ sudo mount -o loop CentOS-5.4-i386-bin-DVD.iso /CentOS_NFS

Ahora editamos /etc/exports y añadimos:

/Centos_NFS/ *(ro,insecure,all_squash,no_subtree_check)

Ejecutamos lo siguiente para que se publique el contenidos compartido:

$ sudo exportfs -a

Con exportfs sin parámetros podemos ver que todo ha ido bien (ojo que estamos compartiendo a todo el mundo, para nuestros objetivos es correcto, pero en determinados entornos quizás no es buena idea :P).

Ahora solo hay que arrancar una net-install de CentOS y configurar adecuadamente la instalación por NFS:

Configuración CentOS NFS
Solo hay que indicar nuestra dirección y el directorio

De esta forma todas las máquinas del laboratorio podrán instalar en red, pero de forma local y usando el DVD como fuente.

Instalando CentOS sobre NFS
Se instala como si fuera local

La instalación se realizará normalmente, y nos hemos ahorrado copiar una imagen ISO de un DVD en todas las máquinas.

Una de las cosas que más me sorprendió cuanto hice el fasttrack para la certificación RHCE fue precisamente esto, aunque tampoco es tan mágico en realidad ;).


¡Fedora 12 Release Party en Valencia!

Vamos de experimento, porque ya sabéis que por aquí se organizan pocas cosas (quizás aforismo de nada), así que vamos a intentar ponerle remedio (algo así como lo de la BarCamp Valencia :P).

Esta vez se trata de reunirnos con motivo de la próxima versión de Fedora (12, nombre clave Constantine), que si no pasa nada será pública el próximo día 17 (estoy en la lista de QA, y por ahora vamos en tiempos :D).

¿En qué consiste una release party? Bueno, hay muchas formas de enfocar el evento: dar charlas, hacer instalaciones, revisar las nuevas características, ... o simplemente quedar a tomar algo y charlar sobre Fedora, Linux y Software Libre en general; que es la modalidad que he elegido para esta primera prueba.

Tienes más información en la entrada del wiki de Fedora (y además hay un cartel, por si quieres ayudar a difundir el evento localmente). Será el viernes día 20 de Noviembre en el pub Black Sheep de la Plaza de la Puerta del Mar, en Valencia, a partir de las 21:00h.

Si te quieres pasar a tomar algo y a charlar un rato, serás bienvenido (¡aunque no uses Fedora!).

Acualización: se ha retrasado la hora de inicio a las 21:00h.


Visita a Londres

El próximo viernes cogeré un vuelo de Valencia a Gatwick, para pasar unos días en Londres.

Se trata de una alternativa a ir a Plymouth otra vez, porque hay mala combinación desde Valencia, sobretodo ahora que EasyJet está con el programa de invierno y dejan solo un vuelo semanal a Bristol. Se puede ir, pero tienes que quedarte allí una semana o volver combinando con Londres, por ejemplo... que no sale nada económico :(.

Como Alex sí tiene vuelos a Gatwick desde Plymouth, hemos decidido pasar juntos el fin de semana en la capital inglesa, que no hemos visitado hasta ahora ninguno de los dos.

La verdad es que hay muchas cosas para ver y muy poco tiempo, así que haremos lo posible. Ella tiene que dar clase de nuevo el lunes, pero yo tengo vacaciones... así que estaré un par de días más por allí :).

Si alguien lee esto y quiere quedar a tomarse una pinta o algo, tiene de tiempo hasta el próximo viernes para enviarme un correo electrónico :P. Es poco probable, pero nunca se sabe.

Actualización: ya he subido algunas fotos (bueno, todas en realidad :D).


Adivina la canción

Hace mucho mucho que no hago una edición de adivina la canción, en formato original.

El año pasado hice algún directo, pero este año la verdad es que, por una cosa u otra, he dejado de hacerlo.

Resulta que ayer el amigo r0sk preguntaba por el 'adivina la canción' (porque él mismo está aprendiendo a tocar la guitarra, creo :D), y solo entonces me di cuenta de que efectivamente estoy tocando menos (¡y además poco!), porque este año habré grabado un par de canciones solamente :(.

Así que aquí tenemos nueva convocatoria, bastante básica, que la he grabado como un directo con guitarra eléctrica y una sola voz. Afortunadamente la canción es lenta (y algo pastelosa), y la voz no muy aguda (para lo que es habitual en el cantante original), así que no me he desgañitado como de normal :P.

El grupo no deja de sorprenderme con cada disco, porque ¡siempre me gusta todo lo que hacen! En normal que las bandas evolucionen, pero no siempre queda tan claro que vayan a mejor :P.

Así que ya saben: la canción y, si tienen a bien, título de la canción, grupo y voz original, en los comentarios.

El premio al ganador, un buen puñado de /dev/null, que está en su mejor momento en esta época del año ;).


Sin noticias de Gurb

No es la primera novela que leo de Eduardo Mendoza, en el instituto leí El misterio de la cripta embrujada, y me gustó bastante (para ser un libro de esos que te obligan a leer :D).

Pues casi se repite la historia, porque esta vez ha sido un regalo, que sin ser el mismo tipo de obligación, si tiene algo de compromiso después de todo :P (ojo, que quiero que me regalen más, que no se tome este comentario como lo que no es).

Como El misterio..., es una novela llena de humor, aunque al principio no me terminaba de encajar, tras unas 100 páginas ya ha conseguido hacerme reír (a base de insistir, claro).

El argumento es relativamente sencillo: el protagonista y su compañero Gurb, dos extraterrestres, aterrizan en el planeta Tierra (en realidad lo hacen en Barcelona), y Gurb desaparece. Así que el libro es un descubrimiento de la sociedad urbana barcelonesa de principios de los 90 con la excusa de la búsqueda de Gurb.

Y ahí acaba la sencillez, empezando por el formato (son anotaciones cortas ordenadas cronológicamente, a modo de bitácora de viaje), y acabando por el humor y el ritmo.

Al principio creo que Mendoza abusa del absurdo, y se me ha hecho un poco difícil seguir, porque el libro en realidad no tiene trama (el extravío de Gurb es una excusa, sin más), pero creo que con la comprensión del personaje de lo que le rodea, la novela se vuelve más asequible.

No recuerdo en qué bitácora leía que su autor lo había leído como práctica de español, y lo recomendaba por ser un libro entretenido. Es posible que por el formato poco convencional sea fácil de leer poco a poco, pero han habido partes de la narración que no he podido dejar de reírme el doble pensando que alguien podría estar practicando su español con eso :D.

Una cita:

15.15   Me como los diez kilogramos de churros que me he comprado. Me gustan tanto que, acabado el último, me como también el papel aceitado que los envolvía.

16.00   Tendido en la cama y con la vista clavada en el techo, del que cuelgan varias arañas grandes como melones, pienso en mi vecina. Por más que me devano los sesos (que no tengo), no doy con la forma idónea de abordarla. Llamar a su puerta e invitarla a cenar no me parece prudente ni oportuno. Tal vez la invitación debería ir precedida de un obsequio. En ningún caso debo enviarle dinero, pero, si a pesar de todo decidiera enviárselo, mejor en billetes de banco que en monedas. [...] Es muy probable que le gusten las flores y los animales domésticos. Podría enviarle una rosa y dos docenas de dobermans.


Otro año más

Se me ha vuelto a pasar, pero no tanto como el año pasado :P. Cuando acierto con el día, como hace un par de años, bien... sino ya sabemos que no tiene importancia.

Como viene siendo habitual, cifras: 6 años de bitácora (esto no falla, cada año es uno más), 1260 anotaciones, 2525 comentarios, 55 trackbacks, con poco más de 1300 visitas el mes pasado. Lo de las visitas es casi como lo de acordarse del día del aniversario del blog, que importa poco :P.

La verdad es que ya tengo datos para poner una gráfica de colores, y por un momento he pensado no hacerlo, pero qué demonios :).

Publicación en Blackshell

Bueno, creo que la gráfica está clara, así que no me extenderé demasiado en las conclusiones. Creo que más o menos le ha pasado a todo el mundo que empezó con esto al mismo tiempo que yo, y a algunos les ha ido peor. No nos quejemos.

Aún así este ha sido un buen año, he retomado un poco la ilusión por muchas cosas, y he re-enfocado otras muchas. No se refleja demasiado en esa gráfica el global, porque sumando el otro blog, creo que he remontado bastante... quizás a niveles de hace un par de años.

Sea como sea, aquí seguimos. Tengo pendiente cambiarle los ventiladores a blackshell, que se está portando como un machote, y espero que por unos cuantos años más ;).


Buscando un entorno para programar en Perl

Ahora mismo estoy usando Gedit, que en general se porta bien, salvo algunas cosas que no tiene y echo mucho en falta (bookmarks, poder partir la ventana en varios documentos, folding, ayuda contextual, ¿refactorización?, y ya que estamos una forma cómoda de leer la documentación :P).

Gedit
Ahora mismo me apaño con Gedit

Hay bastantes plugins para Gedit, pero después de probar varios he desistido... inestabilidades y no he conseguido lo que buscaba.

Siempre he sido muy de vi (más que de vim), pero para proyectos de un tamaño con varios ficheros no me resulta cómodo (¡me hago mayor!).

Las mejores opciones son:

  • EPIC: convierte a Eclipse en un editor Perl bastante potente, con el problema de que Eclipse en sí mismo es muy pesado, y no me termino de atrever con el portátil que tengo (un Centrino con 1GB de RAM, con más de 3 años ya).
  • Padre: sería el editor de Perl, sin duda. La pega que le he encontrado (porque sino no estaría escribiendo esta anotación :D) es que Fedora empaqueta la 0.32, y ahora mismo el proyecto va por la 0.48. No es terrible, pero sí importante... porque es un proyecto que lleva un ritmo de desarrollo trepidante y lo interesante es disfrutar de las últimas características.

Así que creo que voy a probar con Padre, aunque no sea a la última, y luego veremos si me da más que Gedit (que ahora mismo brilla por ser ligerísimo, claro).

No obstante, y aunque he buscado, si alguien tiene alguna sugerencia... específica para desarrollar en Perl, se agradecen los comentarios :).

Actualización: casualmente, Gabor Szabo está haciendo una encuesta sobre el tema, y va ganando vim con más de un 30%. ¿Cómo? Pues con algunos plugins. Parece que me gusta.

Actualización 2: pues sí, vim con algunos extras es una buena solución. Hay que cambiar algo la forma de trabajar, basada más en funciones que en ficheros, y realmente es cómodo y rápido.


¿Qué OpenOffice.org usas?

Descargas de OOo

Hace un par de semanas tuve un reunión para un proyecto en el que se está valorando introducir OpenOffice.org en un cliente de cierto tamaño.

En una primera fase se están haciendo pruebas sobre Microsoft Windows para ver compatibilidades con documentos generados por sus aplicaciones, que en muchos casos van dirigidos a los productos la suite ofimática de Microsoft (cuando no requieren específicamente de una de estas aplicaciones instaladas :o).

Entonces les recomendé que probaran la versión Go-oo de OpenOffice.org, que probablemente les aportaría ventajas en las pruebas. Evidentemente no lo conocían.

Esto me lleva a esta estadística de las descargas de OpenOffice.org (vía feliz cumpleaños OOo), que viene a confirmar lo que comentaba en la reunión: la versión de OOo oficial se usa mayoritariamente en Windows.

Es decir, que los usuarios de Linux usan lo que empaqueta su distribuidor, como es de esperar, y resulta que los distribuidores no empaquetan siempre el OOo que podemos encontrar en la página del proyecto.

Si consultamos la página de descargas de Go-OO veremos como las principales distribuciones empaquetan este sabor del producto y no el que mayoritariamente descargan los usuarios de Windows desde openoffice.org (hay excepciones, como Fedora intentando ceñirse a la versión de upstream, menos por todos los parches que añaden :D). Curioso, ¿verdad?

Siempre digo que los distribuidores sólo empaquetan software, y que no hay gran diferencia entre distribuciones que empaquetan lo mismo. Bueno, a grandes rasgos sigue siendo cierto cuando realmente empaquetan lo mismo :P.


Visita a Plymouth

En unos minutos salgo de casa destino a Plymouth (UK). Será un viaje largo, porque resulta que no llegan allí vuelos internacionales, así que me toca hacer lo siguiente:

  • Porque en realidad no salgo de Valencia; tengo que pillar metro desde Rocafort: 45 minutos, con dos lineas.
  • Volaré desde Valencia hasta Bristol, que es el lugar con aeropuerto internacional que queda más cerca del destino final.
  • Allí tendré que esperar unas 5 horas a que salga mi avioncito que me llevará cual autobús de linea al aeródromo de Plymouth.
  • El aeródromo no queda lejos de Plymouth, así que un taxi y en 10 minutos... ¡llegada!

Realmente un viaje pesado, pero en realidad no es largo si pensamos que en desplazamientos dentro de la península muchas veces hay que pasar por Madrid, y un Bilbao → Alicante se me montaba fácil en 6 horas de viaje, mas tiempos para llegar/volver de los respectivos aeropuertos.

En fin, vamos a aprovechar que el mundo es cada vez más pequeño ahora que estamos a tiempo. Haré fotos, por supuesto ;).

Actualización: aprovechando que en el aeropuerto de Bristol hay Internet gratis gracias al SubWay (el fast food, no el otro), aquí están las fotos de viaje. No son muchas, ni las he subido ahora, pero valga esta actualización como aviso :D.