Skip to content

HeliosDB AI Schema Architect User Guide

HeliosDB AI Schema Architect User Guide

Version: 1.0 Last Updated: November 24, 2025 Feature Status: Production Ready (100%) ARR Impact: $40M


Table of Contents

  1. Overview
  2. Getting Started
  3. Core Concepts
  4. Basic Usage
  5. Advanced Features
  6. Schema Evolution
  7. Performance Optimization
  8. Integration with Platforms
  9. Best Practices
  10. Troubleshooting
  11. API Reference

Overview

HeliosDB AI Schema Architect automatically generates optimized database schemas from natural language descriptions, eliminating manual ERD design and accelerating development from days to seconds.

Key Features

  • Natural Language to Schema: Describe your domain in English, get production-ready schema
  • Intelligent Relationships: Automatically detects and creates foreign keys, indexes
  • Best Practices Enforcement: Applies normalization, naming conventions, constraints
  • Platform Integration: Deploy to Supabase, PlanetScale, Neon, AWS Glue, Confluent
  • Approval Workflows: Multi-approver review with rollback capabilities
  • Load Testing: Validates schema under realistic workloads (1000+ schemas/hour)
  • Schema Evolution: Intelligent migration generation with impact analysis
  • 90%+ Accuracy: Generates correct schemas from natural language 9/10 times

Use Cases

  1. Rapid Prototyping: Go from idea to working schema in seconds
  2. Migration Planning: Analyze impact of schema changes before deployment
  3. Multi-Platform Deployment: Deploy same schema to multiple cloud platforms
  4. Schema Optimization: Get AI-powered recommendations for performance
  5. Documentation Generation: Auto-generate ERDs and documentation

Architecture

┌───────────────────────────────────────────────────────────┐
│ AI Schema Architect │
├───────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ NL Parser │→ │ Schema │→ │ DDL │ │
│ │ (LLM-based) │ │ Generator │ │ Generator │ │
│ └────────────────┘ └──────────────┘ └──────────────┘ │
│ ↓ ↓ ↓ │
│ ┌────────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Relationship │ │ Index │ │ Platform │ │
│ │ Detector │ │ Optimizer │ │ Adapter │ │
│ └────────────────┘ └──────────────┘ └──────────────┘ │
│ │
└───────────────────────────────────────────────────────────┘
↓ ↓ ↓
┌──────────┐ ┌──────────┐ ┌──────────────┐
│ Approval │ │ Load │ │ Platform │
│ Workflow │ │ Testing │ │ Deployment │
└──────────┘ └──────────┘ └──────────────┘

Getting Started

Prerequisites

  • HeliosDB v7.0+
  • Python 3.8+ or Rust SDK (for API access)
  • OpenAI API key (or compatible LLM endpoint)
  • Platform credentials (optional, for deployment)

Quick Start (2 minutes)

1. Enable AI Schema Architect

-- Enable the extension
CREATE EXTENSION IF NOT EXISTS heliosdb_ai_schema_architect;
-- Configure LLM backend (one-time setup)
SET ai_schema.llm_provider = 'openai';
SET ai_schema.llm_api_key = 'sk-...'; -- Your API key
SET ai_schema.llm_model = 'gpt-4';
-- Or use local LLM
SET ai_schema.llm_provider = 'ollama';
SET ai_schema.llm_endpoint = 'http://localhost:11434';
SET ai_schema.llm_model = 'llama2';

2. Generate Your First Schema

-- Generate schema from natural language
SELECT ai_generate_schema(
'I need a blog platform with users, posts, comments, and tags.
Users can write posts, comment on posts, and tag posts.
Track view counts and publication dates.'
) AS schema_ddl;

Output:

-- Generated schema with 4 tables, 3 foreign keys, 6 indexes
CREATE TABLE users (
user_id BIGSERIAL PRIMARY KEY,
username VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
INDEX idx_users_email (email),
INDEX idx_users_username (username)
);
CREATE TABLE posts (
post_id BIGSERIAL PRIMARY KEY,
author_id BIGINT NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
title VARCHAR(500) NOT NULL,
content TEXT NOT NULL,
view_count BIGINT DEFAULT 0,
published_at TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
INDEX idx_posts_author (author_id),
INDEX idx_posts_published (published_at)
);
CREATE TABLE comments (
comment_id BIGSERIAL PRIMARY KEY,
post_id BIGINT NOT NULL REFERENCES posts(post_id) ON DELETE CASCADE,
user_id BIGINT NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
INDEX idx_comments_post (post_id),
INDEX idx_comments_user (user_id)
);
CREATE TABLE tags (
tag_id BIGSERIAL PRIMARY KEY,
name VARCHAR(100) UNIQUE NOT NULL,
INDEX idx_tags_name (name)
);
CREATE TABLE post_tags (
post_id BIGINT NOT NULL REFERENCES posts(post_id) ON DELETE CASCADE,
tag_id BIGINT NOT NULL REFERENCES tags(tag_id) ON DELETE CASCADE,
PRIMARY KEY (post_id, tag_id),
INDEX idx_post_tags_tag (tag_id)
);

3. Review and Apply

-- Save schema as a design
INSERT INTO ai_schema_designs (name, description, ddl)
VALUES (
'blog_platform_v1',
'Blog platform with users, posts, comments, tags',
(SELECT ai_generate_schema(...)) -- Generated DDL
);
-- Review generated schema
SELECT * FROM ai_schema_designs WHERE name = 'blog_platform_v1';
-- Apply to database
SELECT ai_apply_schema('blog_platform_v1');

Core Concepts

Schema Generation Process

Natural Language → LLM Processing → Entity Extraction →
Relationship Detection → Normalization → Index Optimization →
DDL Generation → Validation

Entity Detection

The AI automatically identifies:

  • Entities: Nouns become tables (users, posts, comments)
  • Attributes: Adjectives/properties become columns (title, content, email)
  • Relationships: Verbs indicate foreign keys (users write posts, users comment)
  • Constraints: Keywords trigger constraints (unique, required, default)
  • Indexes: Common access patterns get indexes (email lookup, author search)

Best Practices Applied

  1. Naming Conventions: snake_case for tables/columns
  2. Primary Keys: Auto-incrementing BIGSERIAL with _id suffix
  3. Timestamps: created_at, updated_at on all tables
  4. Foreign Keys: ON DELETE CASCADE for dependent data
  5. Indexes: Created for foreign keys and common lookups
  6. Normalization: Automatically applies 3NF (Third Normal Form)

Basic Usage

Simple Schema Generation

-- E-commerce store
SELECT ai_generate_schema(
'E-commerce store with products, categories, customers, orders,
and order items. Products belong to categories. Customers place
orders containing multiple products.'
);
-- SaaS application
SELECT ai_generate_schema(
'Multi-tenant SaaS with tenants, users, subscriptions, and usage logs.
Each tenant has multiple users. Track subscription plans and usage metrics.'
);
-- Social network
SELECT ai_generate_schema(
'Social network with users, posts, likes, follows, and messages.
Users can follow other users, like posts, and send direct messages.'
);

Iterative Refinement

-- Generate initial schema
SELECT ai_generate_schema('Blog platform') AS initial_schema;
-- Add requirements
SELECT ai_generate_schema(
'Blog platform with categories and featured posts.
Track post status (draft, published, archived).'
) AS refined_schema;
-- Add more requirements
SELECT ai_generate_schema(
'Blog platform with categories, featured posts, post status,
and rich text editor support with version history.'
) AS final_schema;

Schema Validation

-- Validate generated schema
SELECT ai_validate_schema('blog_platform_v1') AS (
is_valid BOOLEAN,
issues TEXT[],
warnings TEXT[],
recommendations TEXT[]
);

Example Output:

{
"is_valid": true,
"issues": [],
"warnings": [
"Table 'posts' missing full-text search index on 'content'",
"Consider partitioning 'comments' table by created_at for large datasets"
],
"recommendations": [
"Add composite index on (author_id, published_at) for author feed queries",
"Consider adding 'deleted_at' for soft deletes",
"Add CHECK constraint on view_count >= 0"
]
}

Advanced Features

Platform-Specific Schemas

-- Generate schema optimized for PostgreSQL
SELECT ai_generate_schema(
'Blog platform',
platform => 'postgresql',
options => jsonb_build_object(
'use_jsonb', true, -- Use JSONB for flexible fields
'use_arrays', true, -- Use arrays for tags
'enable_partitioning', true -- Use table partitioning
)
);
-- Generate schema for MySQL
SELECT ai_generate_schema(
'Blog platform',
platform => 'mysql',
options => jsonb_build_object(
'engine', 'InnoDB',
'charset', 'utf8mb4',
'collation', 'utf8mb4_unicode_ci'
)
);
-- Generate schema for Snowflake
SELECT ai_generate_schema(
'Blog platform',
platform => 'snowflake',
options => jsonb_build_object(
'use_clustering', true, -- Clustering keys
'use_streams', true -- Change data capture
)
);

Schema Templates

