作为一名数据库技术人员,一直以来都有个梦想,希望有一个数据库能够弹性扩展(分布式)到成百上千节点的规模,易于学习和理解,可以运行在私有云,公有云,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 告诉你答案相关推荐

  1. 远程服务器套娃,无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器...

    无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器 极一 • 2020 年 01 月 19 日 简介 RemoteView是一款部署在服务器中的远程浏览器,可以方便快捷地使用服务器的 ...

  2. JavaScript武力值飙升!用TensorFlow.js轻松实现在浏览器里搞深度学习......

    近年来,AI 与人类的生活越来越紧密,慢慢变得无处不在.那么提到 AI ,我们会想到什么?小编最先想到的是机器人.早在小学作文中,我就写到 2021 年到处都是机器人,机器人汽车到处飞.结果 2021 ...

  3. 如何在浏览器里开发并运行 SAP UI5 应用

    除了 SAP 公司官方支持的 WebIDE,SAP Business Application Studio 这些运行在浏览器端的开发工具,可以进行 SAP UI5 的开发之外,我们还可以使用 Stac ...

  4. IndexedDB:浏览器里内置的数据库

    IndexedDB是HTML5规范里新出现的浏览器里内置的数据库.对于在浏览器里存储数据,你可以使用cookies或local storage,但它们都是比较简单的技术,而IndexedDB提供了类似 ...

  5. DD Course-01: 从0到1,在浏览器里运行 Disco Diffusion (全网最详细教程)

    部分章节由团队小吴撰写 首先来澄清一个常见的误解: 有一些人认为 Disco Diffusion (以下简称 DD) 是由 Google 开发的,其实它只是运行在 Google 免费提供的计算资源上. ...

  6. 前端工程师掌握这18招,就能在浏览器里玩转深度学习

    参加 2018 AI开发者大会,请点击 ↑↑↑ 作者 | Vincent Mühler 译者 | 刘旭坤 整理 | Jane 出品 | AI科技大本营 [导读]TensorFlow.js 的发布可以说 ...

  7. jupyter一直*_不用下载安装,你的机器人可以直接在浏览器里跳舞丨Jupyter-ROS

    伊瓢 发自 纽凹非寺 量子位 报道 | 公众号 QbitAI Jupyter一直是非常受欢迎的交互式笔记本,但是机器人爱好者没有太多机会用它. 最近,Jupyter-ROS插件出炉了,可以用Jupyt ...

  8. 不用下载安装,你的机器人可以直接在浏览器里跳舞丨Jupyter-ROS

    伊瓢 发自 纽凹非寺  量子位 报道 | 公众号 QbitAI Jupyter一直是非常受欢迎的交互式笔记本,但是机器人爱好者没有太多机会用它. 最近,Jupyter-ROS插件出炉了,可以用Jupy ...

  9. Python爱浏览器,但浏览器不爱它:如何让Python运行在浏览器上

    一直以来,网页浏览器编程所用的编程语言主力就是JavaScript,浏览器就是一个JavaScript的原生解释器. 那么Python能不能直接运行在浏览器上呢,或者说Python能不能作为浏览器开发 ...

最新文章

  1. 让浏览器判断html为手机页面,判断是从手机端还是客户端访问的页面,判断浏览器类型...
  2. SDWebImage 最新版详解
  3. 个人信息泄露,背后竟有“内鬼”作祟,堵上网络安全漏洞
  4. 导航栏对于UIScrollview以及子类所做的一些事
  5. Java集合LinkedList
  6. 机器学习、深度学习、强化学习课程超级大列表!
  7. 概率论信息论基础(随机变量、常用概率分布、贝叶斯规则、信息论基础、结构化概率模型)
  8. 穷人想变富,富人想变得更富
  9. 学透 LinkedList 底层实现原理,狂虐面试官!
  10. cad怎么导出jpg图片格式?
  11. stm32晶振配置不一致导致 Invalid Rom Table 至芯片锁死解决方案
  12. series转换成dataframe
  13. [转]中英文停止词表(stopword)
  14. docker logs 参数解释
  15. TCP/IP模型以及OSI七层参考模型各层的功能介绍和主要协议
  16. 服务器中病毒要不要重装系统,五种情况必须要给电脑重装系统,这三种不用重做系统,别被骗了!...
  17. python ovito模块计算某一类原子的MSD均方位移
  18. window 下 jdk11安装与环境变量的配置(超级详细)
  19. prophet Diagnostics诊断
  20. Makefile里面的$(MAKE)到底是啥

热门文章

  1. Adwonder笔记
  2. SQL:字符串拼接中换行处理
  3. [论文阅读] Learning Without Forgetting
  4. 【torch】pytorch label的one-hot转化
  5. 我是做php的个子矮,当一个矮个子的烦恼作文
  6. 迷宫探索DFS(递归记录来回路径)
  7. 剑指offer之统计数组中出现次数超过一半的数字
  8. 剑指Offer之二叉树的后序遍历序列
  9. 中国基于散射的光学传感器行业市场供需与战略研究报告
  10. java udp 流量控制_基于UDP传输协议的实现分析之流量和拥塞控制