#thrift #api-bindings #api-client #connecting #expose #omni-sci-db #mapd

omnisci

使用 Thrift API 连接到 OmniSciDB 的客户端

1 个不稳定版本

0.1.0 2020年2月24日

#1838数据库接口

MIT 许可证

1MB
27K SLoC

OmniSci

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