06 Jun

Asynchronous JavaScript And XML

AJAX

AJAX es una técnica que nos permite enviar consultas asíncronas al servidor e interpretar su respuesta con JavaScript. Para enviar y recibir las consultas, utilizaremos el objeto JavaScript XMLHttpRequest o bien la función Fetch. Originalmente las respuestas del servidor se enviaban codificadas en formato XML. Actualmente se suele utilizar JSON.

Mediante JavaScript habremos de extraer los datos retornados por el servidor y mostrarlos al usuario o realizar las acciones que deseemos con ellos.

AJAX – POST & JSON

Configurar la conexión:

  • type: el tipo de consulta (“POST”)
  • url: a dónde enviamos la consulta
  • dataType: formato respuesta (“json”)
  • data: parámetros enviados por POST: { nombre: “Tyrion Lannister” },
  • success: función a ejecutar al recibir la respuesta
    la función recibe como parámetro un objeto JSON

function enviaAjaxJSON(formulario) {
  $.ajax({
    type: "POST",
    url: "respuestaAjaxJSON.php",
    dataType: "json",
    data: { nombre: "Tyrion Lannister" },
    success: function(respJSON) {
      var nombre = respJSON.nombre;
      var longitud = respJSON.longitud;
      alert(nombre + " Longitud:" + longitud);
    }
  });
  return false;
}

AJAX – GET & XML

function enviaAjaxXML(formulario) {
$.ajax({
type: "GET",
url: "respuestaAjaxXML.php?nombre=Kara Thrace",
dataType: "xml",
success: function(xml) {
$(xml).find('info').each(function() {
var nombre = $(this).find('nombre').text(); var longitud = $(this).find('longitud').text();
alert(nombre + " Longitud:" + longitud);});return false;
}
});
}

  • El tipo de respuesta es “xml”
  • Los parámetros van en la URL
  • Si dataType es XML, la función recibe como parámetro el XML

$nombre = $_GET['nombre'];
$longitud= strlen($nombre);
//Tipo de archivo a retornar:
@header("Content-type: text/xml");
$xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" . "\n";
$xml .= "<info>" . "\n";
$xml .= "<nombre><![CDATA[: $nombre ]]></nombre>" . "\n";
$xml .= "<longitud><![CDATA[: $longitud ]]></longitud>" . "\n";
$xml .= "</info>" . "\n";// End XML response
echo($xml);
?>

Arrays PHP y JSON. Para evitar escribir el JSON, creamos un array con PHP y lo transformamos a JSON con json_encode

Conceptos de Bases de Datos

1. Motores de Almacenamiento

El motor de almacenamiento (storage-engine) se encarga de almacenar, manejar y recuperar información de una tabla. Los motores más conocidos son MyISAM e InnoDB. La elección de uno u otro dependerá mucho del escenario donde se aplique.

INNODB

Cumple ACID, acrónimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad. Los sistemas que cumplen estas cuatro propiedades garantizan que las transacciones se producen de forma fiable. Interesante cuando se prioriza el diseño relacional de BBDD y no es tan importante la velocidad y el consumo de recursos.

  • Atomicidad: La atomicidad nos asegura que cada transacción sea “todo o nada”. Si se produce un fallo en una parte de una transacción, todos los cambios hechos por la transacción hasta ese momento se deshacen y la base de datos no sufre ningún cambio.
  • Consistencia: Cualquier operación realizada por una transacción nos ha de asegurar que la base de datos pasa de un estado válido a otro estado válido. Es decir, los datos que escriba una transacción deben cumplir con las restricciones del sistema.
  • Aislamiento: Esta propiedad asegura que una operación no puede afectar a otra. Por lo que la realización de dos transacciones sobre la misma información se realiza de forma independiente y no genera ningún tipo de error.
  • Durabilidad: Esta propiedad asegura que una vez finalizada una transacción, ésta persistirá aunque falle el sistema inmediatamente después de la finalización de la transacción.

Ejemplo:

CREATE TABLE Prueba (
id int not null auto_increment primary key,
nombre varchar(50),
apellido varchar(70),
fecha_nac date
) ENGINE = InnoDB;

2. Índices

Un índice es un objeto asociado a una tabla que permite que las consultas den una respuesta más rápida. Un índice es física y lógicamente independiente de la tabla a la que está asociado, esto quiere decir que si borramos un índice no afectará ni a la tabla que está asociada ni a otros índices ni a las aplicaciones que trabajen sobre esa tabla.

Tipos de Índices

  • INDEX (NON-UNIQUE): Crea un índice permitiendo que la/s columna/s indexada/s puedan tener valores repetidos.
  • UNIQUE: Crea un índice permitiendo que la/s columna/s indexada/s no puedan tener valores repetidos. Funcionaría de la misma forma que una restricción PRIMARY KEY.
  • FULLTEXT: Crea un índice para campos de tipo texto. Permite hacer búsquedas más optimizadas que las que hacemos con la cláusula LIKE, ya que el propio índice nos devuelve un porcentaje indicando el grado de semejanza del texto buscado con los registros encontrados en la base de datos.

3. Transacciones y Bloqueos

