python - 与其他 Teradata 查询方式相比,Teradata REST API 性能如何?

标签 python odbc teradata

我计划使用 Teradata Python 模块,该模块可以使用 Teradata REST API 或 ODBC 连接到 Teradata。我想知道对于相当大的数据拉取(> 100 万行,> 1 GB 结果),REST 与 ODBC 连接方法的性能如何。

Teradata 网站上的信息表明,REST API 的用例更多的是通过浏览器或 Web 应用程序直接访问 Teradata,这对我来说意味着它可能不会针对返回比浏览器更多数据的查询进行优化预计能够处理。我还想知道 JSON 开销是否会使其在通过网络发送查询结果时的效率低于 ODBC 数据格式。

是否有人对 Teradata REST 服务性能有经验,或者可以指出 REST 和 ODBC for Teradata 之间的比较?

最佳答案

我也有同样的问题。由于其余的网络服务器对我们来说是活跃的,我只运行了一些测试。我使用rest和odbc后端测试了PyTD,并使用jaydebeapi + Jpype1测试了jdbc。我使用Python 3.5、CentOS 7机器,在centos和windows上使用python 3.6得到了类似的结果。

Rest最快,jdbc最慢。这很有趣,因为在 R 中 JDBC 非常快。这可能意味着 JPype 是瓶颈。 Rest 的写入速度也非常快,但我的猜测是,可以在 JDBC 中适本地使用准备好的语句来改进。

我们现在将切换到休息状态进行生产。让我们看看进展如何,它也肯定不是没有问题的。另一个优点是,我们的分析师也希望在自己的 PC/Mac 上工作,而 REST 是最容易安装的,特别是在 Windows 上(您执行 pip install teradata 就完成了,而对于 odbc 和 jaydebeapi+Jpype,您需要一个编译器,并且使用 odbc 需要花费一些时间来正确配置)。

如果速度很关键,我想另一种方法是编写一个 java 命令行应用程序来获取行,将它们写入 csv,然后从 python 读取 csv。我没有测试,但根据我以前在此类问题上的经验,我敢打赌这会比其他任何东西都快。

  1. 选择 100 万行

    • Python 3- JDBC:24 分钟
    • Python 3- ODBC:6.5 分钟
    • Python 3 - 休息:4 分钟
    • R - JDBC:35 秒
  2. 选择 10 万行

    • Python 3- JDBC 141
    • Python 3- ODBC 41 s
    • Python 3 - 休息 16 秒
    • R - JDBC 5
  3. 插入 10 万行

    • Python 3 - JDBC 出现错误,懒得纠正
    • Python 3 - ODBC 7 分钟
    • Python 3 - 休息 8 秒(批量)9 分钟(无批量)
    • R - JDBC 8 分钟

关于python - 与其他 Teradata 查询方式相比,Teradata REST API 性能如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46538313/

相关文章:

python - wxPython - 如何在另一个进程发生时显示加载栏?

python - Django 递归注解

python - 带有pyqt4的可拖动窗口

python - 如何在 Linux 中连接 Teradata 和 Python?

c# - 如何在 C# 中设置 .net teradata 连接?

具有多个条件的 SQL 多重左连接

python - 如何在不使用请求上下文的情况下在 flask 中呈现模板

mysql - ODBC 数据连接到 excel,显示数字列全为 1

mysql - SQL Server 2016 在链接到 MySQL 时神秘地失败(错误 #7303),但 Access 2016 使用相同的系统 DSN 成功

teradata - MLOAD 是在单个事务中执行的吗?