OpenDAL
Open Data Access Layer: Access data freely, painlessly, and efficiently
Components
- core: OpenDAL Rust Core
- binding-c: OpenDAL C Binding (working on)
- binding-java: OpenDAL Java Binding (working on)
- binding-nodejs: OpenDAL Node.js Binding
- Documentation: main
- binding-python: OpenDAL Python Binding
- Documentation: main
- binding-ruby: OpenDAL Ruby Binding (working on)
- bin
- oli: OpenDAL Command Line Interface
Quickstart
Rust
use opendal::Result;
use opendal::layers::LoggingLayer;
use opendal::services;
use opendal::Operator;
#[tokio::main]
async fn main() -> Result<()> {
// Pick a builder and configure it.
let mut builder = services::S3::default();
builder.bucket("test");
// Init an operator
let op = Operator::new(builder)?
// Init with logging layer enabled.
.layer(LoggingLayer::default())
.finish();
// Write data
op.write("hello.txt", "Hello, World!").await?;
// Read data
let bs = op.read("hello.txt").await?;
// Fetch metadata
let meta = op.stat("hello.txt").await?;
let mode = meta.mode();
let length = meta.content_length();
// Delete
op.delete("hello.txt").await?;
Ok(())
}
Python
import asyncio
async def main():
op = opendal.AsyncOperator("fs", root="/tmp")
await op.write("test.txt", b"Hello World")
print(await op.read("test.txt"))
asyncio.run(main())
Node.js
import { Operator } from "opendal";
async function main() {
const op = new Operator("fs", { root: "/tmp" });
await op.write("test", "Hello, World!");
const bs = await op.read("test");
console.log(new TextDecoder().decode(bs));
const meta = await op.stat("test");
console.log(`contentLength: ${meta.contentLength}`);
}
Projects
- Databend: A modern Elasticity and Performance cloud data warehouse.
- GreptimeDB: An open-source, cloud-native, distributed time-series database.
- deepeth/mars: The powerful analysis platform to explore and visualize data from blockchain.
- mozilla/sccache: sccache is ccache with cloud storage
- risingwave: A Distributed SQL Database for Stream Processing
- Vector: A high-performance observability data pipeline.
Getting help
Submit issues for bug report or asking questions in the Discussions forum.
Talk to develops at discord.
License
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0