En el siguiente tutorial vamos a ver como usar Kumbia Enterprise Framework (KEF)
con una base de datos NoSQL. Una de ellas es MongoDB,
una base de datos de alto rendimiento, de código abierto y de esquema-libre orientada a
documentos (schema-free document-oriented).
Una explicación corta de la instalación en varias plataformas puede encontrarse aqui.
Uso de MongoDB en PHP
Una extensión PECL está disponible para conectarse a MongoDB nativamente. En un sistema Unix puede instalarse mediante el comando:
sudo pecl install mongo
El PHP Language Center contiene información
diversa relacionada con MongoDB y PHP.
Crear datos de Prueba
Una vez instalado MongoDB es posible crear algunos datos de prueba:
bash# mongo prueba
MongoDB shell version: 1.2.4
url: prueba
connecting to: prueba
type "help" for help
> use prueba
switched to db prueba
> db.noticias.save({"titulo":"Trabajando con MongoDB", "autor": "Antonio"})
> db.noticias.save({"titulo":"Otra noticia importante", "autor": "Carolina"})
> exit
Así hemos creado 2 registros en "noticias" y sus datos de titulo y autor respectivos.
Luego se debe reiniciar el servidor web que se está usando para que se tome la nueva configuración.
NoSQL en Kumbia Enterprise
Kumbia Enterprise en su versión 1.7.1 agrega soporte para una nueva capa de acceso a base de datos
llamada NoSQL. El componente DbBase permite el acceso a bases de datos sin requerir SQL, las bases de
datos obviamente no requieren de él. Sin embargo el punto es que gracias a esto tanto bases de datos SQL y
NoSQL pueden ser usadas con cambios mínimos en la configuración.
Familiarizarse con bases de datos NoSQL
Las bases de datos de esquema-libre orientada a documentos manejan un paradigma distinto al de
las habituales bases de datos relacionales. Sin embargo para familiarizarse un poco con los
nuevos conceptos y forma de trabajo podemos empezar por decir:
Bases de Datos El concepto es mismo de una base de datos relacional. Tienen un
nombre que permiten identificarlas. En el caso de MongoDB algunos nombres pueden no muy casuales:
"null", "[x,y]", "3", "\"", ó "/".
Tablas Las tablas se llaman colecciones (collections).
Más información sobre "Collections"
Campos
Los campos son atributos de las colecciones. Cada "registro" en una colección puede tener distintos campos.
El único campo que está presente en todas las colecciones es "id" que es un hash automático que permite
identificar el registro de forma única en la colección. Los campos pueden tener todo tipo de carácteres
incluyendo espacios.
Registros Los registros son llamados documentos. Las columnas son
llaves que referencian un valor.
Configurar MongoDb con Kumbia Enterprise
Para configurar una conexión es necesario colocar lo siguiente en el environment.ini:
La variable database.layer le indica a KEF que se va a usar una base de datos NoSQL. Las opciones database.host y
database.port son opcionales en caso de
que sean localhost y 27017 que son los valores defecto. Con la anterior configuración se va a poder obtener una conexión a la base de datos con un punto de configuración único.
Consultar, Actualizar, Eliminar
En el siguiente ejemplo se van a hacer las operaciones básicas sobre una colección (consultar, insertar, actualizar, eliminar):
//Obtener una conexión según como esté en environment.ini
$database = Db::rawConnect();
//Listar las colecciones en la base de datos
foreach($database->listTables() as $collection){
echo $collection, "<br/>\n";
}
//Consultar todas las noticias
$noticias = $database->find("noticias");
foreach($noticias as $id => $noticia){
echo "Id=", $id, " Titulo=", $noticia["titulo"], " Autor=", $noticia["autor"], "<br/>\n";
}
//Consultar todas las noticias cuyo autor sea "Carolina"
$noticias = $database->find("noticias", array("autor" => "Carolina"));
//Insertar un "documento"
$noticia = array(
"autor" => "Antonio",
"titulo" => "Otra noticia de ejemplo"
);
$database->insert("noticias", $noticia);
//Visualizar el ID de la noticia creada
echo $noticia["_id"], "<br/>\n";
//Actualizar la noticia
$condiciones = array("_id" => $noticia["_id"]);
$valoresActualizar = array("titulo" => "Cambiar por este titulo");
$database->update("noticias", null, $valoresActualizar, $condiciones);
//Eliminar la noticia
$condiciones = array("_id" => $noticia["_id"]);
$database->delete("noticias", $condiciones);
Conclusiones
Kumbia Enterprise ofrece una sencilla API a esta base de datos NoSQL y aprovechar todas sus bondades.
En el grupo de discusión es posible
hacer preguntas y dar comentarios sobre este artículo.