“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
Apple 开源 FoundationDB:分布式数据库的基石与未来
一句话概括:开源 FoundationDB 核心,释放跨行 ACID 事务能力,构建社区驱动的新一代数据库基石。
Apple 于 2024 年 4 月 19 日正式宣布将 FoundationDB 开源,这一发布在 Hacker News 上引发热烈讨论(2136 分,441 评论)。本文深度解析该公告的技术内涵、架构思想与社区治理,还原 FoundationDB 的设计精髓与实际意义。
背景:FoundationDB 是什么?
FoundationDB 是一个从头设计、面向商品硬件集群的分布式数据存储系统。它不是一个简单的 key-value 存储,而是一个以全球跨行 ACID 事务为核心能力的分布式数据库。这意味着它提供了最高等级的数据一致性,使得应用开发者可以像使用单机数据库一样使用分布式存储,而无需处理部分失败、最终一致性等复杂问题。
这种强一致性带来的实际收益:
- 应用代码更简单:无需编写补偿逻辑或乐观锁重试。
- 数据模型更高效:可以在事务中操作多行,支持复杂约束。
- 故障模式更可预测:系统自动处理硬件故障,不必让业务感知碎片状态。
为什么开源?一个具有“层”的架构愿景
FoundationDB 始于 2010 年的创业项目,其核心愿景是:从简单核心出发,通过“层”扩展功能。
- 核心:开源部分本身是一个高性能的 key-value 存储引擎,它只包含那些无法在“层”中实现的功能(例如事务、多版本并发控制、数据分布、容错恢复等)。
- “层”(Layers):在核心之上,可以叠加特定的数据模型和访问模式。例如,文档存储层(如 MongoDB 风格)、图数据库层、关系表模型层、甚至全文索引层。这些层通过调用核心的事务 API 来实现复杂语义,而无需修改核心。
这种设计带来的关键优势:
- 灵活性:可以在同一个 FoundationDB 集群上运行多个不同的“层”,为不同应用提供最合适的数据模型。
- 统一基础设施:减少运维成本,无需维护多套不同数据库,只需管理一个核心集群。
- 并发优化:所有层共享同一个事务性保证,无需跨系统协调(例如避免在 MongoDB 与 Neo4j 之间做双写)。
通过开源核心,Apple 期望社区能够加速“层”的生态发展,类似 Linux 内核与发行版的关系。该生态将极大丰富 FoundationDB 的应用场景,推动其成为下一代分布式数据库的公共底座。
技术深浅:核心事务模型与扩展机制
事务语义
FoundationDB 的事务是 ACID 且可序列化的,它提供了全局的、跨行的强一致快照隔离。每个事务都可以读写任意多的 key,且保证原子提交。底层采用基于 多版本并发控制 (MVCC) 的乐观并发控制机制(类似 TiKV/CockroachDB 的思路),但早期实现中使用了基于时间戳的版本管理,确保高并发下的正确性。
数据模型
核心的 key-value 模型是 有序且不可变 的:key 是字节串,value 是字节串,所有 key 排序存储。这种设计使得范围扫描高效(支持类似 Range 查询),也为上层“层”提供了排序索引的基础。
高可用与自动修复
FoundationDB 自动将数据分片(称为 “shards”),分布在集群中的多个进程上。系统自主检测故障、重新平衡数据,并在不中断事务的情况下恢复。其自愈机制基于复杂的复制算法(基于 Paxos 或 Raft 的变种),保证数据不丢、服务可用。
与“层”的配合
一个典型的“层”实现会在核心 key 上加上自己的编码逻辑。例如,文档层会将文档的 key 映射到 (主键, 字段名) 的元组,而文档本身存储为若干子 key。层利用事务原子的多 key 写入来维护索引一致性,从而对上层屏蔽了底层复杂性。这就是 FoundationDB 能支持复杂数据模型的原因。
开源社区与治理:如何参与?
Apple 明确表示将把 FoundationDB 作为社区项目推进,所有主要开发都在公开环境中进行。项目通过设计文档流程确保重要变更透明并广泛接受反馈。早期治理架构已建立,赋予积极贡献者更大的决策权。同时采用了基于 Contributor Covenant 的行为准则,保证社区健康。
参与方式的路径:
- 社区论坛 (forums.foundationdb.org) 进行讨论和提问。
- 通过 GitHub Issues 报告 bug 和问题。
- 提交贡献代码和文档(见贡献指南)。
源码位于 github.com/apple/foundationdb。
安装与入门
官方提供 macOS、Windows、Linux 的二进制安装包,基本入门指南见 Getting Started guide。
深度解析:为何这一开源意义重大?
FoundationDB 并非一个新兴项目,它至今已有多年生产经验(在苹果公司内部大量使用)。开源不仅赋予外部开发者访问其核心能力的机会,更深远的意义在于:
- 挑战了 NoSQL 的兴起时代:它证明了分布式数据库可以拥有 ACID 事务且不牺牲性能。
- 提供了“层”的标准化平台:如果有人想构建一个图数据库或时序数据库,不必从零实现分布式存储,而是可以在 FoundationDB 上直接开发“层”,大幅降低技术门槛并保证基础设施的可靠性。
- 苹果的开源策略:继 Swift, WebKit, Darwin 等之后,苹果在数据库基础软件上的开源举动,展现了其对开源社区日益深化的参与,也推动了业界对 FoundationDB 技术潜力的重新评估。
技术挑战与未来方向
尽管公告鼓舞人心,但面临不少挑战:
- 核心代码复杂度高,上手难度中等(C++ 代码)。
- 由于核心 API 稳定且简单,新手的贡献点往往集中在“层”的开发上,而这正是社区繁荣的关键。
- 需要大量沟通和文档工作以吸引新贡献者。
苹果的治理框架希望能培育良性循环:核心稳定、层丰富、吸引更多用户、再促进核心进化。
结语
FoundationDB 的开源是分布式数据库领域的一个里程碑。它通过其独特的“核心 + 层”抽象,提供了一种可组合的数据库构建范式。对于技术爱好者而言,这既是一个学习分布式系统设计的优秀范例,也是一个可以积极参与并打造下一代数据生态的机会。无论你是想增加一个数据存储新选项,还是希望深入理解一致性算法在生产中的实现,FoundationDB 开源都值得关注。