compact représentation binaire de json
Sont là tout compact représentations binaires de JSON? Je sais qu'il est BFILS, mais même que page web dit "dans de nombreux cas, n'est pas beaucoup plus efficace que JSON. Dans certains cas, BFILS utilise même plus d'espace que JSON".
Je suis à la recherche pour un format aussi compact que possible, de préférence, une sorte de standard ouvert?
pourquoi ne pouvez-vous pas utiliser la compression sur le serveur?
BFILS specs sont loin d'être optimales en termes de taille et d'efficacité. Peut-être vous devriez envisager de stockage compressé JSON (avec dégonfler ou quelque chose).
qui peut être une solution possible, mais je suis à la recherche pour voir si il y a un moyen de réduire la quantité de données que nous de nourrir le flux sous-jacent (qui a déjà une option pour faire de la compression à la volée). en théorie, il devrait être plus facile de le comprimer à l'encodage d'objet de niveau puisque nous avons contexte sur les étiquettes, etc
Indépendamment du fait que de plus en plus compacts format binaire est utilisé pour la compression LZF est assez agréable, car il est beaucoup plus rapide à la compression qu'gzip (deflate), à une légère baisse des taux de compression.
MessagePack réduit le json origine de verbosité. msgpack.org
BFILS specs sont loin d'être optimales en termes de taille et d'efficacité. Peut-être vous devriez envisager de stockage compressé JSON (avec dégonfler ou quelque chose).
qui peut être une solution possible, mais je suis à la recherche pour voir si il y a un moyen de réduire la quantité de données que nous de nourrir le flux sous-jacent (qui a déjà une option pour faire de la compression à la volée). en théorie, il devrait être plus facile de le comprimer à l'encodage d'objet de niveau puisque nous avons contexte sur les étiquettes, etc
Indépendamment du fait que de plus en plus compacts format binaire est utilisé pour la compression LZF est assez agréable, car il est beaucoup plus rapide à la compression qu'gzip (deflate), à une légère baisse des taux de compression.
MessagePack réduit le json origine de verbosité. msgpack.org
OriginalL'auteur Shezan Baig | 2011-02-03
Vous devez vous connecter pour publier un commentaire.
Oui: Sourire le format des données (voir L'entrée de Wikipedia. Elle est mise en œuvre Java, C la version dans les travaux sur github (libsmile). Il a l'avantage d'être plus compact que le format JSON (fiable), mais 100% compatible modèle logique de données, de sorte qu'il est facile et possible de convertir dans les deux sens avec textuelle JSON.
Pour les performances, vous pouvez voir jvm-sérialiseurs de référence, où le sourire est en concurrence avec d'autres formats binaires (thrift, avro, protobuf); sizewise il n'est pas le plus compact (car il ne fait retenir les noms de champ), mais il fait beaucoup mieux avec des flux de données où les noms sont répétés.
Il est utilisé par des projets comme des Élastiques de Recherche et de Solr (en option), Protostuff-rpc prend en charge, même si elle n'est pas aussi largement que dire d'Aubaines ou protobuf.
MODIFIER (Déc 2011) -- il y a maintenant aussi
libsmile
liaisons pour PHP, Ruby et Python, donc de la langue de support est à améliorer. En outre, il existe des mesures de la taille des données; et bien que pour un seul enregistrement de données alternatives (Avro, protobuf) sont de plus en plus compacts, pour les flux de données Sourire est souvent plus compacte grâce à la clé et de la Chaîne de valeur de référence option.Soins à élaborer? Les critiques constructives sont les bienvenus 🙂
Merci! c'est exactement ce que je cherchais
pouvez-vous veuillez donner des lien pour Protostuff-rpc projet?
Assurez-vous: code.google.com/p/protostuff
OriginalL'auteur StaxMan
Vous pouvez prendre un coup d'oeil à la Universal Binary JSON spécification. Il n'est pas aussi compact que le Sourire, car il ne fait pas de références à un nom, mais il est 100% compatible avec JSON (où, comme BFILS et BJSON définir les structures de données qui n'existent pas en JSON, donc il n'y a pas de conversion vers/à partir de).
C'est aussi (intentionnellement) pénalement simple à lire et à écrire avec un format standard de:
Tellement de types de données simples de commencer avec un marqueur code ASCII comme 'je' pour un 32 bits de type int, 'T' pour la valeur true, 'Z', null, 'S' pour la chaîne et ainsi de suite.
Le format est, par conception, conçu pour être rapide à lire, comme toutes les structures de données sont préfixés par leur taille et donc il n'y a pas de balayage pour null séquences.
Par exemple, la lecture d'une chaîne de caractères qui peut être délimitée comme suit (les []-caractères sont juste à des fins d'illustration, elles ne sont pas écrites dans le format)
Vous souhaitez voir le 'S', commutateur de traitement d'une chaîne de caractères, voir l'entier de 4 octets qui le suit de "512", et je sais que vous suffit de la saisir d'un coup, la prochaine 512 octets et de les décoder en une chaîne de caractères.
De la même façon, les valeurs numériques sont écrits sans valeur de longueur pour être plus compact en raison de leur type (byte, int32, int64, double) définir leur longueur d'octets (1, 4, 8 et 8, respectivement. Il y a aussi la prise en charge arbitrairement long des nombres qui est extrêmement portable, même sur les plates-formes qui ne les supportent pas).
En moyenne, vous devriez voir une réduction de la taille d'environ 30% avec une bien équilibré objet JSON (beaucoup de différents types). Si vous voulez savoir exactement comment certaines structures de compression ou de ne pas compresser vous pouvez vérifier l' Exigences De Taille section pour vous faire une idée.
Sur le côté positif, indépendamment de la compression, les données seront écrites dans un plus optimisé format et plus rapide de travailler avec.
J'ai vérifié la base Entrée/OutputStream implémentations pour la lecture/écriture le format dans GitHub aujourd'hui. Je vais vérifier, en général en fonction de réflexion de l'objet de cartographie plus tard cette semaine.
Vous suffit de regarder ces deux classes pour voir comment lire et écrire le format, je pense que la logique de base est quelque chose comme 20 lignes de code. Les classes sont de plus en raison des abstractions de la et certaines méthodes de structuration autour de vérification le marqueur d'octets à assurez-vous que le fichier de données est un format valide; des choses comme ça.
Si vous avez vraiment des questions spécifiques comme le boutisme (Big) de la spécification ou de format numérique pour les doubles (IEEE 754) tout cela est couvert dans la spec, doc ou demandez-moi.
Espère que ça aide!
tcpdump
(par opposition à protobuf varints). En simple hexadécimal, 300 est0x012C
; dans UBJ,0x69012C
(depuis0x69
est asciii
); dans protobuf,0xAC02 == 1010 1100 0000 0010
. Protobuf devient encore plus difficile (et lent) pour analyser si vous avez des nombres négatifs. Protobuf ne compresse pas de chaînes ou de flotteurs, de sorte que si vous avez beaucoup de petits nombres, la taille est similaire, mais UBJ est rapide et son analyseur est simple.La publication de points de référence, les numéros de wrt vitesse? Tout est rapide pour analyser ces jours-ci, vous devez comparer les implémentations d'avoir une idée de la vitesse réelle.
OriginalL'auteur Riyad Kalla
gzipping données JSON va vous obtenir de bons taux de compression avec très peu d'effort en raison de son soutien universel. Aussi, si vous êtes dans un environnement de navigateur, vous risquez de payer une plus grande octet coût de la taille de la dépendance à partir d'une nouvelle bibliothèque que vous le feriez dans la charge utile d'épargne.
Si vos données ont des contraintes supplémentaires (tels que des lots de la redondance des valeurs de champ), vous pourriez être en mesure d'optimiser en regardant une autre sérialisation protocole plutôt que de coller à JSON. Exemple: une colonne à base de sérialisation comme Avro venir en colonnes magasin peut vous obtenir de meilleurs ratios (pour le stockage sur disque). Si vos charges contiennent beaucoup de valeurs constantes (tels que les colonnes qui représentent les enums), un dictionnaire de compression approche peut être utile aussi.
OriginalL'auteur pawstrong
Une autre alternative qui doit être pris en considération ces jours est DDDC (RFC 7049), qui a explicitement JSON-modèle compatible avec beaucoup de souplesse. Il est à la fois stable et répond à vos normes ouvertes, de qualification, et a évidemment eu beaucoup de pensée mis en elle.
OriginalL'auteur Burt_Harris
Avez-vous essayé BJSON ?
OriginalL'auteur yosh kemu
Essayez d'utiliser le js-gonflez-les à faire et défaire des gouttes.
https://github.com/augustl/js-inflate
C'est parfait et je l'utilise beaucoup.
OriginalL'auteur Gustavo Costa De Oliveira