Skip to content

Latest commit

 

History

History
52 lines (48 loc) · 53.6 KB

hackathon-2020-projects.md

File metadata and controls

52 lines (48 loc) · 53.6 KB

Hackathon 2020 项目汇总

队名 参赛主题/Program Description 项目设计/RFC
TIS 一键自动生成TiDB表倒排索引,通过TiDB DDL语句与TIS无缝整合,全自动生成基于Lucene的倒排索引,支持TiDB基于ngram或者IK等分词的模糊查询 https://docs.google.com/document/d/1ENHISp-I5edo_BDS-YBVMTlry9WpkVxobjJ8Eh2YZ-o/edit
队长负责划水 使用Linux kernel中ebpf针对分布式DB集群中TiDB working 进程或者线程进行在线性能分析,使用Ebpf追踪、查看、嗅探TiDB进程在分布式集群中的表现,无论是裸机还是容器环境中,分布式系统都可以动态感知到进程的变化情况。Trick:加上CUDA以及某种ML&DL模型针对TiDB的进程或者线程或者容器进程或者线程的表现,进行针对性的数学建模 https://github.com/devillove084/TiDBHackathon/blob/main/RFC.md
平头哥 降低云上 TiDB 跨 AZ 流量费用 https://docs.google.com/document/d/1mYF57vUeK572Lf-RKq-iwlIfsetGAQs8Tqj3KscEYbk/edit
滑滑蛋 该项目的灵感来自于 https://disksing.com/hackathon-idea/:
> 根据马斯洛需求层次理论,当基本的生理和安全需求被满足了之后,人们就需要去满足更高级别的精神级别的需求。因此,我大胆断定,现在对于TiDB的DBA来说,运维TiDB最大的问题就是:不够酷炫,不够嗨!

该项目使用 VR 增强运维 TiDB 时的带入感,给予 DBA 沉浸式的运维体验!
https://github.com/fantastic-things/ticockpit-proposal
T4 在万物互联的今天,各种数据的体量都在迅速膨胀。不但是传统意义上的离线分析场景,在线交易系统所面对的数据也迅速向 BigData scale 迈进。如何用最合理的成本支撑更大的业务数据流量成为这个时代 TiDB 需要思考的一个问题。而这个问题的核心是更好的匹配 TiDB 和它所承载的数据的价值,数据价值超出 TiDB 成本的部分越大,TiDB 为业务创造的价值也越大。

解决数据价值和 TiDB 成本问题可以从两个方向考虑。一种方向是使用各种方式降低 TiDB 的成本,比如利用分级存储将冷数据放置在更低成本的存储介质上。而另外一种方向则是提升数据的价值密度,将 TiDB 的能力用于最有价值的数据上。本项目的目标是使用具备普适性的时间维度对数据进行自动化的蒸馏,让 TiDB 的每一份资源投入都应用在高度萃取的高价值数据上。

