Hızlı, kompakt, streamable, çoklu dil, kesinlikle yazılı bir seri hale getirme biçimi arıyor

3 Cevap java

Ben şu anda diskte nesnelerin çok sayıda (yüzlerce milyonlarca) saklamak gerekir ki, benim Java projede JSON (gzip üzerinden sıkıştırılmış) kullanıyorum. Ben satıra bir JSON nesnesi var ve JSON nesne içindeki linebreaks izin vermemek. Bu şekilde ben bir seferde tüm dosyayı okumak zorunda kalmadan disk line-by-off line veri aktarabilirsiniz.

Bu çıkıyor ki (ben anında yapmak) disk kapalı ham veriyi çekerek, ya da açılıyor ya da daha büyük bir yükü olan (http://www.json.org/java/ kullanarak) JSON kodu ayrıştırma.

İdeal ne istiyorum ben (örneğin) "bu nesne alan dizeleri listesi" belirtebilirsiniz kesinlikle yazılı bir seri hale getirme biçimi, ve sistem ne olacağını bilir çünkü, bunu hızlı bir şekilde serisini. Ben de sadece başka birisi onun "tip" vererek biçimini belirleyebilirsiniz.

Ayrıca çapraz platform olması gerekir. Java kullanmak, ancak PHP, Python, ve diğer dilleri kullanan insanlarla çalışmak.

Yani, Özetle, bu olmalıdır:

  • Kesinlikle yazdığınız
  • Streamable (yani seferde RAM içine tüm yüklemek zorunda kalmadan bit bir dosya biraz okuyun)
  • (Java ve PHP dahil) çapraz platform
  • Hızlı
  • (Konuşma gibi) ücretsiz

Herhangi bir işaretçiler?

3 Cevap

Google Protokol tamponlar baktınız mı?:

http://code.google.com/apis/protocolbuffers/

Ayrıca PHP için üçüncü parti bağları ile çapraz platform (C + +, Java, Python) konum. Bu, hızlı, oldukça kompakt ve güçlü yazılmış bulunuyor.

Burada çeşitli formatları arasında yararlı bir karşılaştırma da var:

http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking

Siz Thrift ya da burada belirtilen diğerlerinden birini düşünebilirsiniz.

Ben ile JSON ayrıştırma çok iyi sonuçlar elde ettik Jackson

Jackson olduğunu:

  • Akış (okuma, yazma)
  • FAST (başka bir Java json ayrıştırıcı ve veri bağlayıcı daha hızlı olarak ölçülmüştür)
  • Güçlü (ortak JDK sınıflar yanı sıra herhangi bir Java fasulye sınıf, Toplama, Harita veya Enum için bağlayıcı tam veri)
  • Sıfır bağımlılık (JDK dışında diğer paketler dayanmaz)
  • Open Source (LGPL veya AL)
  • Tam uyumlu

JSON işlemci (JSON ayrıştırıcı + json jeneratör) Java ile yazılmış. Temel JSON okuma ötesinde / (üreten, ayrıştırma) yazma, aynı zamanda tam bir düğüm tabanlı Ağaç Modeli, yanı sıra tam OJM (Object / Json Mapper) veri bağlama işlevselliği sunuyor.

Diğer birçok serileştirme seçeneklerine göre Onun performance çok iyi.

Sen YAML-http://www.yaml.org/ bakmak olabilir

Veri dosya yapısı size tanıdık olacak böylece JSON bir üst bulunuyor. Bazı ek veri türlerinin yanı sıra başka içine bir veri yapısının bir kısmını da içeren başvuruları kullanmak için yeteneğini destekler.

O "yeterince hızlı" olacak eğer ben herhangi bir fikrim yok - ama (C yazılı) libyaml çözümleyici oldukça çabuk görünüyor.