我正在开发Java和Cassandra数据库之上的社交应用程序.我需要在数据库中存储用户共享帖子的帖子/评论,我希望每个评论/帖子&然后将序列化数据存储在一列中的数据库中.因此,对于每个评论,将有一个列以序列化格式存储此数据: –
>评论数据(最多约700个字符的字符串)
> CommentorId(长型)
> CommentTime(时间戳)
同样,帖子的数据将被序列化并存储为单个列.
前端在每次检索该帖子时都需要快速反序列化.
我正在寻找协议缓冲区作为可能的解决方案.想知道为此任务选择协议缓冲区是否是正确的选择.我正在寻找一个高性能的&快速序列化&反序列化算法,可以在应用程序中大量使用.
是否可以将数据以序列化格式发送给客户端,然后可以对其进行反序列化?服务器到客户端通信?
最佳答案
协议缓冲区肯定提供了序列化,虽然事情的RPC方面是你想象的(通常简单和基于套接字的工作非常好).
protobuf都支持数据类型(尽管您可能希望在日期的unix时期使用ms之类的东西).请注意,protobuf不包括压缩(除非您还将gzip等应用于流).所以消息将“比字符串长一点(它总是在protobuf中使用UTF-8编码).我说”有点“因为整数类型的varint算法可以为id提供1到10个字节之间的任何内容和时间戳,取决于它们的大小.字段标题的一些(3个,可能)字节.
如果听起来不错,那么它应该可以正常工作.但是,如果您有大量文本数据,则可能还需要通过gzip运行protobuf流. Java通过主谷歌主干在protobuf中提供了出色的支持.