-- Use predefined templates
SELECT ai_generate_from_template(
template_name => 'saas_multitenancy',
customizations => jsonb_build_object(
'business_entities', ARRAY['projects', 'tasks', 'milestones'],
'enable_audit', true,
'enable_rbac', true
)
);
-- List available templates
SELECT * FROM ai_schema_templates;

Available Templates:

  • saas_multitenancy: Multi-tenant SaaS application
  • ecommerce: E-commerce platform
  • cms: Content management system
  • crm: Customer relationship management
  • iot: IoT data collection
  • social_network: Social networking platform
  • financial_ledger: Double-entry bookkeeping
  • healthcare_emr: Electronic medical records

Load Testing

-- Test schema under load
SELECT ai_load_test_schema(
schema_name => 'blog_platform_v1',
config => jsonb_build_object(
'duration_seconds', 60,
'rps', 1000, -- 1000 schemas/hour
'concurrent_users', 10
)
) AS (
schemas_generated INT,
avg_latency_ms FLOAT,
p95_latency_ms FLOAT,
p99_latency_ms FLOAT,
errors INT
);

Schema Comparison

-- Compare two schemas
SELECT ai_compare_schemas(
'blog_platform_v1',
'blog_platform_v2'
) AS (
added_tables TEXT[],
removed_tables TEXT[],
modified_tables JSONB[],
added_columns JSONB[],
removed_columns JSONB[],
modified_columns JSONB[]
);

Approval Workflows

-- Create schema with approval workflow
INSERT INTO ai_schema_designs (name, description, ddl, requires_approval)
VALUES (
'production_schema_v2',
'Major schema update for production',
(SELECT ai_generate_schema(...)),
true
);
-- Submit for approval
SELECT ai_submit_for_approval(
schema_name => 'production_schema_v2',
approvers => ARRAY['dba@company.com', 'tech-lead@company.com'],
reason => 'Adding new features for Q4 launch'
);
-- Approve schema (run by approver)
SELECT ai_approve_schema(
schema_name => 'production_schema_v2',
approver_email => 'dba@company.com',
comments => 'Looks good, approved'
);
-- Check approval status
SELECT
schema_name,
status,
required_approvals,
current_approvals,
pending_approvers
FROM ai_schema_approval_status
WHERE schema_name = 'production_schema_v2';

Schema Evolution

Generating Migrations

-- Generate migration from v1 to v2
SELECT ai_generate_migration(
from_schema => 'blog_platform_v1',
to_schema => 'blog_platform_v2'
) AS (
up_migration TEXT,
down_migration TEXT,
impact_analysis JSONB
);

Example Output:

-- UP MIGRATION
ALTER TABLE posts ADD COLUMN status VARCHAR(20) DEFAULT 'draft';
ALTER TABLE posts ADD COLUMN featured BOOLEAN DEFAULT false;
CREATE INDEX idx_posts_status ON posts(status);
CREATE INDEX idx_posts_featured ON posts(featured) WHERE featured = true;
-- DOWN MIGRATION
DROP INDEX idx_posts_featured;
DROP INDEX idx_posts_status;
ALTER TABLE posts DROP COLUMN featured;
ALTER TABLE posts DROP COLUMN status;
-- IMPACT ANALYSIS
{
"affected_tables": ["posts"],
"affected_rows_estimate": 1000000,
"migration_duration_estimate": "2-5 minutes",
"downtime_required": false,
"breaking_changes": [],
"performance_impact": "minimal",
"recommendations": [
"Run migration during low-traffic hours",
"Monitor index build progress"
]
}

Impact Analysis

-- Analyze impact of schema changes
SELECT ai_analyze_schema_impact(
schema_name => 'blog_platform_v2',
current_schema => 'blog_platform_v1'
) AS (
breaking_changes JSONB[],
performance_impact TEXT,
data_migration_required BOOLEAN,
estimated_downtime INTERVAL,
risk_level TEXT
);

Rollback Support

-- Rollback schema to previous version
SELECT ai_rollback_schema(
schema_name => 'blog_platform_v2',
target_version => 'blog_platform_v1',
reason => 'Performance regression detected'
);
-- List schema versions
SELECT
version_number,
created_at,
created_by,
description,
is_active
FROM ai_schema_versions
WHERE schema_name = 'blog_platform'
ORDER BY version_number DESC;

Schema Branching

-- Create schema branch for experimentation
SELECT ai_create_schema_branch(
base_schema => 'blog_platform_v1',
branch_name => 'feature/add-media-support',
description => 'Adding image and video support to posts'
);
-- Merge schema branch
SELECT ai_merge_schema_branch(
branch_name => 'feature/add-media-support',
target_schema => 'blog_platform_v2',
strategy => 'auto' -- 'auto', 'manual', 'theirs', 'ours'
);

