GlareDB / glaredb

GlareDB: An analytics DBMS for distributed data
https://glaredb.com
GNU Affero General Public License v3.0
638 stars 37 forks source link

ADBC driver for glaredb #2106

Open universalmind303 opened 10 months ago

universalmind303 commented 10 months ago

Description

create an ADBC driver for glaredb.

We could do this via #1827. There is already an ADBC driver for Flight SQL, but that would be less performant than a native implementation.

Native implementations are allowed to do zero copy while Flight SQL goes over RPC.

References

universalmind303 commented 10 months ago

Note: If we try to do a native implementation, we will likely need to create our own rust based ADBC implementation. There currently isn't a rust ADBC implementation.

We could use extern "C" & patch into the c library, but a native rust implementation would probably be "safer"

scsmithr commented 10 months ago

There's some rust code in upstream ADBC repo that we could use: https://github.com/apache/arrow-adbc/tree/main/rust/src

universalmind303 commented 10 months ago

There's some rust code in upstream ADBC repo that we could use: https://github.com/apache/arrow-adbc/tree/main/rust/src

I was looking at that the other day, It looks like it only really provides the interfaces (traits) & common structs, but isn't a full fledged driver sdk like the other languages offer. It also uses the apache_arrow crate instead of c structs, so afaik it isnt portable across languages like ADBC is supposed to be.

tychoish commented 10 months ago

Is there a user or a feature that would be dependent upon it?

My assumptions are that:

Just to be clear, I think we should probably do this and flightsql, but given finite resources and time, we should try to do flight first.