让数据库运行在浏览器里?TiDB + WebAssembly 告诉你答案
作为一名数据库技术人员,一直以来都有个梦想,希望有一个数据库能够弹性扩展(分布式)到成百上千节点的规模,易于学习和理解,可以运行在私有云,公有云,multi-cloud, kubernetes, 也能够跑在嵌入式设备(比如树莓派)上,更酷的是也能够直接运行在浏览器里,且不需要任何浏览器扩展(Extension),变成口袋数据库,就像那部电影《蚁人》。
今天,这一切都变成了现实: TiDB 可以直接运行在浏览器本地。
打开浏览器,你可以直接创建数据库,对数据进行增删改查,关掉浏览器,一切都消失了。干净绿色环保。
由于 TiDB 基本兼容 MySQL 协议和语法,因此我们可以用熟悉的 MySQL 风格,在笔记本浏览器(我用的是 MacOS 上面的 Chrome,不确定其它浏览器是否正常)打开 play.pingcap.com,可能需要几秒来加载页面,然后就能看到熟悉的 Shell 了。 现在来试试几个 SQL 语句吧!
是不是很酷?无痛体验 SQL 的时代到了。更酷的是,这一切都运行在浏览器本地,删库再也不用跑路了。
有了这些,那么是时候给在线学习 SQL 教程的网站加点功能吧,比如看教程的同步运行 SQL 语句,这里有个简单的演示。
在浏览器里面运行还有哪些好处呢?还记得你安装配置数据库的痛苦吗?从此以后,每个人随时随地都可以拥有一个数据库,再没有痛苦的安装过程,再也不用痛苦的配置参数,随时享受写 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 通讯,实现分布式浏览器数据库,我非常期待这些实现。”
——侯圣文(贝壳找房 | 数据技术总监)
接下来让我们试试更多有趣的想法:
让更多的在线 SQL 教程都可以直接运行。
让 TiDB 运行在 go play ground 上,或许需要 Go team 的帮助。
支持持久化数据库,我们已经有了云计算,边缘计算,为什么不能有浏览器计算呢?
让数据库运行在浏览器里?TiDB + WebAssembly 告诉你答案相关推荐
- 远程服务器套娃,无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器...
无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器 极一 • 2020 年 01 月 19 日 简介 RemoteView是一款部署在服务器中的远程浏览器,可以方便快捷地使用服务器的 ...
- JavaScript武力值飙升!用TensorFlow.js轻松实现在浏览器里搞深度学习......
近年来,AI 与人类的生活越来越紧密,慢慢变得无处不在.那么提到 AI ,我们会想到什么?小编最先想到的是机器人.早在小学作文中,我就写到 2021 年到处都是机器人,机器人汽车到处飞.结果 2021 ...
- 如何在浏览器里开发并运行 SAP UI5 应用
除了 SAP 公司官方支持的 WebIDE,SAP Business Application Studio 这些运行在浏览器端的开发工具,可以进行 SAP UI5 的开发之外,我们还可以使用 Stac ...
- IndexedDB:浏览器里内置的数据库
IndexedDB是HTML5规范里新出现的浏览器里内置的数据库.对于在浏览器里存储数据,你可以使用cookies或local storage,但它们都是比较简单的技术,而IndexedDB提供了类似 ...
- DD Course-01: 从0到1,在浏览器里运行 Disco Diffusion (全网最详细教程)
部分章节由团队小吴撰写 首先来澄清一个常见的误解: 有一些人认为 Disco Diffusion (以下简称 DD) 是由 Google 开发的,其实它只是运行在 Google 免费提供的计算资源上. ...
- 前端工程师掌握这18招,就能在浏览器里玩转深度学习
参加 2018 AI开发者大会,请点击 ↑↑↑ 作者 | Vincent Mühler 译者 | 刘旭坤 整理 | Jane 出品 | AI科技大本营 [导读]TensorFlow.js 的发布可以说 ...
- jupyter一直*_不用下载安装,你的机器人可以直接在浏览器里跳舞丨Jupyter-ROS
伊瓢 发自 纽凹非寺 量子位 报道 | 公众号 QbitAI Jupyter一直是非常受欢迎的交互式笔记本,但是机器人爱好者没有太多机会用它. 最近,Jupyter-ROS插件出炉了,可以用Jupyt ...
- 不用下载安装,你的机器人可以直接在浏览器里跳舞丨Jupyter-ROS
伊瓢 发自 纽凹非寺 量子位 报道 | 公众号 QbitAI Jupyter一直是非常受欢迎的交互式笔记本,但是机器人爱好者没有太多机会用它. 最近,Jupyter-ROS插件出炉了,可以用Jupy ...
- Python爱浏览器,但浏览器不爱它:如何让Python运行在浏览器上
一直以来,网页浏览器编程所用的编程语言主力就是JavaScript,浏览器就是一个JavaScript的原生解释器. 那么Python能不能直接运行在浏览器上呢,或者说Python能不能作为浏览器开发 ...
最新文章
- 让浏览器判断html为手机页面,判断是从手机端还是客户端访问的页面,判断浏览器类型...
- SDWebImage 最新版详解
- 个人信息泄露,背后竟有“内鬼”作祟,堵上网络安全漏洞
- 导航栏对于UIScrollview以及子类所做的一些事
- Java集合LinkedList
- 机器学习、深度学习、强化学习课程超级大列表!
- 概率论信息论基础(随机变量、常用概率分布、贝叶斯规则、信息论基础、结构化概率模型)
- 穷人想变富,富人想变得更富
- 学透 LinkedList 底层实现原理,狂虐面试官!
- cad怎么导出jpg图片格式?
- stm32晶振配置不一致导致 Invalid Rom Table 至芯片锁死解决方案
- series转换成dataframe
- [转]中英文停止词表(stopword)
- docker logs 参数解释
- TCP/IP模型以及OSI七层参考模型各层的功能介绍和主要协议
- 服务器中病毒要不要重装系统,五种情况必须要给电脑重装系统,这三种不用重做系统,别被骗了!...
- python ovito模块计算某一类原子的MSD均方位移
- window 下 jdk11安装与环境变量的配置(超级详细)
- prophet Diagnostics诊断
- Makefile里面的$(MAKE)到底是啥