今天开源了一个自己写的数据仓库原型

2020-08-07 20:49:35 +08:00
 jinmingjian

潜水好久...

这个项目的特点是高性能,面对海量数据时所需要的高性能。

项目以 Rust 语言构建系统,C 语言提供运行时查询内核。目前原型提供两个命令行:baseops 做数据导入和表信息维护; baseshell 查询数据。查询现在可以提供整数类型列的简单 sum 聚合查询,能在 100 毫秒左右完成 15 亿行数据的 sum 查询,是 clickhouse 的 6 倍。

Rust 虽然比 c++已经降低了很大的门槛,但良好地掌控还是需要一些经验。相反,如果有系统编程或者高性能编程经验的小伙伴会比较 exciting,v2 上应该有这样的基友吧。

这个开源项目也想证明中国工程师在性能关键的数据基础设施领域可以一战。其实这几年中国已经有了一些世界级的开源项目,但以大厂背后 kpi 驱动为主。在大数据领域,更多的公司使用的是,美国开发的( Hadoop/Spark ),俄罗斯开发的( clickhouse ),德国开发的( xxx )( v2 招聘贴也可以看出)。中国工程师只能到这些项目 contribute ?当然,之前选择不多是事实,但我个人希望这种情况越来越多地可以改变。

今天我就出来做个先驱,我就要点燃这样一个火把,证明中国工程师也能写顶级性能的开源大数据数据基础设施。

有兴趣的基友们 join in 或者 star 个赞吧:)

https://github.com/tensorbase/tensorbase

3798 次点击
所在节点    程序员
26 条回复
leeg810312
2020-08-07 21:32:35 +08:00
lz 第一贴诚意招聘,这是第二贴,自己的开源项目,都挺有含金量,就是少了点 hh
jinmingjian
2020-08-07 21:42:07 +08:00
嘿嘿,哎哟,终于有人说句话啊:)之前的招聘好久了,再之前 6-7 年还发过一个 Java 高性能库,还有些游戏公司“悄悄”用,一时间“南云风”,北就是我咯:)纯 YY 一下,时光真快,想干点事?干就是了!
liprais
2020-08-07 21:50:44 +08:00
怎么保证正确性?
tikazyq
2020-08-07 22:10:41 +08:00
为国争光,先从开源中国开始,在 Gitee 上建个项目吧,免得被美帝哪天把 Github 给禁了

btw,看起来挺有潜力的,已 star
jinmingjian
2020-08-07 22:18:03 +08:00
@liprais 好问题,其实很多数仓不保证正确性。什么是正确性?单机存储是要做 checksum 的,文件系统本身可能就有 checksum 。多节点集群有副本的话有一致性问题,但本项目集群的方向是 CRDT 。单机主要是持久化。要保证高可用和集群一样,还是副本(也有些其他方案,但从系统工程和顶级的性能角度应该是比较困难的)。高性能 checksum 玩法也很多。喜欢一定要来玩:)
jinmingjian
2020-08-07 22:21:01 +08:00
@tikazyq 谢谢!主要是时间比较有限,主意还是好主意:)
tommyzhang
2020-08-07 22:35:43 +08:00
北高峰
BIAOXYZ
2020-08-07 22:43:09 +08:00
mark 一下,感觉能参与进去会是个锻炼的好机会~
sampeng
2020-08-08 08:36:43 +08:00
rust 在大数据领域大有可为。只要成熟下来,java 的那群遗产都可以被替换掉。
jinmingjian
2020-08-08 09:27:34 +08:00
@BIAOXYZ 是的。把一个简单系统做复杂很容易,但把一个复杂系统做简单很难。TensorBase 就是这样一个把复杂做简单的项目。这里面的 Rust 实践是最新的,即便是 Rust 新手想最快了解整个 Rust 生态发展和工程实践,看这个 TensorBase 源码是很好的。这里面有些 Rust 功能在社区热度过高但我保留意见,比如 Async/await,过于复杂的语法抽象是有代价的,新手写起来确实容易了,出了问题就要哭。
jinmingjian
2020-08-08 09:43:04 +08:00
@sampeng 同意。Rust 这两年生态和使用体验的变化非常大,三年前我开始写一本到现在都没完成的 Rust 书,当时初步的涉猎,我发现还有大量的坑,到如今大部分已经解决的很好。
leeg810312
2020-08-08 10:05:22 +08:00
基础设施软件开发不易,lz 对于自己这个项目的成熟度如何评估?有可能用于生产吗?
AlisaDestiny
2020-08-08 10:06:40 +08:00
@jinmingjian 我在学 rust,除了官方文档外,请问有没有你觉得比较好的书,能不能推荐下,中英文均可。
jinmingjian
2020-08-08 11:08:37 +08:00
@leeg810312 这个就功能来说,成熟度不高。但架构(或者方法论)来说很高,而且我认为局部到顶,因为自己有点完美主义,自己丢脸事小,不能给中国工程师丢脸 。我在项目 issues 列了 7 个 issue 都是 new feature,如果完成,单表查询 sql 就 ok 了。如果是我来完成 1-2 天吧,主要是体力活,但我希望有小伙伴参与进来,对理解系统工作帮助很大。我怕走太远,导致大家入门难度提升过大。另外说明一点,这个项目需要一点系统编程经验,但不需要有数据库经验。这个项目其实希望大家都把教科书那套忘掉,Base 会用很多底层而简单的 state-of-art 取代上层的优化,包括基于代价的优化器这种(都会抛弃)。

现在的状态是,如果你有一堆整数数据,用它能帮你极快的做简单统计( 7 个 issues 完成后)。但计划 2-3 个月后会有面向生产的版本。

面向生产会需要一些有趣的特性,比如滚动升级,除了性能。而这些特性其实对技能要求不是很高,大家有兴趣可以一起来,没有什么比看见一个系统从 0 成长为参天巨树更让人兴奋:)和一些“前辈”拿到风投再做不同,我做这件事只是信念,我希望中国工程师对大规模数据分析这件事有兴趣的同学能聚集过来(这件事情大厂闭源的做不了,大厂 kpi 驱动开源的做不好),我愿意提供我的经验和能力和大家一起来做这件事。
jinmingjian
2020-08-08 11:15:59 +08:00
@AlisaDestiny 很好!大东“Rust 编程之道”这本书还不错,文字量较多适合慢看,我翻的更多的是 Jim Blandy 等的 Programming Rust,这本 jd 上有各种版本。“深入浅出 Rust”这本,作者有一定思考,但可能不太适合初学者。
facelessvoid
2020-08-08 13:32:40 +08:00
大佬,已 start, 学习一个
jinmingjian
2020-08-08 13:56:12 +08:00
@facelessvoid 谢谢:)
leeg810312
2020-08-08 14:59:59 +08:00
@jinmingjian clickhouse 性能很强,但就我了解,它优势还是偏重于高性能数据库存储引擎,而不是高性能运算,lz 对 tensorbase 的发展有什么想法吗?倾向高性能存储还是高性能运算呢?
jinmingjian
2020-08-08 15:34:01 +08:00
@leeg810312 通吃,高性能是核心设计。我这个测试就是内存运算,你可以发现 clickhouse 运算并不强。当然 clickhouse 也可以改,具体算法比较容易 copy,但架构一旦设定很难改,代价太大。Base 要把性能这个事推到到极限,如果它要 copy 架构,欢迎它 copy 我这个的架构。
jinmingjian
2020-08-08 15:38:21 +08:00
@leeg810312 其实还是有点偏向的:)还没到这个阶段,但我感觉你有点感觉哦:)可以上 slack sao 聊?我多加几种聊天方式?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX