| Crates.io | aviladb |
| lib.rs | aviladb |
| version | 0.1.0 |
| created_at | 2025-11-23 08:15:26.334423+00 |
| updated_at | 2025-11-23 08:15:26.334423+00 |
| description | AvilaDB - Globally distributed NoSQL database optimized for Brazil and LATAM |
| homepage | https://avila.cloud |
| repository | https://github.com/avilaops/arxis |
| max_upload_size | |
| id | 1946283 |
| size | 236,679 |
AVILA (fortress) + DB (database) = AvilaDB
Where data finds solid ground and engines drive queries
๐ง๐ท Latency 5-10ms in Brazil | ๐ Multi-region writes FREE | ๐ฆ 4 MB documents (2x competitors)
AvilaDB is the distributed NoSQL database for the AVL Cloud Platform - built as a fortress for your data and an engine for your queries.
Like Arxis provides the mathematical citadel, AvilaDB provides the data citadel:
avila-compress (>500 MB/s)AvilaDB follows the Arxis philosophy - solid as a fortress, powerful as an engine.
Built on top of world-class libraries from the Arxis ecosystem:
๐๏ธ avila-compress
๐ avila-telemetry
๐งฎ avila-math
๐ก avx-http
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AvilaDB - Data Citadel โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๐๏ธ Storage Layer (RocksDB) โ
โ - ACID transactions โ
โ - LSM-tree storage โ
โ - avila-compress (LZ4/Zstd) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ๏ธ Query Engine โ
โ - SQL-like queries โ
โ - Vector search (HNSW + avila-math) โ
โ - Partition-aware routing โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๐ก๏ธ Distribution Layer โ
โ - Raft consensus โ
โ - Multi-region replication โ
โ - Automatic failover โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๐ API Layer (avx-http + Axum) โ
โ - REST + gRPC โ
โ - WebSocket subscriptions โ
โ - avila-telemetry observability โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Add to your Cargo.toml:
[dependencies]
aviladb = "0.1"
tokio = { version = "1", features = ["full"] }
# Install via curl
curl -sSL https://avila.cloud/install.sh | sh
# Connect to AvilaDB
avila db connect --account my-account
# Query data
avila db query "SELECT * FROM users WHERE active = true"
docker run -p 8000:8000 avilacloud/aviladb-emulator:latest
use aviladb::{AvilaClient, Document};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Connect to AvilaDB
let client = AvilaClient::connect("http://localhost:8000").await?;
let db = client.database("gamedb").await?;
let players = db.collection("players").await?;
// Insert document (4 MB limit)
let player = Document::new()
.set("userId", "player123")
.set("username", "CoolGamer")
.set("level", 42)
.set("inventory", vec!["sword", "shield"])
.set("stats", json!({
"hp": 100,
"mp": 50,
"attack": 25
}));
let result = players.insert(player).await?;
println!("Inserted: {}", result.id);
// Query with filters
let high_level = players
.query("SELECT * FROM players WHERE level > @min_level")
.param("min_level", 40)
.execute()
.await?;
for doc in high_level {
println!("Player: {}", doc.get("username")?);
}
// Update
players.update()
.set("level", 43)
.where_eq("userId", "player123")
.execute()
.await?;
// Delete
players.delete()
.where_eq("userId", "player123")
.execute()
.await?;
Ok(())
}
use aviladb::{AvilaClient, VectorIndex};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = AvilaClient::connect("http://localhost:8000").await?;
let db = client.database("aidb").await?;
let memories = db.collection("chat_memory").await?;
// Create vector index (HNSW)
memories.create_vector_index("embedding", 1536, "cosine").await?;
// Store with embedding
let memory = Document::new()
.set("userId", "user123")
.set("message", "Tell me about quantum physics")
.set("embedding", vec![0.1, 0.2, 0.3, /* ... 1536 dims */])
.set("timestamp", chrono::Utc::now());
memories.insert(memory).await?;
// Semantic search
let query_embedding = vec![0.15, 0.18, 0.29, /* ... */];
let similar = memories
.vector_search("embedding", query_embedding)
.top_k(5)
.execute()
.await?;
for doc in similar {
println!("Similar: {} (score: {})",
doc.get("message")?,
doc.similarity_score()
);
}
Ok(())
}
use aviladb::{AvilaClient, HierarchicalKey};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = AvilaClient::connect("http://localhost:8000").await?;
let db = client.database("multitenantdb").await?;
// Create collection with HPK
let orders = db.create_collection("orders")
.partition_key(HierarchicalKey::new()
.add_level("tenantId")
.add_level("userId")
.add_level("orderId")
)
.build()
.await?;
// Query within tenant
let tenant_orders = orders
.query("SELECT * FROM orders WHERE tenantId = @tenant")
.param("tenant", "acme-corp")
.execute()
.await?;
// Query specific user
let user_orders = orders
.query("SELECT * FROM orders WHERE tenantId = @tenant AND userId = @user")
.param("tenant", "acme-corp")
.param("user", "user456")
.execute()
.await?;
Ok(())
}
| Feature | AvilaDB | AWS DynamoDB | Azure Cosmos DB |
|---|---|---|---|
| Max document size | 4 MB โ | 400 KB | 2 MB |
| Partition size | 50 GB โ | 10 GB | 20 GB |
| Multi-region writes | FREE โ | Extra cost | Extra cost |
| Vector search | Native โ | Requires OpenSearch | Limited |
| Brazil latency | 5-10ms โ | 80-120ms | 40-60ms |
| Pricing (1M ops) | R$ 0,50 โ | USD 1.25 | USD 0.85 |
| Storage (GB/month) | R$ 0,20 โ | USD 0.25 | USD 0.25 |
AvilaDB is 40-60% cheaper for Brazilian workloads! ๐ง๐ท
// โ
GOOD: Embed related data
let user = Document::new()
.set("userId", "user123")
.set("profile", json!({
"name": "Joรฃo Silva",
"email": "joao@example.com"
}))
.set("preferences", json!({
"theme": "dark",
"language": "pt-BR"
}));
// โ BAD: Too many separate documents for always-together data
// users -> profiles -> preferences (3 queries instead of 1)
// โ
GOOD: High cardinality, even distribution
.partition_key("userId") // userId, tenantId, deviceId, sessionId
// โ BAD: Low cardinality, hot partitions
.partition_key("status") // "active", "inactive" (only 2 values!)
// Log diagnostic info when latency is high
let result = players.query("SELECT * FROM players")
.execute()
.await?;
if result.latency_ms() > 100 {
tracing::warn!(
"High latency: {} ms\nDiagnostics: {}",
result.latency_ms(),
result.diagnostics()
);
}
# Connect to account
avila db connect --account my-account
# List databases
avila db list
# Query interactively
avila db query "SELECT * FROM users LIMIT 10"
# Create collection
avila db create-collection players --partition-key userId
# Import data
avila db import players data.json
# Export data
avila db export players --output backup.json
# Run locally (no cloud costs!)
docker run -p 8000:8000 avilacloud/aviladb-emulator:latest
# Update connection string
export AVILADB_ENDPOINT=http://localhost:8000
AvilaDB embodies the Arxis philosophy:
Contributions are welcome! Please:
git checkout -b feature/awesome-feature)git commit -m 'Add awesome feature')git push origin feature/awesome-feature)Email: nicolas@avila.inc WhatsApp: +55 17 99781-1471 GitHub: https://github.com/avilaops/arxis Docs: https://docs.avila.cloud/aviladb
Dual-licensed under MIT OR Apache-2.0 - See LICENSE-MIT and LICENSE-APACHE for details.
AvilaDB - The Distributed Fortress Part of the AVL Cloud Platform
๐๏ธ Solid as a fortress โ๏ธ Fast as an engine ๐ง๐ท Built for Brazil
Built with โค๏ธ in Rust for the Brazilian and LATAM tech community.