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

时间:2017-10-03 06:23:51

标签: python odbc teradata

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

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

有没有人有Teradata REST服务性能的经验,或者可以指出Teradata的REST和ODBC之间的任何比较?

1 个答案:

答案 0 :(得分:1)

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

休息是最快的,jdbc是最慢的。有趣的是,因为在R中JDBC非常快。这可能意味着JPype是瓶颈。休息对于写作来说也非常快,但我的猜测是可以使用预先准备好的语句在JDBC中进行改进。

我们现在要转为休息生产。让我们看看它是怎么回事,肯定也没有问题。另一个优点是我们的分析师也希望在他们自己的pcs / mac上工作,其余的是最容易安装的,特别是在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 s
  2. 选择100 K行

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

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