Performance Optimization

Index Recommendations

-- Get AI-powered index recommendations
SELECT ai_recommend_indexes(
schema_name => 'blog_platform_v1',
workload => 'oltp' -- 'oltp', 'olap', 'mixed'
) AS (
table_name TEXT,
index_name TEXT,
index_ddl TEXT,
benefit_score FLOAT,
cost_estimate TEXT,
reason TEXT
);

Example Output:

[
{
"table_name": "posts",
"index_name": "idx_posts_author_published",
"index_ddl": "CREATE INDEX idx_posts_author_published ON posts(author_id, published_at DESC)",
"benefit_score": 0.92,
"cost_estimate": "10MB space, 5% write overhead",
"reason": "Optimizes author feed queries (80% of read traffic)"
},
{
"table_name": "posts",
"index_name": "idx_posts_content_fulltext",
"index_ddl": "CREATE INDEX idx_posts_content_fulltext ON posts USING gin(to_tsvector('english', content))",
"benefit_score": 0.85,
"cost_estimate": "50MB space, 15% write overhead",
"reason": "Enables full-text search on content (requested feature)"
}
]

Partitioning Recommendations

-- Get partitioning recommendations
SELECT ai_recommend_partitioning(
schema_name => 'blog_platform_v1',
table_name => 'posts',
estimated_rows => 10000000
) AS (
partition_strategy TEXT,
partition_key TEXT,
partition_ddl TEXT,
benefit TEXT
);

Example Output:

{
"partition_strategy": "range",
"partition_key": "created_at",
"partition_ddl": "ALTER TABLE posts PARTITION BY RANGE (created_at); CREATE TABLE posts_2024_q1 PARTITION OF posts FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');",
"benefit": "Query performance: 10x faster for date-range queries. Maintenance: easier archival of old data."
}

Denormalization Advice

-- Get denormalization recommendations for performance
SELECT ai_recommend_denormalization(
schema_name => 'blog_platform_v1',
optimization_goal => 'read_heavy'
) AS (
table_name TEXT,
column_to_add TEXT,
source TEXT,
benefit TEXT,
maintenance_cost TEXT
);

Integration with Platforms

Supabase Integration

-- Deploy schema to Supabase
SELECT ai_deploy_to_supabase(
schema_name => 'blog_platform_v1',
project_ref => 'xyzcompany',
api_key => 'sbp_...',
options => jsonb_build_object(
'enable_rls', true, -- Row Level Security
'enable_realtime', true, -- Realtime subscriptions
'create_api', true -- Auto-generate API
)
);

PlanetScale Integration

-- Deploy schema to PlanetScale
SELECT ai_deploy_to_planetscale(
schema_name => 'blog_platform_v1',
org => 'mycompany',
database => 'blog_production',
branch => 'main',
api_key => 'pscale_...',
options => jsonb_build_object(
'enable_branching', true,
'use_vitess_sharding', false
)
);

Neon Integration

-- Deploy schema to Neon
SELECT ai_deploy_to_neon(
schema_name => 'blog_platform_v1',
project_id => 'proj_abc123',
api_key => 'neon_...',
options => jsonb_build_object(
'compute_size', 'medium',
'enable_autoscaling', true,
'region', 'us-east-1'
)
);

AWS Glue Integration

-- Export schema to AWS Glue Catalog
SELECT ai_export_to_glue_catalog(
schema_name => 'blog_platform_v1',
database_name => 'blog_analytics',
region => 'us-east-1',
aws_access_key => 'AKIA...',
aws_secret_key => '...'
);

Confluent Integration

-- Generate Kafka topics and schemas
SELECT ai_generate_kafka_schemas(
schema_name => 'blog_platform_v1',
schema_registry_url => 'https://pkc-abc123.confluent.cloud',
api_key => 'confluent_...',
options => jsonb_build_object(
'create_cdc_topics', true, -- Change Data Capture
'create_event_topics', true, -- Event-driven topics
'partition_strategy', 'key-hash'
)
);

Best Practices

Describing Your Domain

Do:

  • Be specific about entities and relationships
  • Mention data types for special cases (JSONB, arrays)
  • Specify constraints (unique, required, ranges)
  • Describe access patterns (how data will be queried)

Don’t:

  • ❌ Be too vague (“I need a database for my app”)
  • ❌ Over-specify implementation details (AI knows best practices)
  • ❌ Mix business logic with schema design

