让数据库运行在浏览器里?TiDB + WebAssembly 告诉你答案
作者:TiDB 技术团队
作为一名数据库技术人员,一直以来都有个梦想,希望有一个数据库能够弹性扩展(分布式)到成百上千节点的规模,易于学习和理解,可以运行在私有云,公有云,multi-cloud, kubernetes, 也能够跑在嵌入式设备(比如树莓派)上,更酷的是也能够直接运行在浏览器里,且不需要任何浏览器扩展(Extension),变成口袋数据库,就像那部电影《蚁人》。
今天,这一切都变成了现实: TiDB 可以直接运行在浏览器本地。
打开浏览器,你可以直接创建数据库,对数据进行增删改查,关掉浏览器,一切都消失了。干净绿色环保。
由于 TiDB 基本兼容 MySQL 协议和语法,因此我们可以用熟悉的 MySQL 风格,在笔记本浏览器(我用的是 MacOS 上面的 Chrome,不确定其它浏览器是否正常)打开 play.pingcap.com,可能需要几秒来加载页面,然后就能看到熟悉的 Shell 了。 现在来试试几个 SQL 语句吧!
<center>图 1 在浏览器上运行 TiDB</center>
是不是很酷?无痛体验 SQL 的时代到了。
更酷的是,这一切都运行在浏览器本地,删库再也不用跑路了 😈
有了这些,那么是时候给在线学习 SQL 教程的网站加点功能了,比如在文字教程时,同步运行 SQL 语句。这里有个简单的 演示:
<center>图 2 SQL 教程网站演示</center>
那么在浏览器里面运行数据库还有哪些好处呢?
还记得你安装配置数据库的痛苦吗?从此以后,每个人随时随地都可以拥有一个数据库,再没有痛苦的安装过程,再也不用痛苦的配置参数,随时享受写 SQL 的快感。也许我们不再需要 indexdb了,SQL 是更高级的API,TiDB 使得「一次编写、到处运行」成了现实。
你一定很好奇这一切是怎么实现的。
-
这个项目的起源是参加 TiDB Hackathon 2019 比赛 Ti-cool 团队的项目 TiDB-Wasm,是他们的努力让这一切变成了现实;
-
同时,Go 语言支持了 Wasm ,是近期最让人兴奋的特性之一,至此,在浏览器里运行 Go 语言编写的应用程序成为了现实;
-
此外,PingCAP 与社区共同努力实现了开源的分布式数据库 TiDB,这让我们可以把 TiDB 编译成 Wasm,在浏览器里直接运行生成的 Wasm 文件。
至此,在浏览器里运行一个数据库成为了现实, 如果没有记错,TiDB 好像是 Go 语言编写的第一个可以在浏览器里面运行的 SQL 数据库。
TiDB + WebAssembly 为何如此让人兴奋?
WASM ,全称:WebAssembly ,是一个可移植、体积小、加载快并且兼容 Web 的全新格式。
-
Wasm 本身是一个很有野心和想象力的技术,极大的扩展了前端的能力,TiDB-Wasm 将数据库这样硬核的基础架构和炫酷的前端领域搭上关系,更进一步让用户在离线环境下就能直接体验。
-
这种用法是大大降低用户体验 TiDB 的成本,只需要一个浏览器页面和等待下载 Binary 的时间,完全不需要安装部署,就可以体验 TiDB 基本的功能,无论是嵌入到文档中快速运行实例还是作为 Playgroud 网站让用户自由发挥,都非常合适。
-
从实用角度上来看,除了能成为一个浏览器中的 REPL 供配合文档快速体验和实验之外,TiDB-Wasm 甚至未来还可以作为 js 的 localStorage API 的很好的补充,为 js 生态提供一个 SQLite 之外的高性能本地数据库。
诞生于 TiDB Hackathon 2019 的项目,它的出现让现场评委老师无比激动兴奋,都对它的快速落地充满了期待。
“TiDB-Wasm 极大降低了用户体验 TiDB 能力和初步验证 SQL 兼容性的门槛,使用体验就像 golang playground 一样流畅,Wasm 的出现也为 TiDB 文档中心的建设提出了新的思路,也许不久的将来,TiDB 用户可以像 golang 一样,在阅读文档的同时,就能够在页面上尝试实际操作的体验。我们也期待 Wasm 能够持续发展,实现 TiKV 的沙箱化运行,提供更贴近真实运行场景的 playground,甚至在自动化运维管理方向上贡献更新奇思路。”
——李凯(美团 | 数据库团队负责人)
“刚看到这个项目的时候真的眼前一亮,这是一个非常酷的创意,而且真的对 DBA 运维管理 TiDB 有非常大的帮助,个人强烈希望这个项目能尽快落地支持!
目前我们公司使用 TiDB 时,有很大一部分是由现在业务改造接入,但是面临的一个很重要的问题是 应用原来都是基于 MySQL 开发,虽然 TiDB 在 SQL 语法兼容上做了很多的工作,但是仍然未能 100% 覆盖,所以业务切换前我们都必须要进行 SQL 语法兼容性测试及数据准确性校验。由于 TiDB 的部署都是在线上服务器,基于数据安全,我们的生产和办公网环境是隔离的,要实现上面的需求,目前我们有如下几种方式:a) 研发同学自己写脚本连接查看;b)DBA 登录集群协助验证;c)开发专用查询平台支持。目前这这几种方式都不够安全且效率低下。随着我们维护的 TiDB 集群越来越多,DBA 的对这种低效工作不堪其烦,急需相关工具支持,而 TiDB-Wasm 无疑会解决这种问题,所以希望官方能够重视这个项目,并尽快落地实现。”
——于伯伟(58集团 | 数据库高级经理)
“Wasm 是一个神奇的技术,也许诞生初期的目的只是为了解决 js 运行速度以及其他语言如何操作 html 的问题,但现在大家在用这种技术广泛尝试各种可能。TiDB-Wasm 就是一个很好的尝试,不仅大幅度降低了新人使用 TiDB 的难度、也给文档展示提供了神奇的操作环境、还能大幅度降低应用开发者本机调试环境的构建难度。相信这个思路能给其他服务端的软件一个很好的启发。”
——李道兵(京东云 | 高级总监)
“很多用户希望初步了解 TiDB 但是苦于找不到简单即用的线下环境,这导致他们还未入门就已经放弃。TiDB-Wasm 有望彻底解决这个问题。基于 TiDB-Wasm,用户可以方便的开启 session 来探索 TiDB 的特性和功能,调试 TiDB 的行为,以及对比 TiDB 与 MySQL 等数据库在 SQL 语法、加锁行为、事务隔离等级等细节上的差异,从而帮助用户更深入的理解 TiDB。对官方而言,甚至可以把路由、计算、存储层的扩容缩容、迁移等最佳实践集成到该平台并可视化该过程,从而给用户更真实、直观的感受。这将是一款令人激动的产品,它将促进 TiDB 社区更加繁荣,也将让所有 TiDB 用户受益!”
——赵应钢(美团点评 | 分布式数据库平台开发和运维负责人,研究员)
“TiDB-Wasm 这个项目成功地将 TiDB 移植到了 Wasm,证明了 TiDB 编译到 Wasm 的可行性,同时也反映了 WebAssembly 已走向成熟,相信后面会有更多项目移植到浏览器里运行。目前项目还处于 demo 阶段,后续如果将项目继续落地,在上面添加更多功能,比如使用 indexedDB 让数据持久化,比如使用 webrtc 之类的技术让不同浏览器中的 TiDB 可以进行 P2P 通讯,实现分布式浏览器数据库,我非常期待这些实现。”
——侯圣文(贝壳找房 | 数据技术总监)
“TiDB-Wasm 让我看到了 TiDB 的更多可能性。Wasm 本身是一个很有野心和想象力的技术,极大的扩展了前端的能力,可能大家都玩过类似 go playgound, rust playground 这类 web 的可交互体验平台,TiDB-Wasm 更进一步让用户甚至在离线环境下就能直接体验,可谓最极致的易用。从实用角度上来看,除了能成为一个浏览器中的 REPL 供配合文档快速体验和实验之外,TiDB-Wasm 甚至未来还可以作为 js 的 localStorage API 的很好的补充,为 js 生态提供一个 SQLite 之外的高性能本地数据库……当然,在体验上仍然有很多可以优化的地方,例如给 binary 瘦身,加入集群模式支持等。总体来说这是一个很好玩的项目。”
——黄东旭(PingCAP | 联合创始人兼 CTO)
“这个项目可以说集新颖性和实用性于一身,用一种很巧妙的方式,将数据库这样硬核的基础架构和炫酷的前端领域搭上关系,接下来二者就可以碰撞出各种火花。最直接的用法是大大降低用户体验 TiDB 的成本,只需要一个浏览器页面和等待下载 Binary 的时间,完全不需要安装部署,就可以体验 TiDB 基本的功能,无论是嵌入到文档中快速运行实例还是作为 Playgroud 网站让用户自由发挥,都非常合适。再扩展想一下,TiDB 可以看作 MySQL 的替代品,那么很多 MySQL 的教学网站也可以用这个 Wasm 来提升教学体验。当然,Demo 中演示的 SQL 教学只是最基本的玩法,有了这个东西,我们可以说:恭喜前端圈有了一个 JS 版本的 MySQL。相信前端的同学能把它玩出花来。一句话总结:这绝对是一个叫好又叫座的项目。”
——申砾(PingCAP | Engineering VP)
接下来让我们试试更多有趣的想法:
让更多的在线 SQL 教程都可以直接运行。
让 TiDB 运行在 go play ground 上,或许需要 Go team 的帮助。
支持持久化数据库,我们已经有了云计算,边缘计算,为什么不能有浏览器计算呢?
如果你有新的,有趣的想法,欢迎联系 TiDB 技术团队。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
我被 Gitlab 的华人员工踢出 Gitlab 微信群,有话说
昨天晚上,我被 Gitlab 的华人员工(不太确定还是不是中国人)踢出 Gitlab 微信群,踢之前我并没有在群里里说过任何话。 后来,鉴于群里很多人的询问,Gitlab 的人员在群里说明踢我的原因,不过我对这样的说辞肯定是不满意的: 但是踢就踢了,这是他们的自由,我没什么所谓 :) 有不少开发者说 Gitee 是基于 Gitlab 开发的,你不应该喷人家。所以我还是得说说。 首先这是两码事,作为一个中国的开发者平台,批评伤害中国程序员感情的事情是无可厚非的。 其次,批评归批评,我们还是非常感激 Gitlab ,否则我们当初很难在短时间内快速推出一个可用的代码托管平台。去年 Gitlab 的创始人来华的邀请函还是我司出的,我们公司愿意为他担保背书。包括我们公司 CEO 马越先生在今年情人节还在旧金山相洽甚欢(请大家自行脑补会面情形),两人对技术发展,商业模式和资本本质等都有共识,彼此颇有惺惺相惜之意。 ------- 早先开源中国是没有代码托管平台的,后来应广大会员要求,我们在 2013年5月基于 Gitlab 5.1 推出,当时使用的是 git.oschina.net 域名的代码托管...
- 下一篇
SOFARPC v5.5.9 发布,蚂蚁金服开源 Java RPC 框架
本期发布内容: i. 修改建联默认超时时间为1s,防止异常情况下建联时间过长 1. Abstract It is a bug fix version. We encourage everyone use 5.5.x to upgrade. For the details and all changes, please browse our issue and pr for5.5.9. 2. Compatibility Note There are no incompatible APIs. but if you use cors filter in rest, you need to set it 3. New Feature 4. Enhancement PR 777- change default connection timeout 1000ms 5. Bug Fix 6. Deprecated None. SOFARPC 简介 SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS关闭SELinux安全模块
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7设置SWAP分区,小内存服务器的救世主