Hi David,

I've been working on xDBC with Arrow for a while. I have some thoughts on ODBC.

We connect to the DBMS in Arrow stream using Python through four
different methods: JDBC, ADBC, ODBC, and the Python DB client library.
Typically, ADBC is the preferred method as it provides a "native" way
for Arrow from the ground up. Following that, JDBC is used, as most
new DBMS adapters only require the injection of a specific JDBC
driver, meeting the vast majority of our needs.

We strive to avoid ODBC as much as possible due to its system-wide
configuration and heavy reliance on config files, which can introduce
numerous deployment issues. For instance, the connection string for
ODBC is changeable with different configurations, and multiple
configurations cannot be loaded in a single process. While Docker
images with preconfigured ODBC drivers and configurations are
acceptable for applications, a general-purpose xDBC library requires
developers to dedicate more time to ensuring consistency of the
environment and connections.

In my view, ODBC aims to provide system-wide registered data sources
rather than serving as a universal database driver manager.
David Coe <david....@microsoft.com.invalid> 于2024年3月20日周三 21:22写道:
>
> ODBC has different OS-level driver managers available on their respective 
> systems. It seems like the current driver 
> manager<https://arrow.apache.org/adbc/main/cpp/driver_manager.html> work has 
> been largely targeting an app-specific implementation. Have there been any 
> discussions of ADBC having a similar system-wide driver registration paradigm 
> like ODBC does?



-- 
---------------------
Best Regards,
Wenbo Hu,

Reply via email to