3 releases

new 0.0.3 Jan 29, 2025
0.0.2 Jan 28, 2025
0.0.1 Jan 28, 2025

#216 in Database interfaces

Download history 237/week @ 2025-01-24

237 downloads per month

Apache-2.0

20KB
88 lines

UnityCatalog Server (Work in Progress - Not ready yet. Currently act as placeholder for the name)

A Rust implementation of the UnityCatalog server component, providing metadata management and catalog services.

Overview

UnityCatalog Server is the backend component responsible for managing metadata, schemas, and catalog operations. This Rust implementation aims to provide a high-performance, memory-safe alternative to the original implementation.

Features

  • Metadata management for data assets
  • Schema validation and enforcement
  • Catalog operations (create, read, update, delete)
  • REST API endpoints for client interactions
  • Integration with storage backends

Prerequisites

  • Rust 1.75.0 or higher
  • Cargo package manager

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/unity-catalog-rust
cd unity-catalog-rust/server
  1. Build the project:
cargo build --release

Configuration

Create a config.toml file in the config directory:

[server]
host = "127.0.0.1"
port = 8080

[storage]
backend = "local"  # or "s3", "azure", etc.
path = "/data/unity-catalog"

Running the Server

  1. Start the server in development mode:
cargo run
  1. For production deployment:
./target/release/unity-catalog-server

API Documentation

The server exposes the following REST endpoints:

  • GET /api/v1/catalogs - List all catalogs
  • POST /api/v1/catalogs - Create a new catalog
  • GET /api/v1/catalogs/{id} - Get catalog details
  • PUT /api/v1/catalogs/{id} - Update catalog
  • DELETE /api/v1/catalogs/{id} - Delete catalog

For detailed API documentation, see docs/api.md.

Testing

Run the test suite:

cargo test

For integration tests:

cargo test --features integration-tests

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Acknowledgments

  • Original UnityCatalog project contributors
  • Rust community for excellent tools and libraries
  • Contributors to this Rust implementation

Contact

For questions and support:

  • Create an issue in the GitHub repository

Dependencies

~57MB
~1M SLoC