Actualmente estoy usando JSON (comprimido mediante gzip) en mi proyecto Java, en el que necesito almacenar una gran cantidad de objetos (cientos de millones) en el disco. Tengo un objeto JSON por línea y no puedo permitir los saltos de línea dentro del objeto JSON. De esta forma, puedo transmitir los datos del disco línea por línea sin tener que leer todo el archivo a la vez.Buscando un formato de serialización rápido, compacto, transmisible, multilingüe y fuertemente tipado
Resulta que analizar el código JSON (usando http://www.json.org/java/) es una sobrecarga mayor que extraer los datos brutos del disco o descomprimirlos (lo que hago sobre la marcha).
Idealmente, lo que me gustaría es un formato de serialización fuertemente tipado, donde pueda especificar "este campo de objetos es una lista de cadenas" (por ejemplo), y porque el sistema sabe qué esperar, puede deserializarlo con rapidez. También puedo especificar el formato simplemente dándole a otra persona su "tipo".
También necesitaría ser multiplataforma. Uso Java, pero trabajo con personas que usan PHP, Python y otros idiomas.
Así, para recapitular, que debe ser:
- fuertemente tipado
- transmisible (es decir, leer un poco de archivos a poco sin tener que cargar todo en la memoria RAM a la vez.)
- Multiplataforma (incluyendo Java y PHP)
- rápido
- libre (como en el discurso)
¿Alguna sugerencia?
Si extraer datos sin procesar del disco es más rápido, ¿por qué no hacer eso? ¿Por qué meterse con JSON si es más lento? –
De acuerdo, entonces analizar json es más lento que descomprimir, o leer los datos del disco. ¿Y qué? ¿Es demasiado lento para lo que tienes que hacer? ¿O estás optimizando por el simple hecho de hacerlo? – Breton
Breton: es demasiado lento para lo que tengo que hacer, no es una optimización prematura. – sanity