编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Postgres WASM开源项目可在浏览器内运作Postgres数据库

wxchong 2024-08-07 01:39:00 开源技术 23 ℃ 0 评论

Supabase与Snaplet共同开发了Postgres WASM,能够在浏览器中以WebAssembly运作Postgres数据库

云端数据库供应商Supabase协同开发工具开发商Snaplet,合作开发Postgres WASM开源项目,这是一个能够在浏览器运作PostgreSQL服务器的WebAssembly项目,该项目提供一套完整的功能,包括持久状态、从pg_dump恢复,以及从远端数据库进行逻辑复制等功能。

Postgres WASM以WebAssembly运作Postgres的想法并非原创,而是最先由Postgres服务供应商Crunchydata提出,不过Crunchydata的这个项目并非开源,因此Supabase和Snaplet便共同开发了一个开源版本。

Postgres WASM会在浏览器中启动一个虚拟机器,来执行PostgreSQL服务器实例,开发团队使用v86模拟器在浏览器模拟执行x86操作系统,而v86运用x86虚拟化技术,即时将x86机器码转译为wasm。目前Postgres WASM还在初期阶段,其运作Postgres 14.5提供psql和pg_dump等工具,开发者可以利用Postgres WASM从档案恢复状态,或是从IndexedDB等其他浏览器,储存和恢复Postgres状态,其他功能还有上传CSV档案到模拟器,或是从模拟器下载档案等。

官方提到,在浏览器以WASM执行Postgres的潜质很大,可以应用的情境很广,像是可用于教材文件,或是类似sql.js、absurd-sql等浏览器离线缓存,用户也可以将其应用在离线数据分析,或是在浏览器直接测试PostgresSQL函式、数据建模和逻辑复制等操作。

Postgres WASM也能被用于开发环境,从生产环境撷取数据,或是将数据、函式推送到生产环境,使用者甚至可以使用示例数据创建测试数据库后,再通过拍摄快照发送给其他开发者。

目前Postgres WASM储存库分为三个部分,分别是虚拟机器、网页应用程序和网络代理。开发团队以Buildroot创建了一个可嵌入的虚拟机器,并在虚拟机器中内置安装Postgres的精简版Linux。

Postgres WASM则是透过WebAssembly在浏览器执行虚拟机器的部分,而为了要让PgAdmin连接到Postgres,因此项目中加入网络代理,开发团队解释,由于浏览器阻止虚拟机器存取TCP网络,因此必须透过websocket来代理流量,Postgres WASM执行Websockproxy,允许模拟器将websocket端口口发送的数据转换成TCP封包,并使其与网际网络通信。

现在的Postgres WASM并非一个纯WebAssembly实作,开发团队尝试要从原始码直接利用WebAssembly编译Postgres,但是过程比预期复杂许多,因此折衷做法便是在浏览器中虚拟化一台机器,透过v86在浏览器中模拟和x86兼容的CPU与硬件。

现阶段Postgres WASM容量约为30 mb,对于一般需要在浏览器执行Postgres的用例来说并不够好,Supabase和Snaplet正寻求更多的开发者贡献开源项目。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表