La Coctelera

SciFish.

Explicaciones y refutaciones en un mundo que pasa.

31 Enero 2006

Lo que Sql ha hecho mal.

Sql es el lenguaje básico de consultas a bases de datos relacionales. Y no está mal para ser un lenguaje al que tildan de declarativo.

Hasta ahora bien, por cierto, ¿sabéis quién ganó el premio O'Reilly y Google al mejor software de fuente abierta en 2005?.

Pues fue ni más ni menos que sqlite, que, puestos a mencionar, hay que decir que tiene unos excelentes bindings a tcl, su (meta)lenguaje interpretado favorito.

No en vano, DRH (D. Richard Hipp) es un auténtico fiera del tcl como podréis comprobar si os asomáis a los foros y al wiki.

Quizás la cita más famosa del mundo del tcl sea la de que everything is a string (o si no es un string tiene una representación que sí lo es).

Y todo esto venía a colación porque una de muchísimas cosas interesantes que encontraréis en las páginas de sqlite es la siguiente declaración:

Manifest typing

Most SQL database engines use static typing. A datatype is associated with each column in a table and only values of that particular datatype are allowed to be stored in that column. SQLite relaxes this restriction by using manifest typing. In manifest typing, the datatype is a property of the value itself, not of the column in which the value is stored. SQLite thus allows the user to store any value of any datatype into any column regardless of the declared type of that column. (There are some exceptions to this rule: An INTEGER PRIMARY KEY column may only store integers. And SQLite attempts to coerce values into the declared datatype of the column when it can.)

The SQL language specification calls for static typing. So some people feel that the use of manifest typing is a bug in SQLite. But the authors of SQLite feel very strongly that this is a feature. The authors argue that static typing is a bug in the SQL specification that SQLite has fixed in a backwards compatible way.

Fijáos que en el segundo párrafo apunta a algo que Sql ha hecho mal en la opinión de los desarrolladores de sqlite.

Y definitivamente he tenido que darle la razón a DRH et al cuando me he encontrado que tenía que leer cosas en bloque como texto de un Excel y tener que desmenuzarle los tipitos a Oracle.

Me parece que todos las comprobaciones de tipos del mundo, esas que parece nos prometen la máxima seguridad en el manejo de nuestros datos, están en cualquier lenguaje para ser violadas. Ya sea con los apropiados casts o de formas más salvajes.

E indeleble al ser humano, creo que siempre encontraremos la manera de necesitar esas excepciones, como cuando en series temporales necesitamos marcar algún dato como desconocido.

Por eso, y por la inherente belleza del paradigma propuesto por tcl y apoyado por sqlite, creo que DRH tiene razón y definitivamente algo había mal pensado en Sql.

Que no está mal para ser declarativo.

servido por scifish 2 comentarios compártelo

2 comentarios · Escribe aquí tu comentario

_gAñaN

_gAñaN dijo

Muy buena reflexion. Son restricciones que francamente estorban y que los nuevos lenguajes radicados en la filosofia de lo simple logran solucionar.

Me parece extraño el fenomeno que ocurre cuando materializamos ideas en el mundo de lo "visible" (appendix..ver matrix). Tardamos más diseñando la logistica y el "medio ambiente" encargado de mantener viva (a veces obesa) a nuestra idea, que diseñando la idea como tal. Esto tiene un homologo muy conocido en nuestro planeta, se llama "Oracle".

Es un poco lo que ocurre con sistemas de informacion tan (aparentemente) completos como Oracle, el esfuerzo por desarrollar lo que en principio es la "idea", desemboca en un restrictiva y compleja mole de codigo que en ultimas frena el desarrollo en lugar de mejorarlo.

Animo con esos Blogs.. viva el open source..

Jejejejeje si te digo que todo se resume a 20 o 30 comandos (quiza menos si se trata de arquitecturas RISC).. programarias todo el dia en Assembler ?.. :-D .. te dejo con la duda .. Abrazos

1 Febrero 2006 | 12:19 PM

jima

jima dijo

La verdad es que muchos proyectos acaban engordando de forma imprevista, especialmente cuando su posible evolución no es tenida en cuenta.

Por cierto, no son 20 o 30 comandos, son los 8 de Brainfuck, el lenguaje Turing completo más compacto que conozco.

Pero te aseguro que el lenguaje hace honor a su nombre y por ello prefiero el alto nivel del assembler.

1 Febrero 2006 | 12:32 PM

Escribe tu comentario


Sobre mí

Desde los tiempos de Automática me llaman jima porque jima is my acronym...

Algún día seré totalmente real, por el momento tengo una mitad siempre en el futuro, como la tortuga y Aquiles.

email me

under construction...

Creative Commons License
Subscribe with Bloglines
EOF

Últimos comentarios

Fotos

scifish todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera