乐趣区

关于数据库:Orca丨基于DolphinDB的分布式pandas接口

Orca 我的项目在 DolphinDB 之上实现了 pandas API,使用户能更高效地剖析解决海量数据。

如果你曾经相熟 pandas,你就能通过 Orca 包,充分利用 DolphinDB 的高性能和并发,解决海量数据,而不须要额定的学习曲线。如果你曾经有现成的 pandas 代码,你不须要对已有的 pandas 代码进行大量批改,就能迁徙到 Orca。

目前,Orca 我的项目依然处于开发阶段,并且在疾速迭代。咱们欢送你在应用 Orca 的同时,通过 GitHub issues 给咱们反馈。

Orca 的设计理念

Python 的第三方库 pandas 是一个弱小的剖析结构化数据的工具,具备高性能、接口易用、易学习的特点,在数据迷信和量化金融畛域广受欢迎。然而,当咱们开始解决 TB 级别的海量数据时,单核运行的 pandas 就显得力不从心;pandas 的高内存占用也是影响其施展的限度之一。当咱们领有更多的处理器核,领有多台物理机器时,咱们会心愿充分利用并发的劣势,进步数据处理的效率。

DolphinDB 是一个分布式数据分析引擎,它能够将 TB 级的海量数据存储在多台物理机器上,并能充分利用 CPU,对海量数据进行高性能剖析计算。在进行同样性能的计算时,DolphinDB 在性能上比 pandas 快 1~2 个数量级,并且内存占用通常小于 pandas 的 1 /2。但 DolphinDB 的部署和开发方式都和 pandas 有显著区别,用户若要从 pandas 迁徙到 DolphinDB,须要对已有代码做出大量批改。侥幸的是,DolphinDB 曾经着手开发 Orca 我的项目——一个基于 DolphinDB 引擎的 pandas DataFrame API 的实现。它让用户可能以 pandas 的编程格调,同时利用 DolphinDB 的性能劣势,对海量数据进行高效剖析。相比 panddas 的全内存计算,Orca 反对分布式存储和计算。对于同样的数据量,内存占用个别小于 pandas 的 1 /2。

Orca 的架构

Orca 的顶层是 pandas API,底层是 DolphinDB 数据库,通过 DolphinDB Python API 实现 Orca 客户端与 DolphinDB 服务端的通信。Orca 的根本工作原理是,在客户端通过 Python 生成 DolphinDB 脚本,将脚本通过 DolphinDB Python API 发送到 DolphinDB 服务端解析执行。Orca 的 DataFrame 中只存储对应的 DolphinDB 的表的元数据,真正的存储和计算都是在服务端。

因而,Orca 的接口有局部限度:

  • Orca 的 DataFrame 中的每个列不能是混合类型,列名也必须是非法 DolphinDB 变量名。
  • 如果 DataFrame 对应的 DolphinDB 表是一个分区表,数据存储并非间断,因而就没有 RangeIndex 的概念,且无奈将一整个 Series 赋值给一个 DataFrame 的列。
  • 对于 DolphinDB 分区表,一部分没有分布式版本实现的函数,例如 median,Orca 暂不反对。
  • DolphinDB 的空值机制和 pandas 不同,pandas 用 float 类型的 nan 作为空值,而 DolphinDB 的空值是每个类型的最小值。
  • DolphinDB 是列式存储的数据库。对于 pandas 接口中,一些 axis=columns 参数还没有反对。
  • 目前无奈解析 Python 函数,因而,例如 DataFrame.apply, DataFrame.agg 等函数无奈承受一个 Python 函数作为参数。

对于 Orca 和 pandas 的具体差别,以及由此带来的 Orca 编程注意事项,请参考 Orca 应用教程。

装置

Orca 反对 Linux 和 Windows 零碎,要求 Python 版本为 3.6 及以上,pandas 版本为 0.25.1 及以上。

Orca 我的项目曾经集成到 DolphinDB Python API 中。通过 pip 工具装置 DolphinDB Python API,就能够应用 Orca。

pip install dolphindb

Orca 是基于 DolphinDB Python API 开发的,因而,你须要有一个 DolphinDB 服务器,并通过 connect 函数连贯到这个服务器,而后运行 Orca:

>>> import dolphindb.orca as orca
>>> orca.connect(MY_HOST, MY_PORT, MY_USERNAME, MY_PASSWORD)

如果你曾经有现成的 pandas 程序,能够将 pandas 的 import 替换为:

# import pandas as pd
import dolphindb.orca as pd

pd.connect(MY_HOST, MY_PORT, MY_USERNAME, MY_PASSWORD)

更多信息

应用教程和注意事项

Orca 与 pandas API 的具体差别

Orca 拜访 DolphinDB 分布式数据库教程

Orca 保留数据教程

用 Orca 开发量化策略

DolphinDB Python API

退出移动版