当前位置:  开发笔记 > 编程语言 > 正文

Couchbase:存储二进制数据时是否存在base64编码开销?

如何解决《Couchbase:存储二进制数据时是否存在base64编码开销?》经验,为你挑选了1个好方法。

众所周知(请参阅此处的答案),当使用MapReduce查询时,Couchbase将二进制数据作为base64编码的文档提供.但是,它也将它存储为base64吗?从libcouchbase的角度来看,它需要一个字节数组+长度,它会在以后转换为base64吗?



1> DaveR..:

Couchbase存储引擎在内部精确存储您的数据(即您指定的长度的字节流).在协议级别使用CRUD键/值API读取该数据时,您将获得完全相同的字节流.

这是可能的,因为低级键值协议在线路上是二进制的,因此每字节使用所有8位都没有问题.

不同的客户端SDK将以不同的方式向您公开.例如:

C SDK(低级别)直接为您提供char*缓冲区和length.

Python SDK提供了转码功能,其中使用文档元数据中的标志来编码文档的类型,因此它可以自动将其转换为原始类型,例如Python序列化对象或JSON对象.

另一方面,Views API通过HTTP与JSON响应对象完成.JSON 不能直接编码8位二进制数据,因此如果视图响应对象包含二进制数据,则Couchbase需要使用base64编码.

(顺便说一句,这是为什么建议索引emit所需的最小数据量的原因之一,例如只需要感兴趣的文档的密钥,然后使用CRUD键/值接口实际获取文档 - Key/Value接口在传回数据时没有base64开销.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有