首页 > 有人用protobuf吗

有人用protobuf吗

使用protobuf 之后,否还是需要自己写数据结构来存储管理 数据, 直接使用protobuf 的message来存放大量数据是不是不大合适,也不方便查找,修改,删除,新建等操作? 请用过的大大指点下啊


protobuf在我们这边应用的项目里主要还是用来序列化数据做网络传输用,并不直接保存到数据库。当然要保存到数据库也可以,这需要看你这边的业务是怎么样的。如果需要大量的修改,查询可能不是很合适。

用protobuf的好处
1.序列化数据的平台无关性
2.序列化的数据量相对很小
3.支持多种语言很方便,这边开发有用C和C++都可以自动生成源文件
4.在协议的向后兼容方面protobuf做的很好

不好的地方有
1.网由传输的包需要加长度,不然没法区分边界
2.需要自己拼包,包收全后才能解包


我原来也用,但后来不用,原因是我们每次改一个接口中的字段,都要重新生成类文件,感觉有些麻烦。


有需要可以call我。 本人使用google protobuf已经好几年。 protobuf一般都是用来做数据传输的。编译器生成的类的冗余数据比较多,不适合做业务逻辑对象(例如ORM的映射对象),因此一般还需要写个接口在业务对象和protobuf消息对象之间进行数据的转换。 况且Java版本的生成的代码,分为只读对象和Builder对象,而不是JavaBean对象,因为没有set方法。


我使用protobuf,之前只是用于移动端的数据传输。当数据到了服务器需要进数据库时候就重新把数据取出来通过服务器端的数据模型存入数据库。并不会直接把protobuf对象放进数据库。利用protobuf存放数据没有问题,2进制数据流体积很小大可放心。但并不建议将其直接往数据库里丢。


iOS有个很牛逼的库叫PLCrashReporter,就是用pb存储crash log的。

大量数据是多大?很大就用数据库。

protobuf可以替代json、xml,优点是体积小,缺点是肉眼不可读。同样的替代品还有苹果的binary plist。

如何在pb和sqlite之间做出选择?如果能用json存,就可以用pb存。如果不能用json存必须用数据库,则也不能用pb。

【热门文章】
【热门文章】