V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jinmingjian
V2EX  ›  程序员

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

  •  3
     
  •   jinmingjian · 2020-08-07 20:49:35 +08:00 · 3591 次点击
    这是一个创建于 1347 天前的主题,其中的信息可能已经有所发展或是发生改变。

    潜水好久...

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

    项目以 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

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

    btw,看起来挺有潜力的,已 star
    jinmingjian
        5
    jinmingjian  
    OP
       2020-08-07 22:18:03 +08:00
    @liprais 好问题,其实很多数仓不保证正确性。什么是正确性?单机存储是要做 checksum 的,文件系统本身可能就有 checksum 。多节点集群有副本的话有一致性问题,但本项目集群的方向是 CRDT 。单机主要是持久化。要保证高可用和集群一样,还是副本(也有些其他方案,但从系统工程和顶级的性能角度应该是比较困难的)。高性能 checksum 玩法也很多。喜欢一定要来玩:)
    jinmingjian
        6
    jinmingjian  
    OP
       2020-08-07 22:21:01 +08:00
    @tikazyq 谢谢!主要是时间比较有限,主意还是好主意:)
    tommyzhang
        7
    tommyzhang  
       2020-08-07 22:35:43 +08:00
    北高峰
    BIAOXYZ
        8
    BIAOXYZ  
       2020-08-07 22:43:09 +08:00
    mark 一下,感觉能参与进去会是个锻炼的好机会~
    sampeng
        9
    sampeng  
       2020-08-08 08:36:43 +08:00 via iPhone
    rust 在大数据领域大有可为。只要成熟下来,java 的那群遗产都可以被替换掉。
    jinmingjian
        10
    jinmingjian  
    OP
       2020-08-08 09:27:34 +08:00
    @BIAOXYZ 是的。把一个简单系统做复杂很容易,但把一个复杂系统做简单很难。TensorBase 就是这样一个把复杂做简单的项目。这里面的 Rust 实践是最新的,即便是 Rust 新手想最快了解整个 Rust 生态发展和工程实践,看这个 TensorBase 源码是很好的。这里面有些 Rust 功能在社区热度过高但我保留意见,比如 Async/await,过于复杂的语法抽象是有代价的,新手写起来确实容易了,出了问题就要哭。
    jinmingjian
        11
    jinmingjian  
    OP
       2020-08-08 09:43:04 +08:00
    @sampeng 同意。Rust 这两年生态和使用体验的变化非常大,三年前我开始写一本到现在都没完成的 Rust 书,当时初步的涉猎,我发现还有大量的坑,到如今大部分已经解决的很好。
    leeg810312
        12
    leeg810312  
       2020-08-08 10:05:22 +08:00 via Android
    基础设施软件开发不易,lz 对于自己这个项目的成熟度如何评估?有可能用于生产吗?
    AlisaDestiny
        13
    AlisaDestiny  
       2020-08-08 10:06:40 +08:00
    @jinmingjian 我在学 rust,除了官方文档外,请问有没有你觉得比较好的书,能不能推荐下,中英文均可。
    jinmingjian
        14
    jinmingjian  
    OP
       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
        15
    jinmingjian  
    OP
       2020-08-08 11:15:59 +08:00   ❤️ 1
    @AlisaDestiny 很好!大东“Rust 编程之道”这本书还不错,文字量较多适合慢看,我翻的更多的是 Jim Blandy 等的 Programming Rust,这本 jd 上有各种版本。“深入浅出 Rust”这本,作者有一定思考,但可能不太适合初学者。
    facelessvoid
        16
    facelessvoid  
       2020-08-08 13:32:40 +08:00
    大佬,已 start, 学习一个
    jinmingjian
        17
    jinmingjian  
    OP
       2020-08-08 13:56:12 +08:00
    @facelessvoid 谢谢:)
    leeg810312
        18
    leeg810312  
       2020-08-08 14:59:59 +08:00 via Android
    @jinmingjian clickhouse 性能很强,但就我了解,它优势还是偏重于高性能数据库存储引擎,而不是高性能运算,lz 对 tensorbase 的发展有什么想法吗?倾向高性能存储还是高性能运算呢?
    jinmingjian
        19
    jinmingjian  
    OP
       2020-08-08 15:34:01 +08:00
    @leeg810312 通吃,高性能是核心设计。我这个测试就是内存运算,你可以发现 clickhouse 运算并不强。当然 clickhouse 也可以改,具体算法比较容易 copy,但架构一旦设定很难改,代价太大。Base 要把性能这个事推到到极限,如果它要 copy 架构,欢迎它 copy 我这个的架构。
    jinmingjian
        20
    jinmingjian  
    OP
       2020-08-08 15:38:21 +08:00
    @leeg810312 其实还是有点偏向的:)还没到这个阶段,但我感觉你有点感觉哦:)可以上 slack sao 聊?我多加几种聊天方式?
    jinmingjian
        21
    jinmingjian  
    OP
       2020-08-08 16:57:56 +08:00 via iPhone
    @leeg810312 哦,对不起看错了,存储其实他做的相当不好,就不不具体批评了。ch 的程序员比较“吸收”和优化算法,比如 hashtable 改改。即便同样一个方向,Base 的做法也会很不一样。
    BIAOXYZ
        22
    BIAOXYZ  
       2020-08-08 21:40:03 +08:00
    @jinmingjian #10 您好,我去了官网 https://tensorbase.io/ ,点了“Join Slack”,然后怎么也加不进去。。。我记得 k8s 的官方 slack 里是个 invite 的链接,一点就可以加进去了。不知道是我这的问题(我不止一个 slack 账号- -公司邮箱的公司用,个人的个人用)还是那个 slack 链接没有类似 invitation 功能的问题。。。
    jinmingjian
        23
    jinmingjian  
    OP
       2020-08-08 22:08:42 +08:00 via iPhone
    @BIAOXYZ 感谢反馈!我明天下午 teams,wechat 等多加几个!这几天观察发现 slack 和 teams 似乎都有不稳定的时候。想准备一些线上活动,对 rust 和数据之一有兴趣机油们可以定期快闪聊聊,可关注项目页面更新的这些渠道!
    Sasasu
        24
    Sasasu  
       2020-08-10 21:20:09 +08:00 via Android
    这个扫描速度是 110GiB/s 如果每列都有 8 byte 的话

    是不是把数据的熵减少到极限了,比如一堆 0 bit 相加。

    这个速度已经超过我认知的内存速度了
    jinmingjian
        25
    jinmingjian  
    OP
       2020-08-10 21:52:28 +08:00
    @Sasasu 并没有。实际上,没有进行压缩,列类型大小为 4B 。内存最大带宽比较容易估算:每个内存通道的带宽为大约为 20GB/s,xeon sp 通常是 6 通道,所以总带宽是~ 20*6=~ 120GB/s,具体大小和 DDR4 的内存频率是有关系的。我看过某块 8280M 能到 123GB/s,这都是代码能跑出的真实带宽。简单说,适当的运算代码是可以基本达到最大理论带宽的。
    heavyrainn
        26
    heavyrainn  
       2020-08-11 18:00:41 +08:00
    star 一下,给大佬提鞋…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5468 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:59 · PVG 14:59 · LAX 23:59 · JFK 02:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.