开源观察|数据处理
Skytable: 高性能、安全可靠的实时 NoSQL 数据库
Skytable 致力于提供最好的 键值对(key/value) 存储、文档(document)存储和列式(columnar)数据库。Skytable 以前称为 TerrabaseDB(然后是 Skybase),也被社区昵称为“STable”、“Sky”和“SDB”。
Skytable 目前正在开发中,但可以用作高性能、安全和持久的键值存储。
roaring-rs: 更好的压缩位集(bitset)
相关论文: 使用 Roaring bitmap 获得更好的位图性能 中描述到:
位图索引常用于数据库和搜索引擎。通过利用位级并行性,它们可以显着加速查询。但是,它们可以使用大量内存。因此我们可能更喜欢压缩位图索引。在 Oracle 的引领下,位图通常使用运行长度编码 (RLE) 进行压缩。在这项工作中,我们引入了一种新形式的压缩位图,称为 Roaring,它使用打包数组而不是 RLE 进行压缩。我们将其与两种基于 RLE 的高性能位图编码技术进行比较:WAH(字对齐混合压缩方案)和 Concise(压缩“n”可组合整数集)。在合成数据和真实数据上,我们发现 Roaring 位图通常压缩得更好。
Roaring 位图数据结构的 Rust 移植版本。位图(或位集)是一个二进制数组,我们可以将其视为整数集的有效且紧凑的表示。例如,集合和可能以二进制形式存储为
10011000
和10110000
。我们可以使用位图(例如,在我们的例子中为10111000
和10010000
)上的按位运算(OR
、AND
)来计算两个这样的对应列表之间的并集或交集。Roaring 将位图集条目作为
32
位整数存储在简洁的两级索引中。与两种有竞争力的位图压缩方案 WAH 和 Concise 相比,Roaring 使用的内存更少,速度更快。
Roaring BitMap 简称为RBM,其实现思路:
将32位无符号整数按照高16位分桶,即最多可能有2^16=65536
个桶,论文内称为container。存储数据时,按照数据的高16位找到container(找不到就会新建一个),再将低16位放入container中。也就是说,一个RBM就是很多container的集合。
更多内容参考: www.jianshu.com/p/818ac4e90…
Quickwit 0.2 为 ClickHouse 和 Kafka 带来全文搜索
Quickwit 号称用于日志管理的云原生和高性价比搜索引擎。Quickwit 是为日志构建的下一代搜索和分析引擎。它是 Elasticsearch 的一种高度可靠且具有成本效益的替代方案。
当前 0.2 版本发布,将支持 ClickHouse 和 Kafka 的全文搜索,同时新版本主要介绍以下功能:
-
准确一次性提取 Kafka 原生数据
-
搜索流 API
-
PostgreSQL 元存储
-
标签修剪
-
适当的索引管道
Mako: 机器学习的数据处理库
Mako是一个数据处理库,主要用于机器学习。它提供了高效的 pipe 来构建有向非循环数据流图,并提供了一个 DataLoader 来在单独的线程中运行该图。它还提供了通用的标记器和批处理工具来处理文本数据。
Arrow2 发布 v0.9
Arrow2 是 Apache Arrow 的 Rust 实现,是继 C++ 实现之后,Arrow 功能最完整的实现。v0.9 的主要更新:
由 std Vec 支持,从而使其成为:
- 与 Rust 生态的其它的零拷贝
- 更少的 unsafe
- 更符合人体工程学
- 编译速度更快
- 相同的性能
- 支持同步和异步读取和写入 Apache Avro
flatbuffers 依赖被 planus 取代,这是 Rust 中 flatbuffers 规范的重新实现
安全性改进和常规维护
完整的更改列表:github.com/jorgecarlei…
Apache Datafusion 正在考虑采用它作为其后端,请参阅 github.com/apache/arro…
Databend 发布0.7版本,部署更容易,查询更迅速
- 共享存储(弹性)
- 存储计算分离(弹性):存算分离后,增加计算节点时不需要做数据迁移,可以达到秒级增加计算资源的效果。算力的扩张很快。
- 计算资源可以根据不同的业务做划分(弹性):例如下图中的node4可以作为数据导入专用节点,node3作为BI计算专用节点。
- 资源扩张秒级弹性(弹性):这样的架构计算节点异构化,资源分配粒度更细,资源控制更加灵活。
Blog: databend.rs/blog/databe…
PancakeDB 的分享
开源观察 | 云原生
Fermyon 推出WebAssembly 框架 spin
可以配合TO-D杂志第二季第一篇文章来看,能让人深刻理解这些开源项目背后的动机,这比单看他们的开源项目可有趣的多。话说回来,我觉得 Fermyon 的成立,应该是 deislabs 团队这这几年尝试的过程中看到了一些新的风口,他们的项目应该多多关注。
《TO-D 杂志》第二季第一篇文章正式发布,这篇文章是关于微软 DeisLabs 的故事,欢迎大家阅读转发 2d2d.io/s2/deislabs… ,Deis Labs 开发了不少非常前沿的 WebAssembly 和 Rust 项目,现在他们团队中九人出来创业,成立新公司 Fermyon。
关于 Fermyon 名称由来的猜想:这个单词比较贴近费米子(fermion)。所以查了下相关概念,得出一些推论。费米子和玻色子都是宇宙基本粒子,都有自旋属性。但是费米子喜欢独来独往(泡利不相容原理,只适合费米子。 在任何量子系统中,两个费米子无法占据同一个量子态),而玻色子喜欢共享。用费米子来对应wasm的沙盒隔离性。而他们的主打项目名叫 spin 。他们这么费劲起这个名字,我想到一个原因就是避免别人抢注商标。因为之前发生过 Wasmer 抢注商标的事(Wasmer 抢注了WasmEdge的商标,甚至还把 WebAssembly 抢注为自己公司的商标)。这也算是一种商标保护。
为什么是 Spin ?
Fermyon 对在 WebAssembly 中编写微服务和服务器端 Web 应用程序的前景感到极度兴奋。他们在构建 Wagi 时对此进行了预览。但有了 Spin,我们将事情提升到了一个新的水平。更具体地说,Spin 提供了一个构建应用程序的框架。
Spin 是一个用于 Web 应用程序、微服务和其他类似服务器的应用程序的框架。它提供了用于编写 WebAssembly 模块的接口,这些模块可以执行诸如响应 HTTP 请求之类的操作。Spin 的一个独特之处在于它是一个多语言框架。Rust 和 Go 在 Spin 中都有强大的支持,但您也可以编写 Python、Ruby、AssemblyScript、Grain、C/C++ 和其他语言。
Spin 是一项基础性的新技术,它为 Fermyon 正在构建的东西设定了步伐。Fermyon 的目标是为下一代微服务和 Web 应用程序构建一个优秀的开发平台,实现无服务器计算长期以来追求的许多目标。
Fermyon WebAssembly Language Guide
本指南跟踪对将语言编译为 WebAssembly 的支持。它分为三个部分:支持前 20 种语言、WebAssembly 特定语言和其他著名语言。我们跟踪该语言是否可以编译为在浏览器、其他非浏览器环境和WASI环境中运行。在每种语言的详细信息页面中,我们尽最大努力不仅说明当前的支持级别,还指出一系列有用的资源。
Blueboat 是 Cloudflare Workers 的开源替代品。
Blueboat 旨在成为面向无服务器 Web 应用程序的开发人员友好型多租户平台。遵循整体方法:我们尝试在 Rust 中本地实现常用库(在 Web 应用程序上下文中)的特性,以替换原生 Node 插件,提高性能并减少重复代码。Blueboat 的架构可确保平台的安全性,防止代码重复并保持低开销。
Starlane 是一个资源网格
使微服务能够在整个企业中创建、查找、监视和使用各种微资源以及向其他微服务发送消息。 Starlane 还提供了用于部署、执行和连接客户端和服务器端 WebAssembly 参与者(称为 Mechtrons)的机制。
Starlane 使在云、边缘、桌面、移动和物联网环境中安全的 WebAssembly 代码的部署和互操作变得容易。
Youki v0.0.3 版本更新,增加 WASM 支持
youki 是一个 Rust 实现的容器运行时,是 OCI 运行时规范的实现,类似于 runc。此次 0.0.3 版本带来了 wasm 支持。
去容器化! 如何在 k8s 上借助 Rust 运行 Wasm
Wasm 是当下最火热的技术之一,作者介绍了如何将其与 K8s 结合起来,同时说明了为何 Rust 是最适合开发 Wasm 的语言。