3.1 Transacciones

  • ON DELETE CASCADE (Si no lo ponemos): Cuando borremos un cliente no nos dejará borrar sus facturas asociadas.
  • ON DELETE CASCADE (Si lo ponemos): Cuando borremos un cliente borrará sus facturas asociadas.
  • ON UPDATE CASCADE (Si no lo ponemos): Si modifico un CIF de cliente y este tiene facturas asociadas, no me dejará modificar el CIF de cliente.
  • ON UPDATE CASCADE (Si lo ponemos): Si modifico un CIF de cliente modificará el CIF en sus facturas asociadas.

Restricciones

  • On » Cascade: Cuando se modifique un CIF de cliente en tabla clientes, se modificará automáticamente en tabla facturas.
  • On » Restrict: Cuando se borre un CIF de cliente en tabla clientes, no dejará que se borre si tiene registros asociados en la tabla facturas.
  • Set Null: Permite borrar o actualizar un registro en clientes poniendo a NULL el campo o campos relacionados en la tabla facturas (siempre y cuando la FK de facturas no se haya definido NOT NULL).

Definición de “Transacción”: Conjunto de sentencias de SQL que modifican los datos de la base (DML: insert, update, delete) y que deben ser llevadas a cabo en su totalidad o descartarse por completo.

Tipos de Transacciones

Hay dos tipos:

  • Individuales
  • Explícitas

Commit / Rollback

  • La sentencia COMMIT hace que los cambios realizados en la transacción actual se conviertan en permanentes y se vuelvan visibles para el resto de usuarios.
  • La sentencia ROLLBACK cancela todas las modificaciones producidas en la transacción actual.

3.2 Bloqueo de Tablas

  • Podemos prevenir la modificación de ciertas tablas, bloqueando el acceso a éstas en ciertos momentos. De esta forma, la(s) tabla(s) bloqueada(s) no aceptará(n) accesos de lectura o escritura de otras sesiones.
  • Se usa cuando queremos leer algo y luego modificarlo, para evitar que entre medio alguien modifique esa información.

Tipos de Bloqueos

  • Si un usuario realiza un bloqueo READ, ese usuario y todos los demás sólo podrán leer la tabla. Bloquea la lectura.
  • Si un usuario realiza un bloqueo WRITE, sólo ese usuario puede leer o escribir en la tabla, el resto de usuarios serán bloqueados. Bloquea la escritura y también la lectura.

6. Loops

Un loop en SQL se utiliza para ejecutar un bloque de código repetidamente hasta que se cumpla una condición específica.

7. Procedimientos Almacenados

  • Colección de sentencias SQL que se construye como si de una función de lenguaje estructurado se tratase, son auténticos programas que pueden recibir parámetros, devolver valores, ejecutarse de forma remota.
  • Cuando el procedimiento se ejecuta por primera vez, se produce su compilación y optimización del acceso del procedimiento a los datos. Este proceso compilado y optimizado se mantiene en memoria para posteriores ejecuciones con el consiguiente ahorro adicional de tiempo y recursos.

8. Vistas

  • Es una sentencia select constituida como un objeto en MySql separado de la tabla o tablas a las que hace referencia en su definición.
  • La vista no es una tabla, sino la definición de una consulta y, por tanto, no posee datos propios.
  • Una vez que está definida, puede utilizarse exactamente del mismo modo que una tabla, referenciándola por su nombre. Una vista fundamentalmente tiene dos utilidades, como mecanismo de seguridad y como herramienta para facilitar el uso de consultas.
  • Mecanismo de seguridad: Si queremos que unos usuarios vean sólo una parte de los datos de una tabla, puede crearse una vista en la que dichos datos no aparezcan y autorizar a los usuarios a trabajar con la vista en lugar de con la tabla.

9. Triggers

  • Un Trigger es un tipo de Procedimiento Almacenado que se ejecuta automáticamente cuando sobre una tabla se realiza alguna operación que implique modificar sus datos (DELETE, INSERT, UPDATE). Por lo tanto un trigger va a estar ‘asociado’ a una tabla y a un ‘tipo de operación’ sobre la tabla. El trigger no tiene que realizar la operación sobre la tabla.
  • Procedimientos almacenados que se ejecutan automáticamente como acción a una determinada modificación de una tabla: INSERT, UPDATE o DELETE.

10. Funciones

Una función en SQL es un objeto de la base de datos que contiene un conjunto de instrucciones SQL que se pueden ejecutar para realizar cálculos o transformaciones y devolver un valor o un conjunto de valores. Las funciones pueden ser escalares o de tabla.

Ejemplo: Si queremos reorganizar una tienda y para ello necesitamos calcular el precio de algunos productos esta reorganización la haremos dentro de un procedimiento almacenado pero el cálculo en sí lo haremos dentro de una función, ya que esta sí puede devolvernos valores.

11. Cursores

Un cursor es una estructura de control que permite manejar y recorrer de manera controlada el conjunto de resultados devuelto por una consulta (generalmente una sentencia SELECT). Los cursores son útiles cuando se necesita realizar operaciones fila por fila en un conjunto de datos, lo que no es posible directamente con las operaciones SQL estándar que trabajan sobre conjuntos de datos de manera global.

Deja un comentario