[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-deep-evm-26-fenpa-vs-fenqu-dabiao-jiagou":3},{"article":4,"author":59},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":24,"related_articles":39},"d3000000-0000-0000-0000-000000000126","a0000000-0000-0000-0000-000000000035","Deep EVM #26：分片 vs 分区——大表架构方案","deep-evm-26-fenpa-vs-fenqu-dabiao-jiagou","比较数据库分片和分区的水平扩展策略。涵盖一致性哈希、分片路由和决策框架。","## 分区 vs 分片：核心区别\n\n- **分区** — 单个数据库内的表分割。数据仍在同一台服务器上。\n- **分片** — 跨多台数据库服务器分布数据。每个分片是独立的数据库实例。\n\n## 何时使用分区\n\n- 表太大导致查询慢，但单服务器容量足够\n- 需要按时间范围归档旧数据\n- 查询模式与分区键对齐\n\n## 何时使用分片\n\n- 单服务器无法承载写入负载\n- 数据量超过单机存储能力\n- 需要地理分布以降低延迟\n\n## 一致性哈希\n\n一致性哈希是分片路由的基础算法，确保在添加或移除分片时最小化数据迁移：\n\n```rust\nfn get_shard(key: &str, num_shards: u32) -> u32 {\n    let hash = murmur3_x64_128(key.as_bytes(), 0);\n    (hash % num_shards as u128) as u32\n}\n```\n\n## 分片路由\n\n应用层需要知道数据在哪个分片上。常见模式：\n- 路由表\n- 哈希函数\n- 范围映射\n\n## 决策框架\n\n| 因素 | 分区 | 分片 |\n|------|------|------|\n| 复杂性 | 低 | 高 |\n| 写入扩展 | 有限 | 线性 |\n| 跨分片查询 | 不适用 | 昂贵 |\n| 运维开销 | 低 | 高 |\n\n## 总结\n\n先分区，后分片。大多数应用程序通过分区即可满足需求。只有在单服务器确实成为瓶颈时才考虑分片。","\u003Ch2 id=\"vs\">分区 vs 分片：核心区别\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>分区\u003C\u002Fstrong> — 单个数据库内的表分割。数据仍在同一台服务器上。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>分片\u003C\u002Fstrong> — 跨多台数据库服务器分布数据。每个分片是独立的数据库实例。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"\">何时使用分区\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>表太大导致查询慢，但单服务器容量足够\u003C\u002Fli>\n\u003Cli>需要按时间范围归档旧数据\u003C\u002Fli>\n\u003Cli>查询模式与分区键对齐\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"\">何时使用分片\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>单服务器无法承载写入负载\u003C\u002Fli>\n\u003Cli>数据量超过单机存储能力\u003C\u002Fli>\n\u003Cli>需要地理分布以降低延迟\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"\">一致性哈希\u003C\u002Fh2>\n\u003Cp>一致性哈希是分片路由的基础算法，确保在添加或移除分片时最小化数据迁移：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-rust\">fn get_shard(key: &amp;str, num_shards: u32) -&gt; u32 {\n    let hash = murmur3_x64_128(key.as_bytes(), 0);\n    (hash % num_shards as u128) as u32\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"\">分片路由\u003C\u002Fh2>\n\u003Cp>应用层需要知道数据在哪个分片上。常见模式：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>路由表\u003C\u002Fli>\n\u003Cli>哈希函数\u003C\u002Fli>\n\u003Cli>范围映射\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"\">决策框架\u003C\u002Fh2>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>因素\u003C\u002Fth>\u003Cth>分区\u003C\u002Fth>\u003Cth>分片\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>复杂性\u003C\u002Ftd>\u003Ctd>低\u003C\u002Ftd>\u003Ctd>高\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>写入扩展\u003C\u002Ftd>\u003Ctd>有限\u003C\u002Ftd>\u003Ctd>线性\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>跨分片查询\u003C\u002Ftd>\u003Ctd>不适用\u003C\u002Ftd>\u003Ctd>昂贵\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>运维开销\u003C\u002Ftd>\u003Ctd>低\u003C\u002Ftd>\u003Ctd>高\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2 id=\"\">总结\u003C\u002Fh2>\n\u003Cp>先分区，后分片。大多数应用程序通过分区即可满足需求。只有在单服务器确实成为瓶颈时才考虑分片。\u003C\u002Fp>\n","zh","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:26.319309Z","分片 vs 分区——大表架构方案","比较数据库分片和分区策略：一致性哈希、分片路由和水平扩展的决策框架。","分片 vs 分区",null,"index, follow",[22,27,31,35],{"id":23,"name":24,"slug":25,"created_at":26},"c0000000-0000-0000-0000-000000000012","DevOps","devops","2026-03-28T10:44:21.513630Z",{"id":28,"name":29,"slug":30,"created_at":26},"c0000000-0000-0000-0000-000000000022","Performance","performance",{"id":32,"name":33,"slug":34,"created_at":26},"c0000000-0000-0000-0000-000000000005","PostgreSQL","postgresql",{"id":36,"name":37,"slug":38,"created_at":26},"c0000000-0000-0000-0000-000000000001","Rust","rust",[40,47,53],{"id":41,"title":42,"slug":43,"excerpt":44,"locale":12,"category_name":45,"published_at":46},"d0000000-0000-0000-0000-000000000668","为什么Bali在2026年正在成为东南亚的影响力科技中心","weishenme-bali-2026-zhengzai-chengwei-dongnanya-yingxiangli-keji-zhongxin","Bali在东南亚创业生态系统中排名第16位。随着Web3构建者、AI可持续发展初创公司和生态旅游科技公司的集中，该岛正在打造区域影响力科技之都的独特定位。","工程","2026-03-28T10:44:48.898750Z",{"id":48,"title":49,"slug":50,"excerpt":51,"locale":12,"category_name":45,"published_at":52},"d0000000-0000-0000-0000-000000000667","ASEAN数据保护拼图：开发者合规清单","asean-shuju-baohu-pintu-kaifazhe-heguiqingdan","七个ASEAN国家现已拥有全面的数据保护法律，各自具有不同的同意模型、本地化要求和处罚结构。这是一份为构建多国应用程序的开发者准备的实用合规清单。","2026-03-28T10:44:48.893467Z",{"id":54,"title":55,"slug":56,"excerpt":57,"locale":12,"category_name":45,"published_at":58},"d0000000-0000-0000-0000-000000000666","Indonesia 290亿美元数字化转型：软件公司的机遇","indonesia-290yi-meiyuan-shuzihua-zhuanxing-ruanjian-gongsi-jiyu","Indonesia IT服务市场预计在2026年达到290.3亿美元，高于2025年的243.7亿美元。云基础设施、AI、电子商务和数据中心正在推动东南亚最快的增长。","2026-03-28T10:44:48.875457Z",{"id":13,"name":60,"slug":61,"bio":62,"photo_url":19,"linkedin":19,"role":63,"created_at":64,"updated_at":64},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]