1 个不稳定版本
0.1.0 | 2020年2月24日 |
---|
#1838 在 数据库接口
1MB
27K SLoC
omnisci-rs
一个通过 Thrift RPC 协议连接到 OmniSciDB 的 Rust 客户端。此包负责创建使用 Thrift 二进制协议和缓冲传输的客户端,并公开所有 OmniSci Thrift 类型和方法以供使用。
要求
此客户端已在以下版本上测试过,并预期与较新版本兼容,除非另有说明
- Rust 1.41+
- OmniSciDB 5.1+
它可能也适用于更早版本的 OmniSciDB,但此版本未得到官方支持。
如何使用
将 omnisci
添加到您的 Cargo.toml
[dependencies]
omnisci = "0.1.0"
然后创建一个客户端并连接(到 OmniSciDB 实例的 'Backend TCP' 端口)
use omnisci;
let mut client = omnisci::client::create("127.0.0.1:6274")?;
let user = "admin".to_string();
let passwd = "HyperInteractive".to_string();
let database = "omnisci".to_string();
let session = client.connect(user, passwd, database)?;
let query = "SELECT * FROM flights_donotmodify LIMIT 5".to_string();
let columnar = false;
let nonce = "1".to_string();
let first_n = 10000;
let at_most_n = -1;
let results = client.sql_execute(session, query, columnar, nonce, first_n, at_most_n);
有关更完整的示例,请参阅示例文件夹。
贡献
构建
该项目使用 Cargo 构建,使用 cargo build
。除 lib.rs 外,src/ 目录中的每个文件都是自动生成的,使用 Thrift,基于存储在 omniscidb (mapd.thrift,以及通过 include 引用的 .thrift 文件) 的 Thrift 定义。要重新生成它们,请使用系统包管理器安装 Thrift 0.13.0,本地克隆 omniscidb,然后运行
./generate_thrift_bindings.sh ../omniscidb
所有源代码也使用 rustfmt 格式化,通过 cargo fmt
。
测试
集成测试期望在默认的 Backend TCP 端口上运行本地的 OmniSciDB 实例:https://127.0.0.1:6274
如果是本地运行(例如使用 ./startomnisci
脚本),则默认情况下可以访问该端口。如果使用 Docker 运行,除了默认的前端 Web 端口外,还应使用 -6274:6274
暴露 Backend TCP 端口。
准备就绪后,运行 cargo test
。
许可证
本项目采用MIT许可证。
依赖项
~1MB
~18K SLoC