Sunday 4 October 2009

class_SRR_database_sim :: mi base de datos en PHP

Hacía mucho tiempo que quería compartir con vosotros mi "clase de base de datos" que llevo trabajándome en PHP desde hace ya 3 años largos! La idea nació de la necesidad de almacenar información para una aplicación web de un amigo sin poder usar MySQL ni otro tipo de base de datos tradicional, porque su plan de hosting era el más básico :S

Por fin, después de este tiempo, la base de datos ya está más o menos madura como para compartirla con otros. Lo que más me ha costado es darle propiedades de no "corruptibilidad" por coincidencia de dos threads PHP sobre la misma tabla de datos. Es decir, que ahora por fin la base de datos bloquea el acceso de lectura/escritura cuando algún "thread" está ESCRIBIENDO sobre alguna tabla. De esta forma no puede ocurrir que alguien empiece a leer una tabla cuando alguien la tiene a "medio escribir". Lo cuál aunque parezca muy improbable, empieza a volverse probable en cuanto la base de datos aumenta de tamaño ;)

Queda mucho por hacer, así que la he colgado como proyecto opensource en INDEFERO. Aquí tenéis los enlaces:

[DEMO] http://imasdeweb.com/opensource/php_SRR_database_sim/demo

[HOMEPAGE] http://imasdeweb.indefero.net/p/class-SRR-database-sim

[DOC] http://imasdeweb.indefero.net/p/class-SRR-database-sim/doc

Sois programadores y ya sabéis que cualqueir software siempre es mejorable, pero en fin, si no publico nunca ninguna versión el progreso de la misma irá tan lento como hasta ahora. Y confío que ahora una vez que alguien empieza a descargarla y usarla pueda tener feedbacks constructivos :))


Resúmen de características

  • No requiere en el servidor más que tener PHP instalado
  • Para empezar a usarla solo hay que copiar el directorio de la base de datos en donde más te convenga y tantas "instancias" como quieras.
  • Ocupa muy poco. Estando vacía menos de 50kb.
  • Lleva un archivo admin3.php al que puedes llamar para gestionar tu base de datos de forma básica online (al estilo phpmyadmin pero muuuuuho más humilde, jejejeje).
  • Los registros de cada tabla se almacenan en un archivo de texto plano en el mismo directorio, con lo cuál solo necesitas darle permisos de escritura al directorio ;)
  • La clase ofrece toda una serie de sencillos métodos del tipo: crear/modificar/eliminar tabla y crear/modificar/seleccionar/eliminar registros
  • Los campos de cada tabla pueden contener ilimitados caracteres (olvídate por fin de definir tipo y longitud de campo).
  • Las consultas (o "queries") no se escriben como en SQL en una cadena de texto y un chingo de comillas, sino que son llamadas parametrizadas usando siempre arrays ;)
  • Hacer un backup o migrar a otro hosting es tan fácil y rápido como "copiar y pegar el directorio"
  • Como no es necesario ejecutar un segundo servidor (por ejemplo el de MySQL) sino solamente leer y escribir en archivos de texto plano desde el PHP, la velocidad de respuesta es rapidísima (comparada con MySQL) para tablas con menos de 5.000 registros

Cosas que no tiene

  • índices
  • vínculos entre tablas
  • (un montón de cosas... jejejeje)

En fin, espero que lo pruebes y me digas qué te pareció. Y bueno, si además eres programador... bueno, una ayudita estaría genial!!! Sinceramente, aunque nadie más ponga ni una línea de código en este proyecto, ya estoy muy contento de compartir por primera vez algo realmente mío :)))) le debo tanto a la comunidad de programadores en general... !!!! me siento bien retornando algo de mi parte.

Por cierto, esta clase de base de datos es la que utilizo como pilar de mi CMS, el cuál llevo construyendo y utilizando desde hace también 3-4 años! muy prontito también lo publicaré como opensource, porque considero que a alguien le puede ir bien. Un CMS más, verdad?! jajajaja... pero en fin.. no os lo creeréis, pero ninguno de los CMS que habían en aquel entonces me venían bien! o eran muy complicados para el programador (si necesitaba hacer cambios en la funcionalidad del mismo) o bien tenían un panel de administración bastante complejo para el nivel de mis clientes. Conclusión: acabé programando mi propio CMS. La ventaja: si necesito cualquier cambio lo tengo en un instante. Y si aparece algún bug, enseguida sé de dónde viene ;)

Websites funcionando que usan mi CMS y la susodicha base de datos

Para que veáis que tanto la base de datos como el CMS funcionan a las mil maravillas, aquí os dejo el enlace a unas cuantas de mis páginas que los usan. Y las dos primeras os puedo asegurar que tienen tablas con más de 1.000 registros!

Un saludo!!
SERGI


Actualizaciones posteriores
  • versión 3.2 (3-NOV-2009): se corrigió un error en el método de DELETE_TABLE, y se añadieron unos archivos (test.htm y test.php) para hacer benchmark de acceso simultaneo desde diferentes navegadores (solo para uso de desarrollo de la clase).

  • ...

  • versión 5.0 (17-FEB-2011): nuevas funciones de IMPORTACIÓN/EXPORTACIÓN de tablas (internamente, para cambios de versión de la clase o para migrar datos de un site a otro, etc); nuevas funciones de REGISTRO (o LOG) de escritura y/o lectura! (útil para debugeo de vuestra aplicación web: conocer qué operaciones se han estado realizando y cuando, y cuánto tiempo llevaron. Más adelante le añadiremos funciones de recuperación de datos)

  • para seguir la evolución del proyecto, mejor es visitar el LOG oficial del mismo: en INDEFERO