您当前的位置:首页 > 电脑百科 > 数据库 > 百科

使用 Rust 实现的现代化实时开源数据仓库

时间:2023-01-08 14:40:48  来源:今日头条  作者:码农世界

一 简单介绍

TensorBase 是使用 Rust 实现的现代化实时开源数据仓库。

 

二 特性

  1. All in Rust。TensorBase 称已经在日常测试中经历数十 TB 的数据注入锤炼,是目前 Rust 社区中,面向用户特别是中小企业实际场景深度优化的、生产完成度最高的通用数据仓库类项目。
  2. 开箱即用。TensorBase 已经支持从数据插入或导入到查询完整数据仓库流程,具备了较高的早期完成度,用户可以从 TensorBase 的 Release 页下载相关 linux 环境下的二进制文件,进行尝试。(windows 10 的 WSL2 目前应该也可以使用)
  3. 兼容 ClickHouse 协议。ClickHouse 是一个 C++ 编写的数据仓库。TensorBase 则使用 Rust 语言从头开始实现了一个高性能的 ClickHouse SQL 方言解析器和 TCP 通讯协议栈。ClickHouse TCP 客户端可以无缝连接 TensorBase。
  4. 性能为先。TensorBase 期望通过新的软件和系统设计将现代硬件的所有潜力发挥出来。TensorBase 首次在核心链路代码上实现了 “F4”:Copy-free,Lock-free,Async-free,Dyn-free(无动态对象分发)。初步的性能评估显示:在 14.7 亿行的纽约出租车数据集上,TensorBase 的简单查询的性能上已经领先 ClickHouse。
  5. 化繁为简。目前的大数据系统使用非常复杂,即使想运行一个最简单的系统,都需要配置大量难以理解的参数或者安装大量第三方依赖。
  6. 对于用户,除了现在已经达成的开箱即用,TensorBase 希望系统在运行时能在自治运行,而不是依赖运维管理员。
  7. 对于开发者,TensorBase 希望将贡献门槛降低。整个项目架构设计简洁高效(更多信息参见后文),项目外依赖很少,完全重新编译(cargo clean 到 cargo build)的单机时间在 1 分钟之内。(大数据系统或者 C++ 数据库的完整构建时间往往以小时计。)
  8. 互联未来。TensorBase 在核心上改造了 Apache Arrow 和 DataFusion,无缝支持 Arrow 格式查询、分析和传输。Arrow 格式作为越来越广泛采用的大数据交换中间格式,已经被多个数据库及大数据生态平台所支持。TensorBase 在引擎上兼容 Arrow,未来可以同时支持云原生和云中立场景下的数据仓库体验,提供存储中立的数据湖服务。

三 架构

 

  • Base Server
  • TensorBase 服务接口层。对外提供数据的接口服务,比如数据的写入和查询入口。TensorBase 创造性的实现了世界上第一个非 C++ 的 ClickHouse TCP 协议服务栈,可以支持 ClickHouse 客户端(clickhouse-client 命令行)以及 native 协议语言驱动的直接连接。同时,Base Server 是第一个 async 中立的 Rust 高性能服务器。Base Server 基于改造的 Actix 事件循环,在服务的实现中完全不使用 async,在提供绝佳的可调试性的同时,评测性能也大幅超过基于 tokio 默认 async 表达层的实现。未来可以引入非 tokio 的网络 io 层实现。
  • Base Meta/Runtime/Storage
  • TensorBase 的元数据层、运行时层和存储层。在存储层,TensorBase 非经典的列式存储。这其中最重要的,我们给出了一个反重力设计:No LSM。我们不再使用在目前开源数据库及大数据平台流行的 LSM Tree(Log Structured Merge Tree)数据结构。而是使用一种我们自己称之为 Partition Tree 的数据结构,数据直接写入分区文件,在保持 Append only 写入性能的同时,避免了 LSM 结构的后续 compact 开销。得益于现代 Linux 内核的支持和巧妙的写入设计,我们在用户态(User-space)核心读写链路上不使用任何锁(Lock-free),最大程度的发挥了高并发网络服务层所提供的能力,可以提供超高速数据写入服务。
  • Base Engine
  • TensorBase 的引擎层。TensorBase 使用改造过的 Apache Arrow 和 DataFusion,并创造性的将底层存储适配到 Arrow 格式,实现了 Zero Copy 的数据查询。当然,目前的适配性存储策略,还只算是一个现在进行中的次优解,TensorBase 未来会对存储层进行持续迭代,提供更多与时俱进的优化。同时,TensorBase 也将进一步地优化帮助 Arrow/DataFusion 社区优化其查询引擎的性能,和社区一起成长。
  • 其他
  • TensorBase 还有一些基础性的组件,比如:
    • base,通用工具库;
    • lang,语言层(目前主要实现一个 ClickHouse 兼容解析和表示层)。
    • lightjit,类表达式 JIT 引擎,未来可扩展至高性能和安全可控的用户定义函数 UDF(User Defined Functions)层。 TensorBase 未来将进一步开发和开放自己的高性能基础件,为 Rust 社区贡献一些独特的高性能可复用基础设施。

注意,架构图中的虚线连接尚未实现,这是一个全景式的架构蓝图。



Tags:Rust   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Rust 标准库 1.77.2 发布,修复高危漏洞
IT之家 4 月 10 日消息,Rust 的优势之一就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者利用 Rust 标准库中的一个安...【详细内容】
2024-04-10  Search: Rust  点击:(4)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  Search: Rust  点击:(20)  评论:(0)  加入收藏
Rust 最受欢迎的这些库
今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。什么是 Rust 库?在 Rust 中,常被称为 “crate” 的库,是一个打包的单元...【详细内容】
2024-02-19  Search: Rust  点击:(50)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  Search: Rust  点击:(89)  评论:(0)  加入收藏
在 Rust 编程中使用多线程
编程语言有一些不同的方法来实现线程,而且很多操作系统提供了创建新线程的 API。Rust 标准库使用 1:1 线程实现,这代表程序的每一个语言级线程使用一个系统线程。1. Rust线程...【详细内容】
2024-01-07  Search: Rust  点击:(78)  评论:(0)  加入收藏
你应该知晓的 Rust Web 框架
前言在之前的用 Rust 搭建 React Server Components 的 Web 服务器我们利用了Axum构建了RSC的服务器。也算是用Rust在构建Web服务上的小试牛刀。虽然说Axum在Rust Web应用中...【详细内容】
2023-12-07  Search: Rust  点击:(164)  评论:(0)  加入收藏
解密 Python 如何调用 Rust 编译生成的动态链接库
楔子Rust 让 Python 更加伟大,随着 Rust 的流行,反而让 Python 的生产力提高了不少。因为有越来越多的 Python 工具,都选择了 Rust 进行开发,并且性能也优于同类型的其它工具。...【详细内容】
2023-11-29  Search: Rust  点击:(189)  评论:(0)  加入收藏
一篇学会 Rust 内存布局
整型,浮点型,struct,vec!,enum 本文是对 Rust内存布局[1] 的学习与记录 struct A { a: i64, b: u64,}struct B { a: i32, b: u64,}struct C { a: i64, b:...【详细内容】
2023-11-28  Search: Rust  点击:(113)  评论:(0)  加入收藏
Rust 十月就业报告:备受大厂青睐
智能招聘平台 filtra 发布了编程语言 Rust 的 10 月就业报告,相比 9 月的462 条招聘信息,10 月略微下降到了 460 条,但雇主数量略有增长,整体而言,Rust 的就业形式处于比较平稳的...【详细内容】
2023-11-15  Search: Rust  点击:(203)  评论:(0)  加入收藏
Rust 变量,你学会了吗?
Rust 是一门强调安全、并发、高效的系统编程语言。无 GC 实现内存安全机制、无数据竞争的并发机制、无运行时开销的抽象机制,是 Rust 独特的优越特性。 它声称解决了传统 C...【详细内容】
2023-11-01  Search: Rust  点击:(242)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(5)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(5)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(14)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(13)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(7)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(15)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(6)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(5)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(27)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(20)  评论:(0)  加入收藏
站内最新
站内热门
站内头条