1 个不稳定版本

0.0.1 2023年7月15日

#63 in #sharing

Apache-2.0

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