- contact@insightclickiq.com
- Every click, every session, explained by AI
Postgres by default, ClickHouse for the event table when volume calls for it, and the object store and secret manager of your cloud. Each is selected by configuration, not code changes.
Only one table grows with traffic. Everything else is small.
| Data | Where | Growth |
|---|---|---|
| Events (pageviews, clicks, forms, errors, vitals, custom) | Postgres clickiq.event, partitioned by month; or ClickHouse at large volume | The only high-volume table: about 0.9 KB per event with indexes (measured: 271k events in 246 MB) |
| Sessions and people | Postgres | About one session per 25–50 events; people roughly equal to distinct visitors |
| Session replay | Your object store, gzipped; an index row in Postgres | 50–300 KB per recorded session, never in the database |
| Report PDFs and snapshots | Object store | Kilobytes each |
| Dashboards, reports, segments, signals, agent runs, AI cache | Postgres | Negligible |
| Identity, audit, connections | Postgres (platform tables) | Negligible |
The same product on each cloud's managed services. Store and secret references are a URL scheme in one environment variable.
| Postgres | Object store (replay, PDFs) | Events at large scale | Secrets | |
|---|---|---|---|---|
| AWS | RDS for PostgreSQL (small/mid); Aurora PostgreSQL (mid/large, read replicas); RDS Proxy as the pooler | S3 (s3://); lifecycle to Glacier for replays older than 90 days | ClickHouse Cloud on AWS, or self-managed on EC2/EKS | Secrets Manager (aws-sm://) |
| Azure | Database for PostgreSQL Flexible Server (zone-redundant HA, read replicas) | Blob Storage (az://); cool and archive tiers | ClickHouse Cloud on Azure, or self-managed on AKS | Key Vault (azure-kv://); Managed Identity |
| Google Cloud | Cloud SQL for PostgreSQL (small/mid); AlloyDB (mid/large, the longest Postgres-only runway) | Cloud Storage (gs://); Nearline/Coldline for old replays | ClickHouse Cloud on GCP, or self-managed on GKE | Secret Manager (gcp-sm://) |
| OCI | OCI Database with PostgreSQL | Object Storage (oci://) | Self-managed ClickHouse on Compute or OKE (no managed ClickHouse) | OCI Vault (oci-vault://) |
| On-premises / air-gapped | Postgres 16 (Patroni for HA) | MinIO or Ceph (s3+http://) | ClickHouse open source | Vault, file or environment |
Every current deployment fits a small managed Postgres. Monthly partitions, a retention round that drops whole partitions, a trimmed set of indexes and an optional read replica are already in the product.
| Traffic | Events / month | 13 months retained | Fits |
|---|---|---|---|
| Internal app, demo, small site | 0.1–2 M | 1–25 GB | One small Postgres (2 vCPU / 8 GB) |
| Mid-size product or ecommerce site | 2–30 M | 25–350 GB | Postgres with monthly partitions and a read replica (4–8 vCPU / 32 GB) |
| Large site, many tenants | 30–300 M | 0.3–3.5 TB | Postgres up to about 100 M a month; beyond that, ClickHouse for events |
| Very large multi-tenant | > 300 M | Multi-TB | ClickHouse for events; Postgres for sessions, people and content |
Starting points for the small tier: AWS db.t4g.medium or db.m7g.large with 100 GB gp3; Azure Standard_D2ds_v5; GCP db-custom-2-8192 or AlloyDB 2 vCPU; OCI 2 OCPU. All with automated backups, encryption at rest, TLS required and a private subnet.
Moving the event table to ClickHouse changes a configuration value, not the product.
Database and bucket per region; the console is region-agnostic. A Postgres is never shared across regions.
Database and ClickHouse passwords are resolved from your secret manager at start; nothing sensitive sits in configuration files.
Bedrock (default), Azure OpenAI, Vertex, OCI or an OpenAI-compatible endpoint in your account. Or no model at all: every AI feature has a rules path.
Managed automated backups with point-in-time recovery; bucket versioning or cross-region replication for replays where required.
Per-project retention enforced daily by dropping or trimming partitions; erasure of a person removes every id, session, event and replay object.
Postgres, the API and the console on one machine from the compose file, then move each piece to a managed service.