connector-x db数据快速加载到dataframe的库
connector-x db数据快速加载到dataframe的库,支持不少数据库的到dataframe 数据的写入
支持的数据库
- pg
- mysql
- mariadb
- sqlite
- redshift
- clickhouse
- sql server
- azure sql database
- oracle
- big query
目的
- pandas
- pyarrow
- modin
- dask
- polars
内部处理
- 内存轻量处理
基于了rust 了零拷贝原则
- 如何进行数据下载的
首先通过select * from lineitem limit 1 获取记录集的schema 然后如果分片信息指定了,会执行SELECT MIN($partition_on), MAX($partition_on) FROM (SELECT * FROM lineitem 获取分片的范围,之后原始查询会拆分为不同的查询(基于最大,最小),比如SELECT * FROM (SELECT * FROM lineitem) WHERE $partition_on > 0 AND $partition_on < 10000,之后获取分片数量SELECT COUNT(*) FROM (SELECT * FROM lineitem) WHERE $partition_on > 0 AND $partition_on < 10000, 如果分片信息没有制定,会指定SELECT COUNT(*) FROM (SELECT * FROM lineitem) 最后ConnectorX 会集合schema 信息以及查询的数量进行内存分配以及执行正常的查询 当下载开始的时候,会基于分片创建对应的线程数量,所以数据处理是并行的,每个线程会获取数据库特定的数据,然后通过流模式写入到列或者行模式的目的中
说明
官方还提供了一个不错的论文值得看看,可以更好的了解connector-x 的内部处理
参考资料
https://github.com/sfu-db/connector-x