• ·编程说·
  • ·文字·
  • ·技术·
  • About Me
markdown
技术

TiDB Markdown Plugin - 将数据库运行在你的文章里

TiDB Markdown Plugin Repo: https://github.com/imiskolee/tidb-wasm-markdown 一款可以让TiDB运行在Markdown中的插件。 背景 周三看到朋友圈在疯狂的刷 TiDB - Wasm 这个有意思的东西(让数据库运行在浏览器里?TiDB + WebAssembly 告诉你答案)。 这的确是一件让人兴奋的工作成果,为WASM的应用提供了不错的思路。就这个项目本身而言也是有很大的价值。 我们在编程语言学习的时候,有诸如JSFiddle、Go Playground等很多不同的交互性环境可以使用,并且可以将这些环境内嵌到教学文章之中,形成了交互性的教学资料。但是在 数据库的文章之中,只能是纯粹的纸上谈兵,读者很难进行直观的感受与实操。 相比较而言,纯粹的编程语言的交互环境对于服务端资源消耗是可控的,成本也是可以承担得起的。数据库不一样,一个简单的索引优化的示例数据可能就需要GB级别的内存占用以及更大的CPU消耗,成本上难以承受。而TiDB WASM版本的出现,解决了这一个问题 -- 因为是在客户端构建环境,环境成本由对应的读者承担。基于这个前提,我想到的就是可以把TiDB WASM版本作为数据库的Play Ground环境嵌入到Markdown中进行交互。 实施过程 直接从 http://play.pingcap.com 中把相关资源下载,分析了程序的处理流程(稍后将介绍插件的工作原理)。这个过程有个有意思的发现,在部署的时候,WASM程序被伪装成了main.css这个名字,这个让我花费了几分钟。我觉得这个伪装的目的仅仅是为了复用Nginx的压缩缓存策略。 寻找一款Markdown解析器可以方便的内嵌自定义标签。 最终通过半小时的搜索与学习,定位到了markdown-it以及markdown-it-container这两项工作。 这款解析器必须是前端可以工作的。 这款解析器必须支持插件系统。 花费了1个小时学习了markdown-it的API与markdown-it-container的源码与工作原理。 开始进行Demo验证阶段。 进行了简单的代码重构,进行了简陋的封装。 开发了Example程序 感谢来自社区的朋友JinSong对Example进行了基本重构,稍微好看了一点。 工作原理 使用方法 ::: tisql SELECT * FROM USERS; | 固定tag内容 | sql 内容 | 详情见demo程序。 问题 目前已知在Chrome环境容易崩溃。 WASM程序体积较大,需要进行tiny处理。 目前仅支持一个文档单个数据库实例(基于性能考量) 还需要定义好的Markdown定义方法来描述数据库的交互行为。

2020年08月12日 0Comments 12Browse 0Like Read more

Misko lee

男人,就要像贝多芬一样,扼住命运的喉咙 :)

编程说

·编程说·

每周日晚11点更新,节假日不打烊

Archives
  • March 2021
  • August 2020
Newest Hotspots Random
Newest Hotspots Random
DSP 扫盲帖 此去经年 - 永兴未来城[2033年] 编程说【第二期】 - 聊聊系统集成与中间件开发 请别拿一两个胸部和游戏来说事!爷,不堕落! 也谈移动客户端的市场与发展趋势 Java编程中影响性能的一些特点
编程说 - 如何设计日志格式也谈移动客户端的市场与发展趋势一种通用递归深度检测技术 - 基于栈帧内容的检测 - Golang语言描述Kubernetes 简介TiDB Markdown Plugin - 将数据库运行在你的文章里从一个实际案例来讨论我们应该如何做性能优化
编程说【第二期】 - 聊聊系统集成与中间件开发 也谈移动客户端的市场与发展趋势 DSP 扫盲帖 Web Audio API 的介绍与应用 构建现代化的BI报表系统 编程说 - 如何设计日志格式
Tag aggregation
dsp android 编程说 html5 web audio parser markdown tidb wasm docker k8s kubernetes go
友链
  • Yian
  • 云风
  • 周梦康
  • 橡皮檫檫
  • 风雪之隅

COPYRIGHT © 2020 Misko Lee's Blog. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS