// ==========================================
// 云资源可视化地图系统 - Neo4j 图数据库建模
// 第一阶段:核心基础资源建模
// ==========================================

// 1. 创建唯一性约束
CREATE CONSTRAINT account_id IF NOT EXISTS FOR (a:Account) REQUIRE a.id IS UNIQUE;
CREATE CONSTRAINT region_id IF NOT EXISTS FOR (r:Region) REQUIRE r.id IS UNIQUE;
CREATE CONSTRAINT az_id IF NOT EXISTS FOR (az:AZ) REQUIRE az.id IS UNIQUE;
CREATE CONSTRAINT cost_id IF NOT EXISTS FOR (c:Cost) REQUIRE c.id IS UNIQUE;

// ==========================================
// 1. Account(账号)资源建模 - 完善版
// ==========================================
CREATE (acc:Account {
id: "123456789012",
name: "production-account",
projects: ["bdp", "dkms", "dqa", "dir", "analytics", "security"],
organization: "TechCorp-Platform-Engineering",
env: "prod",
owner: "[email protected]",
status: "active",
tag: {
cost_center: "engineering",
department: "platform",
business_unit: "core_services",
compliance: "pci_dss"
},
created_at: datetime(),
updated_at: datetime()
});

// ==========================================
// 2. Cost(成本)节点建模 - 支持成本云图
// ==========================================

// 2.1 月度总成本节点
CREATE (cost_monthly:Cost {
id: "cost-123456789012-2024-03",
resource_id: "123456789012",
resource_type: "Account",
cost_type: "monthly_total",
amount: 25680.50,
currency: "USD",
period: "2024-03",
breakdown: {
compute: 12500.20,
storage: 3200.15,
network: 1800.30,
database: 4500.80,
lambda: 680.25,
other: 2999.80
},
tag: {
forecast: "high_confidence",
variance: "+15%"
},
status: "finalized",
created_at: datetime(),
updated_at: datetime()
});

// 2.2 日度成本节点(用于趋势分析)
CREATE (cost_daily:Cost {
id: "cost-123456789012-2024-03-15",
resource_id: "123456789012",
resource_type: "Account",
cost_type: "daily",
amount: 856.20,
currency: "USD",
period: "2024-03-15",
breakdown: {
compute: 420.50,
storage: 105.80,
network: 58.90,
database: 150.20,
lambda: 22.60,
other: 98.20
},
tag: {
anomaly: "normal",
trend: "increasing"
},
status: "estimated",
created_at: datetime(),
updated_at: datetime()
});

// Account与Cost的关系
MATCH (acc:Account {id: "123456789012"}), (c1:Cost {id: "cost-123456789012-2024-03"})
CREATE (acc)-[:HAS_COST]->(c1);

MATCH (acc:Account {id: "123456789012"}), (c2:Cost {id: "cost-123456789012-2024-03-15"})
CREATE (acc)-[:HAS_COST]->(c2);

// ==========================================
// 3. Region(区域)资源建模 - 增强版
// ==========================================
CREATE (region1:Region {
id: "cn-north-1",
name: "Beijing",
availability_sla: 99.99,
operational_metrics: {
avg_response_time: 45.2,
incident_count_monthly: 2,
maintenance_window: "Sunday 02:00-04:00 UTC+8"
},
tag: {
country: "China",
provider: "AWS",
tier: "production"
},
status: "active",
created_at: datetime(),
updated_at: datetime()
});

CREATE (region2:Region {
id: "cn-northwest-1",
name: "Ningxia",
availability_sla: 99.95,
operational_metrics: {
avg_response_time: 52.8,
incident_count_monthly: 1,
maintenance_window: "Sunday 03:00-05:00 UTC+8"
},
tag: {
country: "China",
provider: "AWS",
tier: "disaster_recovery"
},
status: "active",
created_at: datetime(),
updated_at: datetime()
});

// ==========================================
// 4. AZ(可用区)资源建模
// ==========================================
CREATE (az1:AZ {
id: "cn-north-1a",
name: "Beijing Zone A",
tag: {
physical_location: "Beijing-DC-Alpha",
power_redundancy: "N+1"
},
status: "active",
created_at: datetime(),
updated_at: datetime()
});

CREATE (az2:AZ {
id: "cn-north-1b",
name: "Beijing Zone B",
tag: {
physical_location: "Beijing-DC-Beta",
 
 
Back to Top