Loading...
Loading...
Compare original and translation side by side
undefinedundefined
┌─────────────┐
│ Primary │────────────────┐
│ (Write) │ │
└─────────────┘ │
▼
┌─────────────┐
│ Replica 1 │
│ (Read) │
└─────────────┘
▼
┌─────────────┐
│ Replica 2 │
│ (Analytics)│
└─────────────┘
┌─────────────┐
│ 主库 │────────────────┐
│ (写入) │ │
└─────────────┘ │
▼
┌─────────────┐
│ 只读副本1 │
│ (读取) │
└─────────────┘
▼
┌─────────────┐
│ 只读副本2 │
│ (分析专用)│
└─────────────┘
const db = {
primary: primaryConnection,
read: replicaConnection,
analytics: analyticsConnection,
};
// Write
await db.primary.users.create(data);
// Critical read (always fresh)
await db.primary.users.findById(id);
// Non-critical read (can be slightly stale)
await db.read.products.search(query);
// Analytics
await db.analytics.orders.aggregate(pipeline);const db = {
primary: primaryConnection,
read: replicaConnection,
analytics: analyticsConnection,
};
// 写入
await db.primary.users.create(data);
// 关键读取(始终获取最新数据)
await db.primary.users.findById(id);
// 非关键读取(允许轻微延迟)
await db.read.products.search(query);
// 分析查询
await db.analytics.orders.aggregate(pipeline);undefinedundefinedundefinedundefinedconst pools = {
primary: new Pool({ max: 20, min: 5 }),
read: new Pool({ max: 50, min: 10 }),
analytics: new Pool({ max: 10, min: 2 }),
};const pools = {
primary: new Pool({ max: 20, min: 5 }),
read: new Pool({ max: 50, min: 10 }),
analytics: new Pool({ max: 10, min: 2 }),
};enum QueryType {
WRITE = "primary",
CRITICAL_READ = "primary",
READ = "read",
ANALYTICS = "analytics",
}
function route(queryType: QueryType) {
return pools[queryType];
}enum QueryType {
WRITE = "primary",
CRITICAL_READ = "primary",
READ = "read",
ANALYTICS = "analytics",
}
function route(queryType: QueryType) {
return pools[queryType];
}| Component | Current | Proposed | Delta |
|---|---|---|---|
| Primary DB | $500/mo | $500/mo | $0 |
| Read Replica | - | $500/mo | +$500 |
| Analytics Replica | - | $300/mo | +$300 |
| Total | $500/mo | $1,300/mo | +$800/mo |
| 组件 | 当前成本 | 提议成本 | 变化量 |
|---|---|---|---|
| 主库 | $500/月 | $500/月 | $0 |
| 只读副本 | - | $500/月 | +$500 |
| 分析副本 | - | $300/月 | +$300 |
| 总计 | $500/月 | $1,300/月 | +$800/月 |
undefinedundefinedundefinedundefined