T4 项目旨在为 TiDB 的数据表增加 TTL 能力,让数据以指定的 TTL 策略自动过期并回收对应的资源。实现数据价值的实时蒸馏,萃取高价值的新鲜数据。
https://docs.google.com/document/d/1iG1sf_gKYiXn_WCpFdBta2zJrCx8WuURjfFeq9Ljm_w/edit
zhangyushao Boost bug fix efficiency. In this project, we identified the inefficiency in how currently TiDB bug issues are processed. After a bug issue is submitted, a developer always tries to manually reproduce the case with the provided test cases. It is not rare that an issue is automatically tagged as a bug before it is finally classified as a not a bug/cannot reproduce by another developer. Our project aims to reduce manual efforts during the mentioned process and provide the developer with more precise and concise bug information. We plan to implement a Continuous Integration (CI) tool to smartly reproduce the bug issue and to previously tag it before any manual efforts. We also expect to link each issue with an environment to facilitate the later manual recheck by the developer. https://docs.google.com/document/d/1s8zTdHZnohcrDWNRzk8Y1zAk7CwCeM9CtzK_rko_y9o/edit?usp=sharing
森海飞霞 dynamic copysets proposal: 对于一个分布式存储系统,使用多副本机制可以保证数据的安全性。然而,通常情况下,随着集群规模的增长,绝大部分的数据副本数并不会随之增长。久而久之,就会出现当集群规模成百上千时,挂掉的机器节点数等于或者大于数据的副本数(这个数字通常是 3 )的概率也会随之上升。 对于一个 3副本的集群,当集群发生 3 个节点宕机时,对于不同的调度算法而言,丢失数据的概率与影响范围也是不同的。我们希望通过 dynamic copysets 在该情况发生时,降低丢失数据的概率。 https://docs.google.com/document/d/1emQUIJ_ayczFCWNvVVgzdGY8n6LSyE7fDC5tXb5ZjmI/edit
Uchiha clan Flexible-Raft allows us to replicate the state log safely, without having to replicate the state log to the majority of the nodes in the cluster to achieve quorum. This idea is drawn out from the Flexible-Paxos. The submitted RFC contain the detailed information. https://docs.google.com/document/d/1t5XcdJj8do5dv8uRdmgS2px7Ts0qWivPn9P8pe4IR40/edit
or 0=0 or 待补充 https://docs.google.com/document/d/1TdZJR9vkVgfvpiirhruQKnu7pLYfK6jEhZWkZctAov4/edit
TiGraph Integrate graph mode in TiDB and make TiDB a hybrid mode distributed database. https://docs.google.com/document/d/1KHOAYJLim-A7YMOVZvZUc1PIxXDmT6nk0fQ5GNiU0T8/edit
tidb-mysql-injection-attack 从数据库sql解析层面,设计一套原生防sql注入的检测体系,提升数据库的应用安全性。
Phantom Ensemble Deterministic on TiDB 1. 在 TiDB 上实现确定性事务模型,预期在 autocommit 的场景下大幅度提升性能,采用与现有 2pc 事务模型兼容的设计。 2. 我们重新思考 2pc 的原子性解决方法,提出了一种新的保证事务原子性的方案,在性能与容错之间选取了另一种策略。 https://docs.google.com/document/d/1AgUGvInmM5o_pw8UBlaxJUmGCFUJUUx0LoX1fhr7ph0/edit
Tidb Trace TiDB全量SQL采集及性能分析 采集并记录访问TiDB的SQL语句,以及对应SQL语句的性能指标,用来更细粒度的分析语句级的性能瓶颈问题。 实现思路: 1、采集程序数据源基于information_schema.cluster_statements_summary表,在TiDB Server节点上间隔10ms获取数据,在内存中比较前后两次间隔获取的查询结果集的差异值记录下来。对于执行时间小于间隔时间的SQL语句,我们可以近似的获取到这条SQL语句执行对应的性能指标。 2、采集程序输出文件到tmpfs,基于内存的文件系统中。 3、导入程序,通过访问tmpfs中的trace临时文件,拼接成批量的SQL,直接insert到clickhouse数据库中。 4、需要修改源码扩展一些功能: QUERY_SAMPLE_TEXT:现在记录的是原 SQL 语句,一个SQL语句带参数的样本,可以考虑修改为上次执行的SQL语句明细 现在表中没有记录客户端IP,可以考虑增加客户端IP 将LAST_SEEN字段的时间精度提高到毫秒级等 https://github.com/wangdong58/tidb_trace/blob/main/README.md
TIDB flashback 生产环境数据类的误操作易引发RCA,闪回工具对于数据回滚及其重要。随着TIDB推广,为快速回滚TIDB误操作,需要TIDB闪回工具。 https://github.com/cenkore/tidbflashback/blob/master/TiDB%202020%20Hackathon%20RFC.md
blue 缓解热点数据对集群中某个TiKV的压力。
龙姐姐说的都队 TiFS:a FUSE based on TiKV https://github.com/Hexilee/tifs
2021 tidb-operator:支持statefulset原地重启。
TiFlink 为Flink实现更好的TiKV Source、Sink和TiDB Catalog Reader,支持Snapshot读取和Change Log增量读取和2 Phase Commit写入。以实现在TiDB里快速创建Materialized View和在Flink里方便编写读写TiKV数据的批/流处理任务。 https://docs.google.com/document/d/1ksdPxk4WLIzTJmy7pPh37JrsoBSuJy8uK28rABWQYa0/edit
进击的韭菜 基于IPFS区块链技术的TiDB
目前TiDB需要TiKV或者TiFlash作为存储。对于供应链溯源、数据交易等场景,存在去中心化、不可篡改的需求。IPFS协议利用比特币区块链协议和网络基础设施的优势来存储不可更改的数据。我们会将tidb运行在IPFS的链上
https://shimo.im/docs/8twhTX6jTKcrPWTy/
CAAS Chaos Engineering as a Service https://github.com/wuntun/rfcs/blob/main/text/2020-12-31-chaos-engineering-as-a-service.md
接化发 TiKV 通用协处理器实现方案
转转队 walleKV是一套企业级KV存储方案,目标是让KV存储更加好用。 通过融合多种存储引擎(redis、tikv等)集中化解决海量KV持久化的问题,充分利用各种不用类型的存储介质(内存、SSD、机械磁盘、S3), 加速数据写入,加速热数据处理,自动迁移数据到不同的存储介质; 对于企业可以最大程度减少研发和运维的复杂度,并且可以大幅度提升服务器利用率,有效的缩减资源和人力的投入,成为企业降本增效利器。 https://github.com/walletech/wallekv
🐏️🔪️ 使 TiKV 使用用户态驱动和存储技术,以提升 TiKV 的整体性能。
IOMMU等内核功能的提供使得用户态驱动成为了可能,并且在网络栈上 DPDK 已经使用用户态驱动极大地提升了程序性能。而许多云厂商也已使用用户态存储设备的驱动使得云盘性能得到了提升。在本次比赛中将尝试使用 SPDK 提供的工具让 TiKV 基于用户态存储运行,期待获得显著的性能提升。同时也将提供方便易用的迁移机制,方便用户从朴素的操作系统读写方式迁移到使用用户态存储读写。
这一实现将提升 TiKV 的性能,提高调度的可操作性和可能性,也将为即将到来的 NVDIMM / DAX 存储的时代做好准备,可谓一举三得。
https://github.com/YangKeao/tikv/blob/hackathon-pingcap/rfc.md
XuanyuanDB Automatically and continuously tune database knobs to increase performance. We do this by developing a Machine learning model using Deep Reinforcement Learning(DRL) to tune TiDB(/TiKV/RocksDB) settings in order to decrease latency and increase throughput. The proposal is based on Qtune's model which features vectorizing sql query information and using an actor-critic model in order to predict which knobs need to be adjusted. https://gist.github.com/DallasC/08c5b5861fe660b5a2a1ca418c2442af
评委说的都 本 issue 旨在解决在线、离线数据查询以及流式计算统一 SQL 入口的问题。需要在 tidb 现有在线数据 SQL 入口的基础上,增加 - 离线数据查询 SQL 入口 - 流式计算 SQL 入口 本 issue 希望能通过 TiDB 和 Flink,利用 TiDB 在线数据上的优势,以及 Flink 在离线数据和流式计算上的优势,打造一个统一的 SQL 入口。用户不需要再意识到我是在用 TiDB、Flink、Spark 或是其他计算引擎,只需要在同一个入口,用同一个语法的 SQL 就能解决在线、离线数据查询,流式计算等问题。 https://github.com/marsishandsome/tidb-hackathon-2021-flink/blob/master/RCF.md
Mouse Tail Juice Support event scheduler (CREATE EVENT) in TiDB. https://docs.google.com/document/d/1eyozEEG66G-Wwem1OTmbpERIfUkzE1_7gKkNa9KbfOQ/edit
Tuantuan Yuanyuan Build a Jupyter kernel which allows interact with TiDB using SQL in Jupyter Notebooks.