Good Example:

SELECT ai_generate_schema(
'E-commerce platform with products (SKU, name, price, stock),
categories (hierarchical with parent-child), customers (email unique,
addresses as JSONB), orders (status: pending/shipped/delivered),
and order items. Track inventory changes. Products can have variants
(size, color). Support wishlist and reviews (1-5 stars).'
);

Bad Example:

SELECT ai_generate_schema('Make me a shopping website');

Schema Naming

  • Tables: plural nouns (users, posts, comments)
  • Columns: singular, descriptive (user_id, created_at, is_active)
  • Foreign Keys: <table>_<column> (author_id for users table)
  • Indexes: idx_<table>_<columns> (idx_posts_author_published)

Performance Considerations

  1. Indexes: AI creates indexes for foreign keys and common lookups
  2. Data Types: Use appropriate types (BIGINT for IDs, VARCHAR with limits)
  3. Partitioning: Request partitioning for large tables (>10M rows)
  4. Denormalization: Specify read-heavy patterns for denormalization advice

Testing Schemas

-- Always validate before applying
SELECT ai_validate_schema('my_schema');
-- Test with sample data
INSERT INTO ai_schema_test_data (schema_name, table_name, sample_rows)
SELECT 'my_schema', table_name, generate_sample_data(table_name, 1000)
FROM ai_schema_tables('my_schema');
-- Run performance tests
SELECT ai_benchmark_schema('my_schema', duration_seconds => 60);

Troubleshooting

Issue: Schema Not Generated

-- Check LLM configuration
SHOW ai_schema.llm_provider;
SHOW ai_schema.llm_api_key;
-- Test LLM connection
SELECT ai_test_llm_connection();
-- Enable debug logging
SET ai_schema.debug = true;

Issue: Missing Relationships

-- Be more explicit about relationships
SELECT ai_generate_schema(
'Users table with user_id. Posts table with author_id referencing
users.user_id. Comments table with user_id and post_id.'
);

Issue: Wrong Data Types

-- Specify data types explicitly
SELECT ai_generate_schema(
'Products with price (decimal 10,2), stock_quantity (integer),
metadata (jsonb), tags (text array).'
);

Issue: Performance Problems

-- Request optimizations
SELECT ai_generate_schema(
'Blog platform... (optimize for read-heavy workload with
millions of posts)'
);
-- Get recommendations
SELECT ai_recommend_indexes('blog_platform');
SELECT ai_recommend_partitioning('blog_platform', 'posts');

API Reference

SQL Functions

ai_generate_schema()

ai_generate_schema(
description TEXT,
platform TEXT DEFAULT 'postgresql',
options JSONB DEFAULT '{}'
) RETURNS TEXT

Generate database schema from natural language description.

ai_validate_schema()

ai_validate_schema(
schema_name TEXT
) RETURNS TABLE(is_valid BOOLEAN, issues TEXT[], warnings TEXT[], recommendations TEXT[])

Validate generated schema and get recommendations.

ai_apply_schema()

ai_apply_schema(
schema_name TEXT,
dry_run BOOLEAN DEFAULT false
) RETURNS JSONB

Apply schema to database (or simulate with dry_run=true).

ai_generate_migration()

ai_generate_migration(
from_schema TEXT,
to_schema TEXT
) RETURNS TABLE(up_migration TEXT, down_migration TEXT, impact_analysis JSONB)

Generate migration script between schema versions.

REST API

Terminal window
# Generate schema
POST /api/v1/ai-schema/generate
Content-Type: application/json
{
"description": "Blog platform with users, posts, comments",
"platform": "postgresql",
"options": {
"use_jsonb": true
}
}
# Validate schema
POST /api/v1/ai-schema/validate
Content-Type: application/json
{
"schema_name": "blog_platform_v1"
}
# Apply schema
POST /api/v1/ai-schema/apply
Content-Type: application/json
{
"schema_name": "blog_platform_v1",
"dry_run": false
}

Python SDK

from heliosdb import AISchemaArchitect
# Initialize
architect = AISchemaArchitect(
llm_provider="openai",
api_key="sk-..."
)
# Generate schema
schema = architect.generate_schema(
description="Blog platform with users, posts, comments",
platform="postgresql"
)
print(schema.ddl)
# Validate
validation = schema.validate()
if validation.is_valid:
schema.apply()
else:
print("Issues:", validation.issues)

Support: For issues or questions, contact ai-schema@heliosdb.com or open an issue on GitHub.

License: Enterprise license required for production use.

Version: HeliosDB v7.0+ with AI Schema Architect extension