Python API客户端和DolphinDB服务端数据传输协议的区别?

问题描述 投票:0回答:1

我有一个带有

delete
语句的脚本,它总是返回一个 DataFrame。今天写了一个类似的脚本,但是发现只要包含
delete
语句,就会抛出异常
IO Error Type 1
。然后我根据DolphinDB Python API文档将协议选项更改为PROTOCOL_DDB,它工作正常。

阅读用户指南后,我对协议PROTOCOL_DDBPROTOCOL_PICKLEPROTOCOL_ARROW有以下疑问。

  1. 这三个协议在使用场景上有什么具体区别?

  2. 为什么默认使用PROTOCOL_PICKLE

python pickle dolphindb apache-arrow
1个回答
0
投票

PROTOCOL_DDBPROTOCOL_PICKLEPROTOCOL_ARROW 都是 DDB Python Api 客户端和服务器之间通信中对象序列化的协议。

  1. PROTOCOL_ARROW 是 Apache Arrow 的协议。有关详细信息,请参阅Apache Arrow。使用此协议,您只需在从数据库中检索数据时对数据进行一次序列化。进一步的序列化和反序列化没有额外的努力。
  2. PROTOCOL_DDB 是传输数据时用于序列化/反序列化的最常用协议。除了Python API,其他API,如JAVA API,C++ API,也使用PROTOCOL_DDB。
  3. PROTOCOL_PICKLE 基于 Python 的 pickle 协议。更多 信息,请参阅pickle。一些修改是基于 4.0 版本的 Pickle 以适应 DolphinDB。

区别:

  • 在数据类型的转换方面:PROTOCOL_PICKLEPROTOCOL_DDB 有自己的优缺点 类型。

  • 在使用场景方面: PROTOCOL_ARROW最适合箭头格式作为中间格式贯穿整个过程(从数据导入到数据消费)的场景。如果

    pandas.DataFrame
    用的多,那么PROTOCOL_PICKLEPROTOCOL_DDB比较合适,对于其他通用的数据类型,PROTOCOL_PICKLE相对更快,这也是默认使用它的原因

© www.soinside.com 2019 - 2024. All rights reserved.