Estoy creando un Trie en la memoria. Cada nodo contiene una palabra. Es extremadamente bueno en cuanto a rendimiento. Pero el problema es el consumo de memoria.
¡Tiene 6 GB de tamaño! Lo serialicé con protobuf y lo escribí en un archivo que resultó ser de 150 MB.
JSON es de 250 MB. ¿Esperaba si hay una manera de minimizar las cuerdas? Por ejemplo:
Como puede ver, hay duplicados en la primera columna. Además, debe ser reversible.
Todas las propiedades/columnas son cadenas.
Así que digamos que la tabla se convierte en:
Creo que eso ahorraría mucho espacio. Por supuesto que puedo hacer esto insertando primero cada celda en un diccionario y luego asignándole un número entero, pero no quiero reinventar la rueda a menos que tenga que hacerlo.
La idea que desea hacer es crear un diccionario primero con todos y luego cambiar los valores reales a la clave del diccionario (que será más pequeña).
Este enfoque se utiliza en Zip y otros algoritmos de compresión.