- ROTOCOL_ARROW 协议是使用了apache arrow 的方案,是通用的序列化方案,从使用场景来看,ROTOCOL_ARROW 最适用于从上游数据库到下游消费,全部使用 arrow 格式作为中间格式的场景,可以方便地在各个组件之间传递,只需要付出从数据库取出数据这一次序列化开销,后续不需要序列化和反序列化。
- PROTOCOL_DDB是我们最常用的通信时使用的序列化/反序列化协议,其他API,例如JAVA API 、C++ API都是用的PROTOCOL_DDB。
- PROTOCOL_PICKLE 则是源自python 原生的pickle协议,可以参考python pickle模块的文档,我们是基于4.0的pickle协议,又做了部分适配dolphindb的修改。
从数据类型的角度,PROTOCOL_PICKLE 和 PROTOCOL_DDB 之间,在某些类型的性能上各有优劣。从使用场景来看,ROTOCOL_ARROW 最适用于 从上游数据库到下游消费,全部使用 arrow 格式作为中间格式的场景。如果场景中使用 pandas.DataFrame 较多,则更适合使用 PROTOCOL_PICKLE 和 PROTOCOL_DDB,一般的数据类型, PROTOCOL_PICKLE 会相对快一点,所以默认是开启 PROTOCOL_PICKLE 。