¿SQL vs. NoSQL?

¿SQL vs. NoSQL?

Reflexiones
Se escucha mucho últimamente que SQL pasó de moda, que hoy lo cool es usar NoSQL (MongoDB, CouchDB, etc...) pero... ¿es siempre así? Empecemos por entender qué es una base de datos NoSQL (formalmente no estoy muy convencido de que un almacenamiento que no respete las reglas ACID pueda llamarse base de datos, pero bueno... como para no entrar en más de una discusión a la vez, digamos que sí). De lo que estamos hablando es de un medio de almacenamiento no estructurado, comúnmente conocido como base de datos documental. Más allá de las formalidades (los registros de la base de datos relacional se llaman documentos en una base NoSQL, las tablas pasan a ser colecciones, etc..), existen diferencias muy concretas: Los documentos no tienen estructura (Pueden guardar literalmente cualquier cosa) No existen…
Leer más
Cómo evitar la inyección SQL  en PHP

Cómo evitar la inyección SQL en PHP

Cómo hacer para...
Uno de los fantasmas más temidos por quienes contratan servicios de desarrollo (especialmente cuando se trata de su primera experiencia) es el de los ataques de hackers. Si bien es imposible asegurar al 100% un sistema (de software o de cualquier otro tipo), existe una serie de buenas prácticas que disminuyen sensiblemente la probabilidad de ocurrencia de tales ataques (o al menos, su probabilidad de éxito). Por lo general, los ataques se basan en la explotación de código vulnerable como ser algún caso raro que el desarrollador no tuvo en cuenta. Uno de los ataques más usuales es el conocido como sql injection. De lo que se trata es de ejecutar código sql sin autorización. Los scripts de PHP que no están bien escritos pueden ser atacados de esta forma. Veamos un ejemplo: <?php $sql…
Leer más
Cómo conectarse a bases de datos distintas de MySQL desde PHP

Cómo conectarse a bases de datos distintas de MySQL desde PHP

Cómo hacer para...
Si bien es casi una redundancia hablar de PHP+MySQL (Algo así como GNU y Linux), la realidad es que esta santa asociación es casi casual. En PHP no existe un motor de base de datos preferido y otros de segunda. No voy a decir que PHP puede conectarse a cualquier motor de bases de datos (Habiendo pasado por la FCEyN aprendí bien a no usar los absolutos con ligereza :)), la realidad es que puede conectarse, de forma muy simple, a una amplia cantidad. A su vez, las opciones son varias, dependiendo principalmente del nivel técnico de quien deba implementar la solución. Paso a explicar: En el escalón más bajo están las funciones propias de php para realizar las conexiones: mysqli_connect para MySQL pg_connect para PostgreSQL sqlsrv_connect para Microsoft SQLServer Y un largo etcétera (Si tenés que conectarte…
Leer más
Cómo ejecutar stored procedures de MySQL usando PHP

Cómo ejecutar stored procedures de MySQL usando PHP

Cómo hacer para...
Un procedimiento almacenado es una herramienta que permite almacenar código ejecutable directamente en la base de datos. Personalmente no lo considero una práctica muy recomendable por varias razones: La idea de tener lógica de negocio fuera del código de mi aplicación me da cierta desconfianza (No me gusta no poder entender todo lo que está pasando en mi aplicación sólo con ver su código). Llegado el caso de tener que migrar de motor de base de datos el tener procedimientos almacenados puede convertirse en un problema Aún así, entiendo que puede haber situaciones en las que sea conveniente recurrir a ellos... especialmente cuando se trata de operaciones suamente complejas/pesadas o que tienen que ver estrictamente con el mantenimiento de la base de datos. ¿Cómo se llaman desde PHP? http://php.net/manual/es/mysqli.quickstart.stored-procedures.php http://www.mysqltutorial.org/php-calling-mysql-stored-procedures/
Leer más