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 <[email protected]> 于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,
