database - Teradata CLIv2 与 JDBC 和 ODBC 的优势?
问题描述
有多种方法可以连接到 Teradata,例如,使用 CLIv2、JDBC 或 ODBC。我很好奇 CLIv2 与 JDBC 和 ODBC 相比有什么优势?
简而言之,CLIv2/TPTAPI 是用于与 Teradata 服务器交互的官方 Teradata C/C++ 库。有一些细微差别,但这主要是使用这些的原因。
CLIv2、TPTAPI、JDBC 和 ODBC 都是与 Teradata 服务器交互的各种方法。它们在能力和实施上都有很大的不同。最直接的是 ODBC,它使用 Teradata 在某种程度上实现的通用 ODBC API。然而,CLIv2 是官方的低级调用库,几乎所有客户端功能都派生自它(用 C 编写)。例如,ODBC 很可能以某种方式(在服务器端)通过与 CLIv2 的一些(或大量)交互来实现。Giraffez 选择它作为其库,以便它可以拥有提供的最强大的 Teradata 接口(在性能和功能方面)。Teradata 在 C++ 中实现了批量加载过程(快速加载、多加载等),其核心使用 CLIv2,并且是 TPTAPI 的用武之地(Teradata Parallel Transporter API)。
JDBC 最终成为 ODBC 的混合体(功能上),Teradata 选择纯粹用 Java 重新实现批量协议。归根结底,这意味着 JDBC 能够与 Teradata 进行“正常”的 SQL 交互,同时还能够执行诸如快速加载/多加载或快速导出之类的批量协议。
Giraffez 在后台使用 CLIv2 和 TPTAPI,专门为与 Teradata 交互提供最大的表面积。例如,优于 ODBC 的优点是 ODBC 不允许使用批量协议。其他优点是能够将 C/C++ 与 Python 代码绑定,而不是使用 JDBC 将 Java 类型转换为 Python 类型。
解决方案
推荐阅读
- c# - 同时激活 Click 和 MouseDown 事件?
- python-3.x - groupby lambda 函数采用 2 列参数
- r - 如何重新排列数据框,从两个变量和第三个具有两个级别的分类变量创建四个连续变量?
- sql - 选择时间戳单元格上的最新条目
- c++ - 在STM32 Nucleo上多次触发上升沿中断
- c - 这是初始化指向结构的指针的正确方法吗?谢谢你
- reactjs - 当用户不更改默认值时,将表单中的默认值存储在状态中
- java - Spring Boot 默认使用 HTTPS,但使用 HTTP 测试配置文件
- c++ - 在 ESP8266 上的不同任务中使用类 - CPP
- java - 使用 aws-skd-java2 在分区键和排序键上查询 DynamboDB