与其他查询Teradata的方法相比,teradatarestapi的性能如何?

2024-06-25 23:42:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Teradata网站上的信息表明,restapi的用例更多地是为了让浏览器或web应用程序直接访问Teradata,这意味着它可能不会针对返回的数据超过浏览器所能处理的查询进行优化。我还想知道JSON开销是否会使它比ODBC数据格式在网络上发送查询结果的效率低。在

有没有人有过teradatarest服务性能方面的经验,或者可以指出REST和odbcforteradata之间的任何比较?在


Tags: 模块数据方法restrestapi信息网站浏览器
1条回答
网友
1楼 · 发布于 2024-06-25 23:42:00

我也有同样的问题。由于restweb服务器对我们是活动的,所以我只运行一些测试。我用rest和odbc后端测试了PyTD,并使用jaydebeapi+Jpype1测试了jdbc。我使用了python3.5,centos7机器,在CentOS和windows上我得到了与python3.6相似的结果。在

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

我们现在要转为休息生产。让我们看看情况如何,它也不是没有问题的。另一个优点是,我们的分析师也希望在自己的PC/Mac上工作,而rest是最容易安装的,尤其是在windows上(您需要pip安装teradata,就完成了;而对于odbc和jaydebeapi+Jpype,您需要一个编译器,而使用odbc则需要一些时间来正确配置它)。在

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

  1. 选择1M行

    • Python 3-JDBC:24分钟
    • Python 3-ODBC:6.5分钟
    • Python 3-休息时间:4分钟
    • R-JDBC:35秒
  2. 选择100 K行

    • Python 3-JDBC 141 s
    • Python 3-ODBC 41 s
    • Python 3-Rest 16秒
    • R-JDBC 5 s
  3. 插入100 K行

    • Python3-JDBC出现错误,懒得纠正
    • Python 3-ODBC 7分钟
    • Python 3-Rest 8s(批处理)9分钟(无批处理)
    • JDR-最小BC

相关问题 更多 >