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

https://sfu-db.github.io/connector-x/

https://crows.land/files/ConnectorX.pdf

posted on 2024-12-02 08:06  荣锋亮  阅读(2)  评论(0编辑  收藏  举报

导航