It will enable us to leverage all compabilities of Jupyter community.
https://github.com/wangfenjin/xeus-tidb
CloudSearch 基于TIKV的全文搜索引擎;TIDB使用TIKV作为其分布式存储层,在上层构建了无状态的SQL查询层。同样的,全文索引的核心是倒排索引, 即token到documentID的映射关系,同样可以使用KV存储解决;基于此,我们可以试图去构建新的全文索引引擎。 https://shimo.im/docs/6whKWtJRpCk6pjw9/
Xteam 基于region级别的follower read优化 https://docs.google.com/document/d/1gOqxOEwkW2v6FG2cXA3epRKAIg-SIXZjwQDmfn0EHoQ/edit
B.A.D 开发一个 Visual Studio Code 插件,极大提升开发者开发和调试 TiDB 项目的体验。 https://gist.github.com/dragonly/dfe1d5c9ecb50eb4fc460a663a5d5076
中年先锋队 自动分析TiDB集群性能瓶颈。 程序开启后运行指定workload(如sysbench),自动调整并发度,并分析系统各项metrics指标的变化,然后在可视化页面中展示系统的性能瓶颈,用来引导DBA调整配置提升集群性能。
Solo* Design and implement a tikv based dynamic library to extend storage system in TiDB cluster. This library aims to export current multi-raft framework to other engines and make them be able to provide services(read/write) as raftstore directly for HTAP and OLAP scenes. https://github.com/solotzg/tikv/blob/__tmp/0/readme.md
young队 TiDB集群中 PD、TiKV等组件以及 TiDB Binlog 和备份等工具都需要使用将数据持久化的存储 。而k8s上目前只支持静态分配pv的本地存储,而TiDB上使用第三方本地存储local-static-provisioner在发现目录 (discovery directory) 下的每一个挂载点创建一个PV,对于大规模云原生tidb集群通常需要创建大量PV,因此,在发现目录下需要预先创建大量挂载点,多个集群共用发现目录下挂载点时,无法对其挂载点做整体的容量管理,并且对挂载点进行扩容时没有自动化方案。
本提案针对云原生TiDB在k8s上使用本地存储存在的问题,提出了一种基于CSI+LVM实现本地动态存储方案,通过k8s提供的CSI将本地存储与k8s解耦,使用LVM技术实现对本地存储动态管理和在线扩容,并在原生k8s调度器基础上增加位置、容量调度因子实现本地存储优化调度。
https://github.com/shipx123/diskmanager/blob/main/doc/design/rfc.md
zh.md 本提案提供一套侧重中文技术文档的写作风格检查与自动化管理解决方案,包括:

完整的中文文档写作风格指南: 为文档作者和审校者提供统一的文档写作参考规范
中文文档分析工具和中文文档风格检测工具: 可检测存量或增量文档中的风格问题
基于 GitHub 的文档管理 bot: 可以自动建立 issue 或 PR 修复存量或增量文档中的风格问题
**基于机器学习辅助文档写作:**可以辅助生成具有统一风格的文档
可明显降低文档的审查工作量、提高文档整体质量,调动工程师积极参与文档内容建设。

本提案适用于任何需要专业技术文档的项目,具有普及性。
https://github.com/WPH95/zh.md/blob/main/PROPOSAL.md
hundundm TiBI: 将 Metabase 类似的 BI 分析工具结合到 TiDB 生态中,在 TiDB Dashboard 直接进行展示,为 TiDB 插上 BI 分析的翅膀。既能帮助分析师能基于 TiDB 直接进行数据可视化分析,也能帮助 DBA 直接分析集群状况,如表的数据分布,索引分布等。 https://docs.google.com/document/d/1-yuJ3GLrrRqFC1YFBAzQ56ppTGvbtVNJgIf_jPvXa6c/edit
Fox 在 TIDB 上实现分布式的基于表/库的 IOPS 配额能力。
名字,有用吗 Graph Database on TiKV https://github.com/leiysky/tidb-hackathon-2020
克兰德曼 在 2020 年,很多云提供商都出现了服务不可用、宕机等情况,在这种情况下,很多厂商会选择混合云等方式减少对云的依赖。在这一背景下,我们希望能模拟云提供商的服务发生故障,观察故障带来的影响,从而提高应用的弹性,可观测性等。 https://docs.google.com/document/d/1XfitU-_HUDOKXAxloVJNkHjljIXay3pOPo8CPzSNinY/edit
Hackthon Fix Typo Team TiDB 在小表场景下由于存在回表导致请求延迟不敌 MySQL。我们可以特意把小表的索引和数据调度到同一个 Store 上然后用一个请求同时完成 Index Scan 和 Table Scan 来消除回表开销。 https://hackmd.io/lzGLcGNNQbCkYNdJQvxNOA?both
鸽了爽 FDW(FOREIGN DATA WRAPPER,外部数据包装器)可使得数据库可以访问不同的远程数据存储。

本提案将严格遵循 SQL/MED,通过对 Table Lifecycle 注入 Hook(复用 TiDB plan,在执行器 builder 时候使用自定义算子逻辑)使用 TiDB Plugin 等手段,使 TiDB 支持 FDW 功能。从而大幅度降低 TiDB 支持远程数据源的难度,提升 TiDB 社区活跃性。
https://gist.github.com/iguoyr/c1fa54fdbe2c335e3b998afddb685e85
Mods GPU Accelerated TiDB For Analytical Queries

Empower TiDB using GPU acceleration techniques to improve performance of CPU-intensive analytical query processing, such as joins, aggregations, etc.

Other than scaling out, which TiDB is already capable of, the ability of scaling up by embracing new generation hardware will be extended.
https://gist.github.com/zanmato1984/520400e0426ca18ef3711355ac930e86
好自为之队 tikv 弱一致读
dddd, indeed 基于 raft log 实现 TiDB 的物化视图。
通过实现类似于 TiFlash Proxy 的 raft learner,将导出的 raft log 进行预聚合等处理,以此来在 TiDB 获得中类似于物化视图的效果。这里的预聚合结果带有 schema,并且可以满足事务(多版本控制)以及最终一致性。
除了预聚合之外,还可以通过接入 Flink 等方式来实现更多的功能,如流式 Join 。
https://github.com/LittleFall/tidb-hackathon-2020/blob/main/RFC.md
Ti-Improve AWS native testing framework TiDB 作为一款云上数据库,其云上特性与云厂商提供的特性息息相关,如何使用领先的云厂商 aws 基础设施对 TiDB 进行全自动化的测试一直是一个难点和重点,这个 hackathon 项目完全使用 aws 的基础设施来进行测试 TiDB, 如 s3 存储备份文件,lambda 来执行具体的测试事项,aws codepipeline 来作为调度执行引擎,cloud watch 观测 TiDB 的表现,并且可以使用 chaos mesh 作为注入等 https://docs.google.com/document/d/1bgbI0hVkWRtIe_jFSc_Kx0IfbPu15MOyRY7TtW2e6xI/edit
Bourbon As is described in http://pages.cs.wisc.edu/~yifann/bourbon-osdi20.pdf ,Try learned index on