Real-World Examples
Overview
Section titled “Overview”HaruDB is designed to handle complex real-world applications with robust data modeling, transactions, and performance. This guide provides two comprehensive examples that demonstrate the full capabilities of HaruDB in production environments.
Example 1: Banking System
Section titled “Example 1: Banking System”A complete banking system with customers, accounts, transactions, loans, and employee management.
Architecture Overview
Section titled “Architecture Overview”┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ Customers │ │ Accounts │ │ Transactions ││ │ │ │ │ ││ • customer_id │◄──►│ • account_id │◄──►│ • transaction_id││ • personal_info │ │ • customer_id │ │ • account_id ││ • contact_info │ │ • account_type │ │ • amount ││ • address │ │ • balance │ │ • type │└─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ┌─────────────────┐ │ │ Loans │ │ │ │ └──────────────►│ • loan_id │ │ • customer_id │ │ • amount │ │ • interest_rate │ └─────────────────┘
Key Features Demonstrated
Section titled “Key Features Demonstrated”- Multi-table relationships with foreign keys
- Financial calculations with decimal precision
- Transaction logging for audit trails
- User management with roles and permissions
- Performance optimization with strategic indexing
Sample Schema
Section titled “Sample Schema”-- Core tablesCREATE TABLE customers (customer_id, first_name, last_name, email, phone, date_of_birth, address, city, state, zip_code, created_at, status);CREATE TABLE accounts (account_id, customer_id, account_type, account_number, balance, interest_rate, created_at, status);CREATE TABLE transactions (transaction_id, account_id, transaction_type, amount, description, reference_number, created_at, status);CREATE TABLE loans (loan_id, customer_id, loan_type, principal_amount, interest_rate, term_months, monthly_payment, remaining_balance, created_at, status);
-- Performance indexesCREATE INDEX ON customers (email);CREATE INDEX ON accounts (customer_id);CREATE INDEX ON transactions (account_id);
Sample Queries
Section titled “Sample Queries”-- Get customer account summarySELECT c.first_name, c.last_name, a.account_type, a.balanceFROM customers c, accounts aWHERE c.customer_id = a.customer_id;
-- Transaction history with detailsSELECT transaction_type, amount, description, created_atFROM transactionsWHERE account_id = 1ORDER BY created_at DESC;
-- High-value customersSELECT c.first_name, c.last_name, SUM(a.balance) as total_balanceFROM customers c, accounts aWHERE c.customer_id = a.customer_idGROUP BY c.customer_idHAVING total_balance > 50000;
Data Volume
Section titled “Data Volume”- Customers: 5,000+ records
- Accounts: 10,000+ records
- Transactions: 100,000+ records
- Loans: 1,000+ records
- Performance: Sub-second queries on indexed fields
Example 2: Food Ordering App (Swiggy/Zomato Style)
Section titled “Example 2: Food Ordering App (Swiggy/Zomato Style)”A complete food delivery platform with restaurants, menus, orders, and delivery tracking.
Architecture Overview
Section titled “Architecture Overview”┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ Users │ │ Restaurants │ │ Menu Items ││ │ │ │ │ ││ • user_id │ │ • restaurant_id │◄──►│ • item_id ││ • username │ │ • name │ │ • restaurant_id ││ • contact_info │ │ • cuisine_type │ │ • name ││ • address │ │ • rating │ │ • price │└─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ ┌─────────────────┐ │ │ │ Orders │ │ │ │ │ │ └──────────────►│ • order_id │◄─────────────┘ │ • user_id │ │ • restaurant_id │ │ • total_amount │ │ • order_status │ └─────────────────┘ │ ┌─────────────────┐ │ Deliveries │ │ │ │ • delivery_id │ │ • order_id │ │ • delivery_person│ │ • status │ └─────────────────┘
Key Features Demonstrated
Section titled “Key Features Demonstrated”- Complex relationships between users, restaurants, and orders
- Real-time tracking of delivery status
- Review and rating system for quality control
- Promotional campaigns with discount management
- Geographic queries for location-based services
Sample Schema
Section titled “Sample Schema”-- Core tablesCREATE TABLE users (user_id, username, email, phone, full_name, address, city, state, zip_code, created_at, status);CREATE TABLE restaurants (restaurant_id, name, description, cuisine_type, address, city, rating, delivery_fee, minimum_order, created_at, status);CREATE TABLE menu_items (item_id, restaurant_id, name, description, price, category, is_vegetarian, is_vegan, calories, created_at, status);CREATE TABLE orders (order_id, user_id, restaurant_id, order_date, total_amount, delivery_fee, final_amount, order_status, created_at);CREATE TABLE order_items (order_item_id, order_id, item_id, quantity, unit_price, total_price, special_instructions);CREATE TABLE deliveries (delivery_id, order_id, delivery_person_id, pickup_time, delivery_time, delivery_status, created_at);
-- Performance indexesCREATE INDEX ON restaurants (city);CREATE INDEX ON menu_items (restaurant_id);CREATE INDEX ON orders (user_id);CREATE INDEX ON orders (order_date);
Sample Queries
Section titled “Sample Queries”-- Restaurant search by cuisine and locationSELECT name, cuisine_type, rating, delivery_feeFROM restaurantsWHERE city = 'New York' AND cuisine_type = 'Italian'ORDER BY rating DESC;
-- Order trackingSELECT o.order_id, r.name as restaurant_name, o.order_status, d.delivery_statusFROM orders o, restaurants r, deliveries dWHERE o.user_id = 1 AND o.restaurant_id = r.restaurant_id AND d.order_id = o.order_id;
-- Popular menu itemsSELECT mi.name, COUNT(oi.order_item_id) as order_countFROM menu_items mi, order_items oiWHERE mi.item_id = oi.item_idGROUP BY mi.item_id, mi.nameORDER BY order_count DESC;
Data Volume
Section titled “Data Volume”- Users: 50,000+ records
- Restaurants: 1,000+ records
- Menu Items: 10,000+ records
- Orders: 100,000+ records
- Order Items: 500,000+ records
- Performance: Real-time queries with <100ms response time
Performance Characteristics
Section titled “Performance Characteristics”Banking System Performance
Section titled “Banking System Performance”Operation | Records | Response Time | Index Used |
---|---|---|---|
Customer Lookup | 5,000 | <10ms | email, phone |
Account Balance | 10,000 | <5ms | customer_id |
Transaction History | 100,000 | <50ms | account_id, date |
Loan Calculations | 1,000 | <20ms | customer_id |
Food Ordering App Performance
Section titled “Food Ordering App Performance”Operation | Records | Response Time | Index Used |
---|---|---|---|
Restaurant Search | 1,000 | <15ms | city, cuisine_type |
Menu Display | 10,000 | <20ms | restaurant_id |
Order Creation | 100,000 | <30ms | user_id, restaurant_id |
Delivery Tracking | 50,000 | <10ms | order_id |
Getting Started with Examples
Section titled “Getting Started with Examples”1. Set Up the Database
Section titled “1. Set Up the Database”# Start HaruDB server./harudb --data-dir ./data
# Connect with CLI./haru-cli
2. Load Example Data
Section titled “2. Load Example Data”# Banking systemLOGIN admin admin123# Copy and paste banking_system.sql content
# Food ordering app# Copy and paste food_ordering_app.sql content
3. Run Sample Queries
Section titled “3. Run Sample Queries”-- Test banking queriesSELECT COUNT(*) FROM customers;SELECT COUNT(*) FROM transactions;
-- Test food app queriesSELECT COUNT(*) FROM restaurants;SELECT COUNT(*) FROM orders;
Best Practices Demonstrated
Section titled “Best Practices Demonstrated”1. Schema Design
Section titled “1. Schema Design”- Normalized structure to avoid data redundancy
- Strategic indexing for query performance
- Proper data types for different use cases
- Foreign key relationships for data integrity
2. Performance Optimization
Section titled “2. Performance Optimization”- Index on frequently queried columns
- Composite indexes for multi-column queries
- Query optimization with proper WHERE clauses
- Pagination for large result sets
3. Data Security
Section titled “3. Data Security”- User authentication and authorization
- Role-based access control
- Audit trails for sensitive operations
- Data encryption for sensitive information
4. Scalability Considerations
Section titled “4. Scalability Considerations”- Horizontal partitioning by date or region
- Read replicas for reporting queries
- Caching strategies for frequently accessed data
- Connection pooling for high concurrency
Advanced Use Cases
Section titled “Advanced Use Cases”1. Real-time Analytics
Section titled “1. Real-time Analytics”-- Daily transaction volumeSELECT DATE(created_at) as date, COUNT(*) as transaction_count, SUM(amount) as total_amountFROM transactionsWHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)GROUP BY DATE(created_at)ORDER BY date DESC;
2. Geographic Queries
Section titled “2. Geographic Queries”-- Restaurants within delivery radiusSELECT name, address, ratingFROM restaurantsWHERE city = 'New York' AND status = 'active'ORDER BY rating DESC;
3. Business Intelligence
Section titled “3. Business Intelligence”-- Customer lifetime valueSELECT c.customer_id, c.first_name, SUM(o.final_amount) as lifetime_valueFROM customers c, orders oWHERE c.user_id = o.user_idGROUP BY c.customer_idORDER BY lifetime_value DESC;
Conclusion
Section titled “Conclusion”These examples demonstrate HaruDB’s capability to handle complex, real-world applications with:
- High performance for both OLTP and OLAP workloads
- Scalable architecture supporting millions of records
- Rich query capabilities for complex business logic
- Robust transaction support for data consistency
- Flexible schema design for evolving requirements
HaruDB provides the foundation for building production-ready applications across various industries, from financial services to e-commerce platforms.