🧱 第一层:Block——内容原子单元
Block 是 Notion 软件中最小的可寻址内容单元。每个 Block 在服务端拥有全局唯一 ID(UUID),并携带以下核心元数据:
- type:标识 Block 种类,如 paragraph、heading_1、to_do、code、child_page、child_database 等 40+ 种
- parent_id:指向父 Block 或父 Page,构成树状层级
- properties:类型特定的内容载荷,如 paragraph 的 rich_text 数组、to_do 的 checked 布尔值
- created_time / last_edited_time:服务端时间戳,用于同步排序与版本追溯
用户在编辑器中的所有操作——输入文字、拖拽排序、删除、折叠 Toggle——本质上都是对 Block 树的原子变更。Slash 命令(/)是 Block 类型的快速插入器:输入 /todo 即创建一个 type=to_do 的新 Block 并挂载到当前 parent_id 下。
这种「一切皆 Block」的设计使 Notion 能在同一份文档中无缝混排文字、媒体、Database 和嵌入内容,而不需要像传统 Office 套件那样在「文档模式」与「表格模式」之间切换。
📄 第二层:Page——特殊的 Block 子类型
Page 在 Notion 软件中不是独立的数据实体,而是 type 为 page 或 child_page 的 Block。关键区别在于:Page Block 拥有自己的 children 列表,即页面内的所有 Block 都挂载在该 Page Block 的 parent_id 下。
这意味着 Page 可以无限嵌套——一个 Page Block 内部可以包含另一个 child_page Block,形成任意深度的层级结构。侧边栏的页面树,本质上是 Page Block 树的可视化导航。
Page 还承载权限边界:每个 Page 可独立设置 Full access、Can edit、Can comment、Can view 四级权限(Business 计划支持更细粒度)。权限继承遵循「子 Page 默认继承父 Page,可单独覆盖」的规则。
Full Page Database(独立数据库页面)与 Inline Database(行内数据库)的区别也源于 Block 模型:前者是 type=child_database 的顶层 Page Block,后者是嵌入在普通 Page 内部的 database Block。
🏢 第三层:Workspace——权限与同步边界
Workspace 是 Notion 软件中数据隔离的最高单位。一个用户账号可加入多个 Workspace(如个人空间、公司空间、客户项目空间),但 Block 数据严格限定在各自 Workspace 内,不存在跨 Workspace 的 Block 引用或 Relation。
每个 Workspace 拥有独立的:
- 成员列表与角色:Owner、Membership admin、Member、Guest 四级(Enterprise 支持 Custom roles)
- 定价计划:Free / Plus / Business / Enterprise,决定协作人数、版本历史、AI 配额等
- 安全策略:Business 起支持 SAML SSO,Enterprise 支持 SCIM 自动供给与审计日志
- 域名验证:Enterprise 可绑定自定义域名实现自动加入
Workspace 内的所有 Block 共享同一套同步通道。当你在桌面端编辑一个 paragraph Block,变更通过 WebSocket 推送到服务端,再广播给同一 Workspace 内所有在线设备的客户端。
🔄 同步机制:CRDT + WebSocket
Notion 五端客户端(Windows、macOS、iOS、Android、Web)的同步不依赖传统的「最后写入胜出」策略,而是采用 CRDT(Conflict-free Replicated Data Type)合并算法:
- 每个 Block 变更携带逻辑时钟(Lamport timestamp),服务端据此确定合并顺序
- 并发编辑同一 Block 时,文本内容按字符级 OT(Operational Transformation)合并,而非覆盖
- 结构变更(拖拽排序、删除 Block)通过 parent_id + index 操作合并,保证树结构一致性
- WebSocket 长连接负责实时推送,断线后通过 HTTP 增量拉取补齐
实际体验中,同一 Workspace 内的编辑通常在 1–3 秒内跨设备可见。离线编辑在重连后自动合并,极少出现冲突丢失。Enterprise 计划可选数据驻留区域(美国/欧盟),满足合规要求。
🖥️ 客户端架构:统一的 Block 引擎
Notion 各平台客户端并非简单的 WebView 套壳,而是共享同一套 Block 渲染引擎(基于 React),针对不同平台做了原生适配:
- 桌面端(Electron):完整 Block 引擎 + 本地 SQLite 缓存 + 系统级快捷键 + 系统托盘 Quick Capture
- 移动端(React Native):精简版 Block 引擎,优化触控交互,支持 Share Extension 和小组件
- Web 版(React SPA):功能与桌面端一致,通过 Service Worker 提供有限离线能力
无论哪个客户端,用户操作的最终产物都是同一套 Block 变更指令,由服务端统一持久化并广播。这保证了「在手机上 Capture 的待办,桌面端 2 秒内出现在 Database 看板中」的跨端一致性。
🔐 安全架构概览
Notion 软件的安全设计贯穿三层架构:
- 传输层:TLS 1.2+ 加密所有客户端-服务端通信
- 存储层:AES-256 加密静态数据,托管于 AWS(支持区域选择)
- 权限层:Page 级 ACL + Workspace 级角色 + Enterprise SCIM/SAML 三层治理
个人用户可随时通过 Settings → Export content 导出全部 Block 数据为 Markdown、HTML 或 CSV。Enterprise 客户可启用审计日志追踪所有 Block 变更操作。
🔗 三层模型与上层引擎的关系
Block/Page/Workspace 三层是 Notion 软件的基础设施。在此之上,两个关键引擎模块内嵌运行:
- Database 引擎:child_database Block 承载 15 种 Property 与 6 种 View,详见 Database 系统专题
- Notion AI 模块:读取当前 Page 的 Block 树上下文做推理,详见 Notion AI 产品专题
这两个引擎不是独立产品,而是 Block 体系的自然延伸——Database 是一种 Block 类型,AI 是一种 Block 操作。理解三层模型后,再读上层引擎专题会事半功倍。