blob: 38ceb081699ad46c4e402b3bcee2384476dfb27b [file]
// All tunable sizing data. Formula-structural constants live in calc.js.
export const COMPUTE_RULE = { vcpuPerTB: 8, memGBPerTB: 32 };
// Lightning-path concurrency levels. Baseline: one 8c/32G segment per TB
// on-disk supports up to ~80 concurrent queries (statement_mem math:
// 32G x 0.9 / 80 = 368MB per query). Higher tiers scale per-segment
// resources linearly per the statement_mem formula. Storage math unaffected.
export const CONCURRENCY_LEVELS = [
{ id: 'std', max: 80, factor: 1 }, // default — leaves results unchanged
{ id: 'high', max: 120, factor: 1.5 },
{ id: 'xhigh', max: 160, factor: 2 },
];
// Physical presets. cores = OS-visible logical cores (x86 with HT; on ARM,
// physical cores are the logical count). arrayTB = usable RAID array
// capacity per data node.
// sas_std / ssd_perf: fin-industry 2023 deck (24 disks, 2×RAID5 of 12 → 22 disks usable).
// nvme_modern: 2025 mainstream practice (12 × 3.84T NVMe, RAID5 → 11 usable).
export const PHYSICAL_PRESETS = [
{
id: 'sas_std', cores: 128, memGB: 512, arrayTB: 26.4, coordStorageTB: 1.8,
network: '2 × 10GbE',
bom: {
cpu: '2 × 32C x86 (HT, 128 threads)', mem: '512 GB',
sysDisk: '2 × 600GB 10K SAS, RAID1',
dataDisk: '24 × 1.2TB 10K SAS', raidKey: 'raid.2x12r5',
coordDataDisk: '4 × 600GB 10K SAS, RAID5',
},
sourceKey: 'source.fin2023',
},
{
id: 'ssd_perf', cores: 128, memGB: 1024, arrayTB: 21.12, coordStorageTB: 2.8,
network: '2 × 10GbE / 25GbE',
bom: {
cpu: '2 × 32C x86 (HT, 128 threads)', mem: '1024 GB',
sysDisk: '2 × 960GB SSD, RAID1',
dataDisk: '24 × 960GB SATA SSD', raidKey: 'raid.2x12r5',
coordDataDisk: '4 × 960GB SSD, RAID5',
},
sourceKey: 'source.fin2023',
},
{
id: 'nvme_modern', cores: 128, memGB: 1024, arrayTB: 42.24, coordStorageTB: 1.9,
network: '2 × 25GbE',
bom: {
cpu: '2 × 32C x86 (Xeon SPR / EPYC 9004; HT, 128 threads)', mem: '1024 GB DDR5',
sysDisk: '2 × 960GB NVMe, RAID1',
dataDisk: '12 × 3.84TB NVMe U.2', raidKey: 'raid.1x12r5',
coordDataDisk: '2 × 1.92TB NVMe, RAID1',
},
sourceKey: 'source.mainstream',
},
];
// VM profiles (virtualized sizing practice, modernized). maxTB = business data threshold.
// 1:4 vCPU:memory, exactly N x (8c/32G per segment). Memory-optimized (1:8)
// variants are a valid upgrade for extra cache/concurrency headroom but do
// not change node counts under the compute rule.
export const VM_PROFILES = [
{ id: 'lite', maxTB: 5, vcpu: 8, memGB: 32, storageTB: 2, throughput: '≥ 500 MB/s', hostKey: 'vmhost.lite' },
{ id: 'medium', maxTB: 50, vcpu: 16, memGB: 64, storageTB: 4, throughput: '≥ 1000 MB/s', hostKey: 'vmhost.medium' },
{ id: 'large', maxTB: Infinity, vcpu: 24, memGB: 96, storageTB: 8, throughput: '≥ 1500 MB/s', hostKey: 'vmhost.large' },
];
export const VM_COORD = { vcpu: 8, memGB: 32, storageTB: 0.5 };
// Cloud schemes: per provider one managed-disk scheme (cloud deployment
// best practice) and one local-NVMe scheme (production practice). Both
// deploy segment primary + mirror for HA.
export const CLOUD_SCHEMES = [
{
id: 'aws_ebs', provider: 'AWS', kindKey: 'scheme.managed', sourceKey: 'source.cloudbp',
network: '10–25 Gbps (ENA)', oss: 'Amazon S3',
coordinator: { instance: 'r5.xlarge', vcpu: 4, memGB: 32, storageTB: 0.5, diskDesc: '1 × 500GB EBS GP3' },
segment: { instance: 'r5.4xlarge', vcpu: 16, memGB: 128, storageTB: 6, diskDesc: '3 × 2TB EBS ST1/GP3' },
},
{
id: 'aws_local', provider: 'AWS', kindKey: 'scheme.local', sourceKey: 'source.hashdata',
network: '25 Gbps', oss: 'Amazon S3',
coordinator: { instance: 'i3.2xlarge', vcpu: 8, memGB: 61, storageTB: 1.9, diskDesc: '1 × 1.9TB NVMe' },
segment: { instance: 'i3en.2xlarge', vcpu: 8, memGB: 64, storageTB: 5, diskDesc: '2 × 2.5TB NVMe local' },
},
{
id: 'azure_premium', provider: 'Azure', kindKey: 'scheme.managed', sourceKey: 'source.cloudbp',
network: 'Accelerated Networking, UDP interconnect', oss: 'Azure Blob',
coordinator: { instance: 'Standard_E8s_v5', vcpu: 8, memGB: 64, storageTB: 1, diskDesc: '1 × P30 1TB Premium SSD' },
segment: { instance: 'Standard_E16s_v5', vcpu: 16, memGB: 128, storageTB: 6, diskDesc: '3 × P40 2TB Premium SSD' },
noteKey: 'note.azure.extra',
},
{
id: 'azure_local', provider: 'Azure', kindKey: 'scheme.local', sourceKey: 'source.hashdata',
network: '12.5–32 Gbps', oss: 'Azure Blob',
coordinator: { instance: 'Standard_E8s_v5', vcpu: 8, memGB: 64, storageTB: 1, diskDesc: '1 × P30 1TB Premium SSD' },
segment: { instance: 'Standard_L8s_v3', vcpu: 8, memGB: 64, storageTB: 1.92, diskDesc: '1 × 1.92TB NVMe local' },
},
{
id: 'gcp_pd', provider: 'GCP', kindKey: 'scheme.managed', sourceKey: 'source.cloudbp',
network: '10–25 Gbps', oss: 'Google Cloud Storage',
coordinator: { instance: 'n2-highmem-8', vcpu: 8, memGB: 64, storageTB: 0.5, diskDesc: '1 × 500GB pd-ssd' },
segment: { instance: 'n2-highmem-8', vcpu: 8, memGB: 64, storageTB: 4, diskDesc: '1 × 4TB pd-ssd' },
noteKey: 'note.gcp.extra',
},
{
id: 'gcp_local', provider: 'GCP', kindKey: 'scheme.local', sourceKey: 'source.hashdata',
network: '20 Gbps', oss: 'Google Cloud Storage',
coordinator: { instance: 'c3d-standard-8-lssd', vcpu: 8, memGB: 32, storageTB: 2, diskDesc: 'Local SSD' },
segment: { instance: 'c3d-standard-8-lssd', vcpu: 8, memGB: 32, storageTB: 2, diskDesc: '2TB Local SSD' },
},
];