miércoles, mayo 23, 2007

Sqlite vs Mysql

Hace años escuche de SQLite, pero no le di importancia, no crei que fuera necesario tener que aprender a usar otra base de datos mas. Pero me llamo mucho la atencion la noticia de que pensaban usarlo en Firefox para manejar su informacion.

  • Un SQL para Firefox?
La pregunta era el PORQUE, asi que me puse a indagar y me di cuenta que mi recien instalado XAMPP viene con el SQLite preinstalado. Así que ahorrandome el tiempo de instalacion y configuracion, abri mi editor de textos y traté de domar este nuevo juguetito.

Resulta que el SQLite es una libreria que nos ayuda a tener las bondades de una base de datos relacional en nuestras aplicaciones, y usando SQL!!! El SQL es tan parecido al de MySQL que migrar a SQLite fue realmente facil. Y ES DEL DOMINIO PUBLICO! nada de GPL ni nada de eso, es completamente gratis! Puedes escribir aplicaciones cerradas y no tienes que ajustar cuentas con nadie.

Algo muy notable es que todos los datos, sus tablas y vistas, pueden quedar guardados en un solo archivo local, puede estar incluso hasta entre los archivos del programa. Las librerias de SQLite se encargan del trabajo sucio, manejar todos los datos en este archivo.

No tienes que lidiar con contraseñas, ni conexiones al internet, ni limitaciones en cuanto a cuantas DBs puedes tener. Incluso hasta los respaldos de las aplicaciones enteras se facilita ya que programas y datos pueden estar en las mismas carpetas, ya no tendrias que hacer mas dumps de la DB.

Lo unico en lo que quizas batalles sea en el soporte de SQLite para tu sitio WEB, pocos hostings lo soportan y realmente se reusan a instalar las librerias requeridas (para en caso de que pienses usarlo en PHP o en Perl). En linux si acaso con lo que has de batallar es con los permisos, pero eso lo puedes hacer literalmente hasta con los ojos cerrados ;)
  • Pero obvio no es para todo mundo
Mysql es un servidor robusto, que puede tener centenas de conexiones al mismo tiempo y es capaz de hacer modificaciones casi simultaneas en un santiamen. Para usarlo tienes que conectarte a él por tcp/ip, incluso hasta si lo tienes en la misma computadora que el programa. Puedes manejar bases de datos que rondan por los terabytes, aun cuando lo que el servidor te responda mida menos de 100Kb.

Fue optimizado para eso y es por eso que nos gusta. Muchas veces las modificaciones en Mysql no llegan a tocar el disco duro sino hasta despues de unos segundos... se quedan en memoria hasta que vea que ya no son necesarios. Ademas, al tener las tablas en distintos archivos puede manejar modificaciones simultaneas sin preocuparse por corromper los datos.

Todo esto no es tan posible en el SQLite. SQLite no deja de ser un manejador de archivos, y el talon de aquiles de todo manejador son las modificaciones simultaneas. Cuando se intentan realizar modificaciones simultaneas en SQLite, el primer proceso bloquea la base de datos, evitando cualquier otra modificacion, y se la libera al siguiente proceso solo hasta al terminar. Ademas, el archivo entero solo puede llegar a medir 2 Gigabytes, y si lo intentas accesar desde otra aplicacion en internet, mas te vale que uses webservices, o tendras que descargarla entera!

  • Te iras dando cuenta que son animales completamente distintos.
Y sin embargo, mas del 90% de las aplicaciones que quedan dentro de las capacidades de SQLite actualmente utilizan Mysql. Bases de datos de menos de 20 megas que son leidas millares de veces y que son actualizadas si acaso unas decenas de veces al dia. Cuantos foros, blogs, portales, y aplicaciones de escritorio no caben dentro de estas necesidades!

Me ha tocado hacer respaldos de foros que llevan años en linea, con centerares de usuarios y la DB no llega ni a los 5 megas!!!

  • A resumidas cuentas.
SI, Empezaré a usarlo, empezaré a migrar mis aplicaciones y empezaré a presionar a mis hostings que lo utilicen. De plano hay mucho que ganar y poco que perder.

En cuanto vea que tan estable es, le pedirle a mis patrocinadores que me patrocinen un proyecto con SQLite para ponerlo a prueba en las aplicaciones pesadas.

En la UNI ya empezamos a organizar cursos, veré si podemos poner algunos ejemplos de su uso en PHP. Por lo pronto seguiré jugando con ella. >:)

  • Un ejemplito en PHP
Jajaja puse un ejemplo de como se manejaban ambos, pero el editor del blogger hizo todo un berrinche, ni pex, luego les paso los links de lo que hagamos en la uni.


En un futuro cercano (PHP5) el PDO será tan comun y necesario como el ODBC o el ODBC, y podremos cambiar de motor de base de datos a placer :)

Por lo pronto los dejo que ya hace sueño :D

Cuidense raza!

6 comentarios:

rgz dijo...

Cabe mencionar que nada te impide hacer aplicaciones cerradas en MySQL o PosgreSQL, solo, no puedes modificar la base de datos en si Y LUEGO distribuir la base de datos modificada.

Tu deberías saber esto mejor que nadie.

SQLite tiene un muy robusto sistema de permisos ¡el de Linux! :P

Pero en si es mas bien para aplicaciones independientes. Un ejemplo donde SQLite brilla actualmente es en AmaroK, donde toda la playlist se guarda y se maneja con SQLite.

Anónimo dijo...

Hola

Yo administro un servidor de hosting compartido chileno, vere si instalo SQLite en el :D

Buen post
Saludos

Anónimo dijo...

Personalmente, el único motivo por el cuál utilizo SqLite en detrimento de MySql es simplificar la instalación de aplicaciones monousiario de escritorio y reducir de paso las incidencias derivadas del uso de TCP/IP. Para cualquier aplicación mínimamente relacionada con los conceptos multipuesto, protección de datos o estabilidad uso MySql.
Saludos

Anónimo dijo...

SQLite no es un sistema gestor de bases de datos relacionales como lo puedan ser MySQL, Oracle o MS-SQLserver. SQLite es un fichero relacional, que mediante los drivers o conectores oportunos se le pueden lanzar consultas SQL. En ningun caso es adecuado para sustituir a ninguno de los antes mencionados.

Unknown dijo...

La gasolina de automóvil es solo para automóvil y la de avión es solo para avión. Yo trabajo en PostgreSQL y es un excelente manejador. También he trabajado con Oracle, MySql y otros grandes ligas! pero SQLite es una herramienta diseñada para un propósito muy especifico. El desarrollo de aplicaciones mono usuarios ligeras. como un buscador de registros que trabaje con la DB dentro de un CD y cuya instalación deba ser lo mas autónoma y sencilla posible. y en este tipo de aplicaciones los grandes ligas no tienen cabida. solo SQLite, el Access y los antiguos DBF son los reyes!

Anónimo dijo...
Este blog ha sido eliminado por un administrador de blog.