Neondb-穷人的Aurora,你看明白了吗?

这篇文章本来是昨天要发的,因为上班路上有所思,所以到公司后临时写了一篇发出了。这两天经常有朋友问我,儿子高考怎么不回家陪陪。十分感谢这些热心的朋友,说实在的,儿子高考还真没啥可陪的,上周日返校后今天考完才离开学校。不过今天怎么都得在化学考试结束前赶到校门口去接一下,所以今天上午我就回深圳了。

AWS Aurora的出现让人眼前一亮,这种云原生生态的数据库产品大大简化了用户数据库使用门槛,只不过Aurora没有线下版本,因此也很难进入寻常百姓家了。前阵子我一个客户也和我讨论了Serverless Database的问题,他们企业中存在数百个规模不大,重要性也不高的系统,数据库系统的建设与运维管理一直占用了大量的企业IT资源,能不能想个办法,用Serverless Database来替代现在的云上的大量的小型MYSQL RDS实例。最好是计算可以放到k8s里,数据可以持久化到S3的。

正好前几天群里有个朋友提到Neon Database这个开源数据库,我就简单地研究了一下。

从Neon的官网上我们可以看到Neon是一个serverless的开源数据库,可以作为AWS Aurora Postgres的替代。它对PG进行了存算分离改造,将PG的存储层改造为一个分布式的集群。

经过对PG的架构进行重构后,Neon的计算单元是部署在k8s pods中的postgresql兼容SQL引擎,应用可以通过PG客户端或者PG兼容的JDBC/ODBC引擎连接计算单元来访问数据库。Neon可以为每个租户创建一个独立的数据库实例,其SQL引擎跑在K8S pods里,当有会话访问数据库实例的时候,容器被激活,向外提供服务。当一段时间内没有会话访问数据库的时候,POD会被清理,从而回收资源。Neon目前支持PG 14/PG15,与原生态的PG保持极高的兼容性,支持大量的PG插件。

Safekeeper集群:负责数据库的持久化。PostgreSQL将预写日志(WAL)流式传输到Safekeepers,Safekeepers持久地存储WAL,直到它被Pageserver处理并上传到云存储。同时WAL也可以在对象存储中持久化保存。如果Safekeeper可以把数据存储在高性能SSD上,那么数据修改可以快速落盘,实现较大并发的数据写入。

Pageserver:负责处理读取请求。为此, Pageserver将传入的 WAL 流处理为自定义存储格式,使所有page版本都易于访问。Pageserver还将数据上传到云对象存储,并按需下载数据。同时,Pageserver还承担了一个缓冲层,存储了经常会被数据库访问的较热的PAGE。

Neon 使用 S3 等云对象存储进行长期数据存储。存储的数据是静态加密的。持久化的数据和不怎么访问的数据页存储在S3中,价格低廉,容量巨大,扩展方便的对象存储为持久化数据提供了有效的存储。

在这个架构中,Safekeepers可以被认为是一个超可靠的写入缓冲区,它保存最新的数据,直到它被处理并上传到云存储。Safekeepers通过Paxos协议以确保可靠性。Pageserver还用作云存储的读缓存,提供对数据页面的快速随机访问。在这个架构中,已经消除了bgwriter,因为物理PAGE已经不需要写入,而是完全通过WAL异步回放。

目前Neon已经开放了公有云服务,并且提供免费试用,于是我在新加坡的Neon公有云免费申请了一个数据库。申请完毕后,就可以通过本地的psql客户端连上去使用了。

我在上面创建了一个测试PG表连接的DEMO。然后测试一下几个表连接的语句。

EXPLAIN ANALYZE SELECT  count(*) FROM join1 j1 INNER JOIN join2 j2 ON j1.id = j2.id WHERE J1.ID>1 AND J1.ID<10;

128毫秒执行时间,性能一般,不过还不算坏。

Neon 允许以与分支代码相同的方式即时对数据进行分支。可以快速且经济高效地对数据进行分支,用于开发、测试和各种其他目的,从而提高开发人员的工作效率并优化持续集成和交付 (CI/CD) 管道。分支数据可以方便地通过云存储的复制克隆来实现。可以从当前或过去的状态创建分支。例如,您可以创建一个分支,其中包含截至当前时间点或更早时间点的所有数据。

分支与其原始数据隔离,因此您可以自由地使用它,修改它,或者在不再需要它时删除它。对分支的更改是独立的。分支及其父分支共享相同的历史记录,但在分支创建时会有所不同。对分支的写入将另存为增量。创建分支不会增加父分支上的负载或以任何方式影响它,这意味着您可以随时创建分支,而不会影响生产系统的性能。每个 Neon 项目都是使用一个名为 的主分支创建的。您创建的第一个分支是从项目的主分支分支。后续分支可以从主分支或以前创建的分支上进行。

我可以在管控台上快速创建一个分支。如果创建一个branch仅仅为了备份,可以不创建compute endpoint,否则需要创建一个compute endpoint。我创建了一个分支,就可以用它来做一些其他的应用了,比如用于测试或者研发,亦或是交给审计部门去使用。每个compute endpoint都有一个独立的pod来承载,可以作为一个独立数据库使用,系统会生成一个访问连接串。

Neon总体来说看上去不错,后续我们团队会进行本地化部署和验证。不过Neon的历史还比较短,功能也还比较简单,可靠性也欲待验证。

目前Neon对备份和灾备的支持还比较简单,数据的安全完全依靠云平台和对象存储来保障。这决定了Neon还很难承载关键性的大型应用,不过企业中的一些小型数据库应用使用还是足够的,其最大的好处是方便。

Neon是以Apache V2开源的,我们目前可以到GITHUB上去下载,项目名称为NervanaSystems/neon。整个项目是用Rust开发的,其易读性不错,作为数据库产品,性能应该也没问题。Neon使用Postgresql作为嵌入项目,目前Neon支持PG14/PG15两个版本,有兴趣的朋友可以去试试。Neon的出现,将会大大丰富PG数据库生态,以此为基础开发一个云原生数据库产品也是可行的。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/229121.html<

(0)
运维的头像运维
上一篇2025-04-18 15:10
下一篇 2025-04-18 15:11

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注