Blog de Israel Viana

Bases de datos orientadas a objetos, la plataforma óptima para la Web Semántica

2 de diciembre de 2008

Una de los últimas tendencias en el desarrollo de software orientado a objetos es el abandono de las bases de datos relacionales como sistemas de almacenamiento, en favor de bases de datos orientadas a objetos (por ejemplo, ZODB es la base de datos orientada a objetos de Zope, el potente framework de desarrollo para Python), o bien sistemas que, aun utilizando un DBMS relacional aportan una capa de abstracción al programador para crear objetos persistentes. Uno de estos sistemas es Hibernate, que se ha hecho bastante famoso.

Con la aparición en escena de estos sistemas de almacenamiento, surgió la polémica entre seguir usando los seguros, estables y rápidos RDBMS o sencillamente almacenar los objetos que maneja internamente el programa, prescindiendo de DAOs y demás inventos.

Hoy en día la papeleta se soluciona con motores de persistencia (capas de abstracción para guardar objetos que se apoyan sobre BBDD relacionales), como el ya citado Hibernate; aunque existen Sistemas de Gestión de Bases de Datos orientadas a objetos, como ZODB (Zope Object Database), que ofrece resultados muy buenos en cuanto a rendimiento y seguridad. Destaca también OpenLink Virtuoso, un puente entre SQL y RDF/XML. En Wikipedia se resume muy bien el concepto de persistencia de objetos.

Todo este rollo viene a cuento de la Web Semántica (cómo no), y su evidente estructura orientada a objetos (iba a poner un enlace a la especificación del RDF-Schema pero no quiero quedar como un pedante con semejante tostón). Pero no sólo es una cuestión de estructura. Las bases de datos orientadas a objetos, y sobre todo las bases de datos semánticas, ofrecen una flexibilidad muy apropiada para proyectos web (no sólo “3.0”). Y el mejor ejemplo que he encontrado es Plone, el gestor de contenidos para portales web basado en Zope, permite crear archetypes de información que Zope/ZODB manejan de forma semi-automática, permitiendo extender el portal rápidamente (sí, Samuel, como tú dices, Plone es el futuro).

El caso es que la elección entre DBMS relacional y orientado a objetos depende de la orientación del problema a solucionar: si pretendes hacer un portal web grande (para una universidado o algo así), un sistema para gestión colaborativa del conocimiento o un proyecto que simplemente tenga que ser muy flexible y escalable, es muy probable que la mejor opción sea una base de datos orientada a objetos. También son útiles las BBDD orientadas a objetos (y además embebidas, como son la mayoría) para programas sencillos que no procesen grandes volúmenes de datos. En este último caso también son adecuadas las bases de datos basadas en pares atributo-valor, que resultan extremadamente sencillas, y cuyo máximo exponente es la oferta SimpleDB de Amazon Web Services. Aunque si no quieres “volar en la nube” también está BerkeleyDB (de hecho, es una de las tecnologías que usa SimpleDB). De todos modos, de bases de datos “sencillas” hablaremos otro día.

En medio de esta jungla, para muchos desconocida por su novedad y poca penetración en el mercado (los consultores se sienten seguros con Oracle), surgen las Bases de Datos semánticas. Están manejadas por bibliotecas como Jena o RdfLib y consultadas por un “safari” de lenguajes como RDQL, SeRQL o SPARQL (este último iniciativa del W3C), un poco inmaduros para ser usados de manera extensiva. Hoy en día se usan para software de gestión del conocimiento, tesauros, biblioteconomía... es decir, a nivel de BBDD prácticamente privadas.

En la otra cara de la moneda tenemos la propuesta de Tim Berners-Lee, su visión de la Web Semántica en la que sirvientes software nos hacen el trabajo, compran entradas para el cine o buscan exactamente qué jugadores de la selección uruguaya de fútbol jugaron en el último mundial con un dorsal mayor a 10. Pero abrir las bases de datos y semantizar todo la información de la red (que es una utopía) no es el único camino para aplicar las tecnologías semánticas en Internet.

Pensemos en RDF. Es el lenguaje base de las tecnologías semánticas. Con sus “triplets” (sujeto, predicado y objeto) se construyen las estructuras de conocimiento y las ontologías. RDF se puede expresar en XML. XML es una buena manera de almacenar objetos. XML se puede procesar con diferentes extensiones: XSL-T, Xpath, Xlink, Xforms... y construir páginas web enteras sin usar prácticamente ni HTML ni programación en el lado del cliente. Pero aún hay más, la arquitectura REST es la óptima para la publicación de objetos. ¿Eins, y eso qué es? Pues la publicación de objetos es sencillamente eso: publicar los objetos persistentes. Por ejemplo, el Zpublisher de Zope (sé que soy repetitivo, pero cada vez confirmo más que Zope es la plataforma perfecta para aplicaciones semánticas): el usuario envía una petición (en principio una URI por HTTP, pero Zope permite publicar objetos incluso a través de FTP, WebDAV y XML-RPC), Zpublisher busca el objeto entre su Base de Datos y lo devuelve.

¡Anda, la arquitectura es como en un servidor de Bases de Datos! ¡Y como en los servicios web (los servicios web trabajan con XML, y hemos dicho que XML es un buen lenguaje para expresar objetos)!. De hecho, Zpublisher publica objetos a través de XML-RPC, algo que al lector atento no hace falta repetir ;-P. Es decir, que si hago una aplicación web en Zope con mis objetos persistentes, ZPublisher automáticamente creará servicios web para que otros sitios puedan interactuar con mi programa. Y si a esa Base de Datos orientada a objetos (expresable en XML) le agrego metadatos semánticos (algo fácil de hacer en XML, gracias a los namespaces y a los RDF-Schema), es posible disponer de servicios web semánticos. Fíjate hasta que punto Zope es el más indicado para estos menesteres su nombre significa Z Object Publishing Environment.

En fin, un buen comienzo, implementable sin grandes dificultades, para posibilitar un nodo inteligente en la web semántica (no soy maniático en eso de la Semantic Web con mayúsculas y minúsculas...), que produzca contenido y metadatos y pueda colaborar con otros servicios. Y si es Zope, encima de todo ese framework y esa base de datos orientada a objetos podemos poner Plone, el gestor de contenidos con la curva de aprendizaje más jodida que conozco, y convertir nuestra semantizada instancia de Zope en un portal web, y todo lo que ello implica.

Básicamente esa es la idea base de mi Proyecto Fin de Carrera, que comenzaré a planificar (hasta ahora sólo divago) el año que viene, aprovechando que la próxima versión del portal web universitario está construido sobre Plone. Sí, me habéis pillado, sólo quería hablaros de mi TFC (y dar un poco de forma a las chorradas que se me ocurren ;-)


Etiquetas: , ,
Compartir en Twine Delicious Facebook Twitter

2 comentarios

Gravatar de Vito
Vito
el 12 de diciembre de 2008 a las 20:19

Muy buen articulo! Bien hecho y documentado! ^____^

Gravatar de imari
imari
el 5 de julio de 2010 a las 16:06

esto es muy importante


Escribe tu opinión

Nombre:
E-mail: (no se mostrará)
Sitio web:
Por favor, suma 1 + 1:
Comentario:
israelviana.es es propiedad de Israel Viana, escrito en Murcia (España). Puedes ponerte en contacto conmigo a través de la dirección de e-mail .com.
Información en RDF Metadatos Dublin Core Creative Commons License