Limitaciones de proto buffers – carga de datos parciales y compartir secuencias

Quiero comprobar si proto buffer es el mejor serializador para mi uso, mi investigación encontró que nada más se acercaba. Estoy trabajando en Java backend y android (java) aplicación móvil, sin embargo, es posible que otro cliente se creará en un futuro no tan lejano, así que quiero algo de plataforma cruzada. Esbozo aproximado de estructura de datos:

message All { repeated Line lines = 1; Common common = 2; } 

Hay un par de cientos de objeto Line, cada línea es bastante compleja y toma ~ 100 kB por sí solo.

Dos problemas que veo con proto buffer – en el inicio de la aplicación Necesito sólo una fracción de los datos disponibles – sólo "común" y la información básica de "Line". ¿Es posible cargar datos parciales? – cada objeto de línea contiene cientos de cadenas, pero la misma cadena se produce en varios objetos de línea, así que quiero tratar de compartirlos entre esos objetos. ¿Es posible en proto buf nivel, o tiene que ser parte del nivel de aplicación?

¡Gracias!

De la especificación limitada que usted dio, es bastante difícil dar una retroalimentación adecuada. Usted dijo que para su problema la mejor solución parece ser protobuf, pero no podemos reevaluar eso de la información dada.

Sobre la base de lo que escribió, incluso diría que una simple matriz de bytes GZIPped (o JSON como la mayoría de ellos es imprimible (usted dijo que son de String s)) puede ser mejor para usted ("reutilizar" un montón de cosas a través de objetos de línea = > GZIP rock).

Y como otros afirmaron: con protobuf no es posible cargar "estructuras de datos parciales" (en realidad la tuya no sería parcial, siempre y cuando la parte "repetida" sea, por ejemplo, una Collection , porque de protobuf se encargará de segmentar tu Datos en la propia estructura).

Me gustaría poner mis dos centavos en GZIPped arroyos JSON (por ejemplo, con Jackson), por supuesto, en este caso se reduciría el ancho de banda con el costo de los ciclos de CPU.

Responder a mi propia pregunta con respecto a la carga de datos parciales. No lo he probado en la práctica todavía, pero me pregunto si lo siguiente no funcionaría:

 message All { repeated Line lines = 1; Common common = 2; } message All_partial { Common common = 2; } 

Como todos los campos en proto3 son opcionales, podemos tener una segunda definición de nuestra estructura, con campos "parciales". Si guardamos el mismo número de campo, espero que estaremos bien.

  • ¿Por qué Google eligió Java para el sistema operativo Android?
  • Error: Asegúrese de que el cursor se inicializa correctamente antes de acceder a los datos de él?
  • Android ImageView.setMatrix () y .invalidate () - el repintado toma demasiado tiempo
  • Error: java.lang.UnsatisfiedLinkError con roboelectric y reino
  • Animaciones explícitas para setAnimationStyle (), ¿cuáles son mis opciones?
  • Android gms: play-services: 8.1.0 DexIndexOverflowException
  • Vista de lista de Android establecer la posición predeterminada sin animación
  • ¿Cómo puedo mantener el estado al cambiar entre las pestañas / fragmentos de la barra de acción?
  • Volley funciona en WIFI pero no en 3G
  • ¿Cómo llamar a un método cada vez que se está viendo una actividad?
  • Diferentes formas de publicar valores json en Server
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.