jueves, 3 de febrero de 2011

El movimiento NOSQL


El movimiento NOSQL (Not Only SQL, que no se confunda como una negación de SQL o un movimiento antiSQL) surge de la necesidad de almacenar datos de forma distinta a la que nos proporciona una base de datos relacional. Las bases de datos relacionales siguen el modelo relacional de creado por Codd en los 70 que se fue afinando en los 80. La verdad es que es un sistema que funciona bien, pero que no se adapta muy bien con el paradigma de orientación a objetos. Para paliar esto, surgieron nuevos modelos post-relacionales como es el de las bases de datos orientadas a objetos (Caché, de Intersystems). Además, últimamente están apareciendo nuevas necesidades, como la de almacenamiento masivo para cálculo (DataWareHousing), adaptada a redes sociales (Bases de datos estructuradas en grafos), para cálculo masivo (Map/Reduce), etc. Muchas de ellas no son ACID, ya que están orientadas a otros usos que no son el transaccional.

De este modo, han salido una serie de implementaciones de distintas alternativas al modelo relacional. Cada una tiene sus ventajas y sus inconvenientes. Las primeras que se me pasan por la cabeza son: redis, riak, hbase, membase, cassandra, mongodb, couchdb, ravendb, neo4j... Hay algunas comparativas: aquíaquí...

Tienen que ser realmente útiles cuando se están usando en entornos de producción (Facebook, SourceForge, ebay, Amazon, Google, Apple y otros grandes están usando este tipo de tecnología). Pero como todo, dependen del proyecto y de sus necesidades. No hay nada que siempre sea la solución ideal.
 
En breve tengo pensado introducirme en algunas de ellas y os iré comentando mi experiencia.

miércoles, 10 de noviembre de 2010

Tamaño de los tipos base

A veces, sobre todo cuando se programa a bajo nivel, importa saber cuál es el tamaño de los tipos base de un sistema. Para ello, podemos hacer un pequeño programa en C:


#include
#include
int main(int argc, char* argv[])
{
printf("Platform v1.0 (c) 2010 Arnau Oncins Rodríguez\n\n");

// Tamaños de tipos
printf("Tamaños de tipos: \n");
printf("\tTamaño de long: %ld \n", sizeof(long));
printf("\tTamaño de int: %ld \n", sizeof(int));
printf("\tTamaño de short: %ld \n", sizeof(short));
printf("\tTamaño de long long: %ld \n", sizeof(long long));
printf("\tTamaño de char: %ld \n", sizeof(char));
printf("\tTamaño de unsigned int: %ld \n", sizeof(unsigned int));
printf("\tTamaño de unsigned long: %ld \n", sizeof(unsigned long));
printf("\tTamaño de float: %ld \n", sizeof(float));
printf("\tTamaño de double: %ld \n", sizeof(double));

// Rangos de valores
printf("\nMáximos y mínimos: \n");
printf("\tint: [ %d , %d ] \n", INT_MIN, INT_MAX);
printf("\tlong: [ %ld , %ld ] \n", LONG_MIN, LONG_MAX);

return 0;
}


Este código mostrará por pantalla algo parecido a ésto:

nauar@tulkass:~$ ./platform
Platform v1.0 (c) 2010 Arnau Oncins Rodríguez

Tamaños de tipos:
Tamaño de long: 8
Tamaño de int: 4
Tamaño de short: 2
Tamaño de long long: 8
Tamaño de char: 1
Tamaño de unsigned int: 4
Tamaño de unsigned long: 8
Tamaño de float: 4
Tamaño de double: 8

Máximos y mínimos:
int: [ -2147483648 , 2147483647 ]
long: [ -9223372036854775808 , 9223372036854775807 ]


Como podéis observar, con este sencillo código ya podemos ver cuántos bytes ocupan los tipos base de un sistema.

Bienvenida

Hola a tod@s y bienvenid@s a mi blog. Me llamo Arnau, tengo 28 años, soy ingeniero superior en informática y pretendo tratar temas de informática de cualquier ámbito. "Cutreconlogía" no es un blog que se vaya a actualizar muy a menudo. Es más, lo usaré más bien a modo de cuadernillo, como los estudiantes que van a clase, para tomar nota de las distintas tecnologías y metodologías que aprendo en esta rama. Sentiros libres de comentar, leer y corregirme, aportaréis valor añadido y nos enriqueceremos todos.

La nave despega ya...