Skip to content

Commit

Permalink
release 2.1.0 (#157)
Browse files Browse the repository at this point in the history
Co-authored-by: baojinri <baojinri@gmail.com>
  • Loading branch information
jiacai2050 and baojinri authored Nov 18, 2024
1 parent e9a8b41 commit 056434a
Show file tree
Hide file tree
Showing 9 changed files with 153 additions and 13 deletions.
58 changes: 58 additions & 0 deletions content/cn/blog/2024/release-2.1.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
title: 2.1.0 版本发布
date: 2024-11-18
tags: release
---

Apache HoraeDB(孵化中)团队很高兴地宣布,v2.1.0 版本已于 2024-11-18 发布,这个版本解决了 60 多个问题,并且包括两个主要功能:

## 1. 引入基于本地磁盘的新 WAL 实现

在之前的版本中,有一个基于 RocksDB 的 WAL。虽然它在大多数情况下运行良好,但存在以下问题:

- 从源代码编译可能是一项具有挑战性的任务,尤其是因为 RocksDB 主要是用 C++ 编写的。
- 对于 WAL 而言,RocksDB 可能有些矫枉过正。如果你对 RocksDB 不熟悉,那么对它进行调整可能会非常具有挑战性。

通过这个新的 WAL,就很好的解决了上面两个问题,而且在性能测试结果,新 WAL 的表现略优于之前的实现,给以后的优化打下了结实的基础。

![写入速率对比](/images/local-wal-write.png)
![回放速率对比](/images/local-wal-replay.png)

感兴趣的朋友可以参考[这里的设计文档]({{< ref "wal_on_disk.md" >}})了解更多这个特性的细节。

## 2. 使用 Apache OpenDAL 访问对象存储

Apache OpenDAL 是一个为访问各种数据存储后端提供统一 API 的项目。以下是一些主要优势:

- 统一的 API:OpenDAL 为访问 AWS S3、Azure Blob Storage 和本地文件系统等不同存储后端提供了一致、统一的 API。
- 优化效率:OpenDAL 在构建时就考虑到了性能。它包括确保高效数据访问和操作的优化功能,使其适用于高性能应用程序。
- 全面的文档:该项目提供了详细的文档,使开发人员更容易上手并了解如何有效地使用该库。

在较新版本的 OpenDAL 中,提供了 `object_store`[集成](https://github.com/apache/opendal/tree/main/integrations/object_store),这非常有利于 HoraeDB 的代码迁移,上层使用的 API 几乎没有发生变化,只需要将对象存储抽象为统一的 OpenDAL operator:

```rust
// Create a new operator
let operator = Operator::new(S3::default())?.finish();

// Create a new object store
let object_store = Arc::new(OpendalStore::new(operator));
```

此外,由于 Apache OpenDAL 实现的 `object_store` 是基于最新版本的,相较于 HoraeDB 之前使用的版本,`object_store` 接口发生了变化,为了保证本次升级范围尽量可控,我们选择对其进行兼容。

对新 API 适配的过程中, `put_multipart` 接口变化最大,因此主要的适配逻辑也在这里,HoraeDB 的做法是:对底层的 `put_multipart` 接口进行了封装,保证上层代码无修改,具体细节可参考:

- https://github.com/apache/horaedb/blob/v2.1.0/src/components/object_store/src/multi_part.rs

> 说明:在 parquet 最新版本中,写入路径上对新 `put_multipart` 接口适配程度较高,若用户使用的 parquet 版本 >= 52.0.0,则无需进行适配,若是更老的版本,可参考 HoraeDB 的适配实现。
## 下载

[下载页面](/downloads)

## 总结

其他错误修复和改进请参见此处:
https://github.com/apache/horaedb/releases/tag/v2.1.0

> 我们一如既往地热忱欢迎您加入[我们的社区](/community),分享您的真知灼见。
8 changes: 4 additions & 4 deletions content/cn/docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@ DROP TABLE `demo`

## 使用 SDK

当前我们支持多种开发语言 SDK,例如 Java,Rust,Python, Go 等, 具体使用方式请参考 [sdk](sdk/README.md)
当前我们支持多种开发语言 SDK,例如 Java,Rust,Python, Go 等, 具体使用方式请参考 [sdk]({{< ref "sdk" >}})。

## 下一步

恭喜你,你已经学习了 HoraeDB 的简单使用。关于 HoraeDB 的更多信息,请参见以下内容。

- [SQL 语法](sql/README.md)
- [部署文档](cluster_deployment/README.md)
- [运维文档](operation/README.md)
- [SQL 语法]({{< ref "sql" >}})
- [部署文档]({{< ref "cluster_deployment" >}})
- [运维文档]({{< ref "operation" >}})
6 changes: 3 additions & 3 deletions content/cn/downloads.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ Apache HoraeDB 使用源码压缩包进行发布。

# 最新发布

最新一次发布版本:2.0.0(2024-05-23),源码[下载地址](https://downloads.apache.org/incubator/horaedb/horaedb/v2.0.0/apache-horaedb-incubating-v2.0.0-src.tar.gz)
最新一次发布版本:2.1.0(2024-11-18),源码[下载地址](https://downloads.apache.org/incubator/horaedb/horaedb/v2.1.0/apache-horaedb-incubating-v2.1.0-src.tar.gz)

用户可以按照以下指南使用 [signatures](https://downloads.apache.org/incubator/horaedb/horaedb/v2.0.0/apache-horaedb-incubating-v2.0.0-src.tar.gz.asc)[checksums](https://downloads.apache.org/incubator/horaedb/horaedb/v2.0.0/apache-horaedb-incubating-v2.0.0-src.tar.gz.sha512) 验证此版本。
用户可以按照以下指南使用 [signatures](https://downloads.apache.org/incubator/horaedb/horaedb/v2.1.0/apache-horaedb-incubating-v2.1.0-src.tar.gz.asc)[checksums](https://downloads.apache.org/incubator/horaedb/horaedb/v2.1.0/apache-horaedb-incubating-v2.1.0-src.tar.gz.sha512) 验证此版本。

## Docker 镜像

Expand Down Expand Up @@ -48,7 +48,7 @@ apache-horaedb-incubating-v2.0.0-src.tar.gz: OK

## 验证 Signatures

验证 PGP Signatures,用户需要下载 [release KEYS](https://downloads.apache.org/incubator/horaedb/KEYS) 文件。
验证 PGP Signatures,用户需要下载发布用的公钥 [KEYS](https://downloads.apache.org/incubator/horaedb/KEYS) 文件。

导入下载的 KEYS 文件:

Expand Down
68 changes: 68 additions & 0 deletions content/en/blog/2024/release-2.1.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
title: Release 2.1.0
date: 2024-11-18
tags: release
---

The Apache HoraeDB(incubating) team are pleased to announce that v2.1.0 is released, which has closed over 60 issues, including two major features:

## 1. New WAL implementation based on local disk.

In previous version, there is a RocksDB-based WAL. Although it works well in most cases, it has following issues:

- Compiling from source can be a challenging task, especially since RocksDB is primarily written in C++.
- For WAL, RocksDB can be somewhat overkill. If you are not familiar with RocksDB, tuning it can be very challenging.

With this new WAL, the above two problems are solved very well, and in performance test, the new WAL slightly outperforms the previous implementation, giving a solid foundation for future optimizations.

![Comparison of Write throughout](/images/local-wal-write.png)
![Comparison of Replay time](/images/local-wal-replay.png)

Interested readers can refer to the design documentation [here]({{< ref "wal_on_disk" >}}) for more details on this feature.

### How to enable

```
[analytic.wal]
type = "Local"
data_dir = "/path/to/local/wal"
```

## 2. Access object store with [Apache OpenDAL](https://github.com/apache/opendal)

OpenDAL (Open Data Access Layer) is a project that provides a unified API for accessing various data storage backends.
It offers several advantages for developers and organizations. Here are some key benefits:

- Unified API. OpenDAL provides a consistent and unified API for accessing different storage backends, such as AWS S3, Azure Blob Storage, and local file systems.
- Optimized for Efficiency: OpenDAL is built with performance in mind. It includes optimizations to ensure efficient data access and manipulation, making it suitable for high-performance applications.
- Comprehensive Documentation: The project provides detailed documentation, making it easier for developers to get started and understand how to use the library effectively.

In newer versions of OpenDAL, [object_store integration](https://github.com/apache/opendal/tree/main/integrations/object_store) is provided, which is very beneficial for HoraeDB code migration, as the APIs used by the upper layers remain virtually unchanged, and only the object store part needs to be abstracted to a unified OpenDAL operator:

```rust
// Create a new operator
let operator = Operator::new(S3::default())?.finish();

// Create a new object store
let object_store = Arc::new(OpendalStore::new(operator));
```

Additionally, since the Apache OpenDAL implementation of `object_store` is based on the latest version of the object_store, which has breaking changes from the previous version that HoraeDB is using, we've chosen to make it compatible in order to keep the scope of this upgrade as manageable as possible.

In the process of adapting to the new API, the `put_multipart` interface has changed the most, so the main adaptation logic is also here, HoraeDB's approach is to encapsulate the underlying `put_multipart` interface to ensure that the upper layer code is not modified, the details can be found in the reference:

https://github.com/apache/horaedb/blob/v2.1.0/src/components/object_store/src/multi_part.rs

> Note: The adaptation logic is only practical when parquet version < 52.0.0.
## Download

Go to [download pages](/downloads).

## Conclusion

Other bug fixes and improvements can be seen here:

- https://github.com/apache/horaedb/releases/tag/v2.1.0

> As always, we warmly welcome you to join our [community](/community) and share your insights.
8 changes: 4 additions & 4 deletions content/en/docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@ DROP TABLE `demo`

## Using the SDKs

See [sdk](./sdk/README.md)
See [sdk]({{< ref "sdk" >}}).

## Next Step

Congrats, you have finished this tutorial. For more information about HoraeDB, see the following:

- [SQL Syntax](sql/README.md)
- [Deployment](cluster_deployment/README.md)
- [Operation](operation/README.md)
- [SQL Syntax]({{< ref "sql" >}})
- [Deployment]({{< ref "cluster_deployment" >}})
- [Operation]({{< ref "operation" >}})
4 changes: 2 additions & 2 deletions content/en/downloads.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ Apache HoraeDB is released as source code tarballs with corresponding docker ima

# The latest release

The latest release is 2.0.0(2024-05-23), the source code can be downloaded [here](https://downloads.apache.org/incubator/horaedb/horaedb/v2.0.0/apache-horaedb-incubating-v2.0.0-src.tar.gz).
The latest release is 2.1.0(2024-11-18), the source code can be downloaded [here](https://downloads.apache.org/incubator/horaedb/horaedb/v2.1.0/apache-horaedb-incubating-v2.1.0-src.tar.gz).

Verify this release using the [signatures](https://downloads.apache.org/incubator/horaedb/horaedb/v2.0.0/apache-horaedb-incubating-v2.0.0-src.tar.gz.asc), [checksums](https://downloads.apache.org/incubator/horaedb/horaedb/v2.0.0/apache-horaedb-incubating-v2.0.0-src.tar.gz.sha512) by following guides below.
Verify this release using the [signatures](https://downloads.apache.org/incubator/horaedb/horaedb/v2.1.0/apache-horaedb-incubating-v2.1.0-src.tar.gz.asc), [checksums](https://downloads.apache.org/incubator/horaedb/horaedb/v2.1.0/apache-horaedb-incubating-v2.1.0-src.tar.gz.sha512) by following guides below.

## Docker images

Expand Down
14 changes: 14 additions & 0 deletions layouts/_default/_markup/render-image.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<figure>
<img src="{{ .Destination | safeURL }}"
alt="{{ .Text | plainify }}"
{{ with .Title}}
title="{{ . | plainify }}"
{{ end }}
loading="lazy" />

{{ if .Title }}
<figcaption><center>{{ .Title | safeHTML }}</center></figcaption>
{{ else if .Text }}
<figcaption><center>{{ .Text | safeHTML }}</center></figcaption>
{{ end }}
</figure>
Binary file added static/images/local-wal-replay.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/local-wal-write.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 056434a

Please sign in to comment.