1 个不稳定版本
0.0.1 | 2023年7月15日 |
---|
#63 in #sharing
190KB
4.5K SLoC
Delta Sharing服务器库(适用于Rust)
此crate目前处于开发中。如果您有兴趣合作,请与我们联系。
lib.rs
:
Delta Sharing服务器
Delta Sharing服务器提供了构建与Delta Sharing协议兼容的服务的构建块。
Delta Sharing协议
Delta Sharing是一个用于安全实时交换大数据集的开源协议,它使组织能够在使用任何计算平台的情况下实时共享数据。它是一个简单的REST协议,它安全地共享对云数据集一部分的访问权限,并利用现代云存储系统(如S3、ADLS或GCS)来可靠地传输数据。
设计
为了提供灵活性,此crate围绕三个核心抽象构建。
- ShareReader:此trait负责共享服务器与源系统之间在共享、模式和表之间的通信。
- TableReader:此trait负责读取指定表格格式的表。
- UrlSigner:此trait负责签名将要用于访问数据的URL。
use delta_sharing_server::manager::dynamo::DynamoShareReader;
use delta_sharing_server::reader::delta::DeltaTableReader;
use delta_sharing_server::signer::s3::S3UrlSigner;
use delta_sharing_server::router::build_sharing_server_router;
use delta_sharing_server::state::SharingServerState;
#[tokio::main]
async fn main() {
// configure table manager
let config = aws_config::load_from_env().await;
let ddb_client = aws_sdk_dynamodb::Client::new(&config);
let table_manager = Arc::new(DynamoShareReader::new(ddb_client, "delta-sharing-table".to_owned(), "GSI1".to_owned()));
// configure table readers
let delta_table_reader = Arc::new(DeltaTableReader::new());
// configure file url signers
let s3_client = aws_sdk_s3::Client::new(&config);
let s3_url_signer = Arc::new(S3UrlSigner::new(s3_client));
// initialize server state
let mut state = SharingServerState::new(table_manager);
state.add_table_reader("DELTA", delta_table_reader);
state.add_url_signer("S3", s3_url_signer);
// start server
let app = build_sharing_server_router(Arc::new(state));
axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
.serve(app.into_make_service())
.await
.unwrap();
}
依赖项
~90MB
~1.5M SLoC