Google libera 'Protocol Buffers', su formato de intercambio de datos que sustituye al XML dentro de la compañía
Desde hace unos años, los ingenieros de Google están compartiendo (y de forma libre y abierta) varias de las
tecnologías que utilizan dentro de la compañía. Ahora le toca el turno a
'Protocol Buffers', el protocolo que
usan para codificar y transmitir datos en formato binario de una manera muy compactada, y que evita por ejemplo el uso de
XML para intercambiar datos.
Se asegura que es más sencillo, hasta 10 veces más ligero, hasta 100 veces más rápido, menos ambiguo, y más
fácil de 'parsear' que XML. Por ejemplo, para modelizar la información de un libro con título e ISBN, el fichero
'.proto' en formato texto sería:
libro {
isbn = "9788466319140"
titulo = "Un tranvia en SP"
}
Tenéis en este enlace la documentación de
la estructura del protocolo. Y para 'parsear' estos ficheros '.proto' (que están en formato binario), Google ofrece una serie de librerías para
ser utilizadas en programas creados en C++, Java y Python. Os los podéis descargar desde
esta página oficial.
Dentro de los sistemas de información de Google existen diferentes servidores, los cuales hablan los unos con los
otros, transmitiendo diferentes tipos de datos. Se asegura que 'Protocol Buffers' nació para optimizar el
proceso de petición de información entre estos servidores, y con la llegada de este nuevo protocolo que ahora
se comparte libremente, se consiguió, además de mayor velocidad, un nuevo formato que permitía introducir
fácilmente campos nuevos en los modelos de información, y que podía ser tratado por varios lenguajes que son ampliamente
utilizados dentro de la compañía.
En estos momentos, dentro de los servidores de Google nos podríamos encontrar más de 12.000 ficheros '.proto' que
contienen diferentes tipos de información.
 skinner, el 08 de julio de 2008 a las 17:09h ( CET), dijo:
Ya era hora de que alguien se diera cuenta de que poner el mismo tag antes y después de la información (p.e. blablabla) es de lo más ineficiente en términos de espacio y de tiempo. Era de cajón usar llaves (p.e. libro{blablabla}) para delimitar los datos. A ver si consiguen acabar de una vez por todas con ese XML que tanto gusta a todo el mundo. Y que hagan lo mismo con sus derivados. Es increíble que la gente trate de minimizar el velocidades de transferencia por Internet y que se vean obligados a usar un lenguaje tan redundante como HTML.
 skinner, el 08 de julio de 2008 a las 17:13h ( CET), dijo:
Soy el de antes. Es obvio que en el primer ejemplo el filtro se ha comido el código XML. Venía a ser algo así (a ver si esta vez hay suerte):
[libro]blablabla[/libro]
Juegos, el 08 de julio de 2008 a las 17:47h ( CET), dijo:
Es muy similar a JSON, no?
http://es.wikipedia.org/wiki/JSON
 Tito, el 08 de julio de 2008 a las 19:50h ( CET), dijo:
parecido también a la sintaxis de data providers de GeneXus. http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?5270
 Guillermo, el 08 de julio de 2008 a las 22:21h ( CET), dijo:
Si. El xml es un coñazo. Creo que ahí estamos todos de acuerdo. Sin embargo es un standard. Todas las aplicaciones lo hablan.
Quejarse es poco práctico.
el cerrar los tags xml creo recordar que viene de la consecuencia del html y sus errores de formateo.
La verdad, que siempre que he tenido que hacerlo a mano, no lo he hecho.
Si hoy en día google tuviese que tomar una decisión, usaría yaml que por no tener, no tiene llaves de apertura y cierre.
Con esta jugada, evita que yaml siga comiendo mercado a xml [1] y hacerse un hueco a sabiendas de que mucha gente lo vaya a implementar.
[1] http://www.google.es/trends?q=yaml
Jose, el 09 de julio de 2008 a las 18:49h ( CET), dijo:
El mayor rendimiento no está en el que se abran y se cierran tags, esto influye pero no es lo mas relevante si no que es un protocolo binario, por ejemplo un int se mapea a int32 en c++ dependiento del compilador esto seran 32 o 64 bits, en xml un int es una cadena de texto y cada digito ocupa un byte si esta codificado como utf-8.
 pablo, el 05 de agosto de 2008 a las 13:06h ( CET), dijo:
la única gran ventaja que veo con respecto a XML es el rendimiento en cuanto a tasa de transferencia (se podrá enviar mas información en menos paquetes). Sin embargo si finalmente uno decide meterse con el protocolo google, uno se aleja del standard con los problemas (fata de portabilidad), que puede llegar a tener eso...seguro que google luego apra solventarlo tiene unos serializadores de su protocolo a XML (lo que nos daría la alta tasa de transferencia y el estandar al mismo tiempo), pero nose...creo que la decisión dependerá alfinal de cada uno de nosotros y del problema que tengamos delante.
Desde mi punto de vista, bienvenidas sean las opciones!, las "malas" y las "buenas" y bienvenidos sean los problemas!, que hacen a las opciones "buenas" y "malas" a la vez!.
Saludos a todos, y ya lo estamos probando!, cuanto menos!.
Y efectivamente "juegos"...Json, ya veia la necesidad y puso la solución!
Puedes dejar un comentario sobre la noticia del post rellenando y enviando el siguiente formulario. Los campos marcados con asterisco (*) son obligatorios.
|