| <!doctype html><html itemscope itemtype=http://schema.org/WebPage lang=cn class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>2.1.0 版本发布 | Apache HoraeDB</title> |
| <meta name=description content="Apache HoraeDB(孵化中)团队很高兴地宣布,v2.1.0 版本已于 2024-11-18 发布,这个版本解决了 60 多个问题,并且包括两个主要功能: |
| 1. 引入基于本地磁盘的新 WAL 实现 在之前的版本中,有一个基于 RocksDB 的 WAL。虽然它在大多数情况下运行良好,但存在以下问题: |
| 从源代码编译可能是一项具有挑战性的任务,尤其是因为 RocksDB 主要是用 C++ 编写的。 对于 WAL 而言,RocksDB 可能有些矫枉过正。如果你对 RocksDB 不熟悉,那么对它进行调整可能会非常具有挑战性。 通过这个新的 WAL,就很好的解决了上面两个问题,而且在性能测试结果,新 WAL 的表现略优于之前的实现,给以后的优化打下了结实的基础。 |
| 写入速率对比 回放速率对比 感兴趣的朋友可以参考这里的设计文档了解更多这个特性的细节。 |
| 2. 使用 Apache OpenDAL 访问对象存储 Apache OpenDAL 是一个为访问各种数据存储后端提供统一 API 的项目。以下是一些主要优势: |
| 统一的 API:OpenDAL 为访问 AWS S3、Azure Blob Storage 和本地文件系统等不同存储后端提供了一致、统一的 API。 优化效率:OpenDAL 在构建时就考虑到了性能。它包括确保高效数据访问和操作的优化功能,使其适用于高性能应用程序。 全面的文档:该项目提供了详细的文档,使开发人员更容易上手并了解如何有效地使用该库。 在较新版本的 OpenDAL 中,提供了 object_store 的集成,这非常有利于 HoraeDB 的代码迁移,上层使用的 API 几乎没有发生变化,只需要将对象存储抽象为统一的 OpenDAL operator: |
| 1 2 3 4 5 // 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 接口发生了变化,为了保证本次升级范围尽量可控,我们选择对其进行兼容。"><meta property="og:url" content="https://horaedb.apache.org/cn/blog/2024/release-2.1.0/"><meta property="og:site_name" content="Apache HoraeDB"><meta property="og:title" content="2.1.0 版本发布"><meta property="og:description" content="Apache HoraeDB(孵化中)团队很高兴地宣布,v2.1.0 版本已于 2024-11-18 发布,这个版本解决了 60 多个问题,并且包括两个主要功能: |
| 1. 引入基于本地磁盘的新 WAL 实现 在之前的版本中,有一个基于 RocksDB 的 WAL。虽然它在大多数情况下运行良好,但存在以下问题: |
| 从源代码编译可能是一项具有挑战性的任务,尤其是因为 RocksDB 主要是用 C++ 编写的。 对于 WAL 而言,RocksDB 可能有些矫枉过正。如果你对 RocksDB 不熟悉,那么对它进行调整可能会非常具有挑战性。 通过这个新的 WAL,就很好的解决了上面两个问题,而且在性能测试结果,新 WAL 的表现略优于之前的实现,给以后的优化打下了结实的基础。 |
| 写入速率对比 回放速率对比 感兴趣的朋友可以参考这里的设计文档了解更多这个特性的细节。 |
| 2. 使用 Apache OpenDAL 访问对象存储 Apache OpenDAL 是一个为访问各种数据存储后端提供统一 API 的项目。以下是一些主要优势: |
| 统一的 API:OpenDAL 为访问 AWS S3、Azure Blob Storage 和本地文件系统等不同存储后端提供了一致、统一的 API。 优化效率:OpenDAL 在构建时就考虑到了性能。它包括确保高效数据访问和操作的优化功能,使其适用于高性能应用程序。 全面的文档:该项目提供了详细的文档,使开发人员更容易上手并了解如何有效地使用该库。 在较新版本的 OpenDAL 中,提供了 object_store 的集成,这非常有利于 HoraeDB 的代码迁移,上层使用的 API 几乎没有发生变化,只需要将对象存储抽象为统一的 OpenDAL operator: |
| 1 2 3 4 5 // 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 接口发生了变化,为了保证本次升级范围尽量可控,我们选择对其进行兼容。"><meta property="og:locale" content="cn"><meta property="og:type" content="article"><meta property="article:section" content="blog"><meta property="article:published_time" content="2024-11-18T00:00:00+00:00"><meta property="article:modified_time" content="2024-12-05T17:37:31+08:00"><meta property="article:tag" content="Release"><meta itemprop=name content="2.1.0 版本发布"><meta itemprop=description content="Apache HoraeDB(孵化中)团队很高兴地宣布,v2.1.0 版本已于 2024-11-18 发布,这个版本解决了 60 多个问题,并且包括两个主要功能: |
| 1. 引入基于本地磁盘的新 WAL 实现 在之前的版本中,有一个基于 RocksDB 的 WAL。虽然它在大多数情况下运行良好,但存在以下问题: |
| 从源代码编译可能是一项具有挑战性的任务,尤其是因为 RocksDB 主要是用 C++ 编写的。 对于 WAL 而言,RocksDB 可能有些矫枉过正。如果你对 RocksDB 不熟悉,那么对它进行调整可能会非常具有挑战性。 通过这个新的 WAL,就很好的解决了上面两个问题,而且在性能测试结果,新 WAL 的表现略优于之前的实现,给以后的优化打下了结实的基础。 |
| 写入速率对比 回放速率对比 感兴趣的朋友可以参考这里的设计文档了解更多这个特性的细节。 |
| 2. 使用 Apache OpenDAL 访问对象存储 Apache OpenDAL 是一个为访问各种数据存储后端提供统一 API 的项目。以下是一些主要优势: |
| 统一的 API:OpenDAL 为访问 AWS S3、Azure Blob Storage 和本地文件系统等不同存储后端提供了一致、统一的 API。 优化效率:OpenDAL 在构建时就考虑到了性能。它包括确保高效数据访问和操作的优化功能,使其适用于高性能应用程序。 全面的文档:该项目提供了详细的文档,使开发人员更容易上手并了解如何有效地使用该库。 在较新版本的 OpenDAL 中,提供了 object_store 的集成,这非常有利于 HoraeDB 的代码迁移,上层使用的 API 几乎没有发生变化,只需要将对象存储抽象为统一的 OpenDAL operator: |
| 1 2 3 4 5 // 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 接口发生了变化,为了保证本次升级范围尽量可控,我们选择对其进行兼容。"><meta itemprop=datePublished content="2024-11-18T00:00:00+00:00"><meta itemprop=dateModified content="2024-12-05T17:37:31+08:00"><meta itemprop=wordCount content="125"><meta itemprop=keywords content="Release"><meta name=twitter:card content="summary"><meta name=twitter:title content="2.1.0 版本发布"><meta name=twitter:description content="Apache HoraeDB(孵化中)团队很高兴地宣布,v2.1.0 版本已于 2024-11-18 发布,这个版本解决了 60 多个问题,并且包括两个主要功能: |
| 1. 引入基于本地磁盘的新 WAL 实现 在之前的版本中,有一个基于 RocksDB 的 WAL。虽然它在大多数情况下运行良好,但存在以下问题: |
| 从源代码编译可能是一项具有挑战性的任务,尤其是因为 RocksDB 主要是用 C++ 编写的。 对于 WAL 而言,RocksDB 可能有些矫枉过正。如果你对 RocksDB 不熟悉,那么对它进行调整可能会非常具有挑战性。 通过这个新的 WAL,就很好的解决了上面两个问题,而且在性能测试结果,新 WAL 的表现略优于之前的实现,给以后的优化打下了结实的基础。 |
| 写入速率对比 回放速率对比 感兴趣的朋友可以参考这里的设计文档了解更多这个特性的细节。 |
| 2. 使用 Apache OpenDAL 访问对象存储 Apache OpenDAL 是一个为访问各种数据存储后端提供统一 API 的项目。以下是一些主要优势: |
| 统一的 API:OpenDAL 为访问 AWS S3、Azure Blob Storage 和本地文件系统等不同存储后端提供了一致、统一的 API。 优化效率:OpenDAL 在构建时就考虑到了性能。它包括确保高效数据访问和操作的优化功能,使其适用于高性能应用程序。 全面的文档:该项目提供了详细的文档,使开发人员更容易上手并了解如何有效地使用该库。 在较新版本的 OpenDAL 中,提供了 object_store 的集成,这非常有利于 HoraeDB 的代码迁移,上层使用的 API 几乎没有发生变化,只需要将对象存储抽象为统一的 OpenDAL operator: |
| 1 2 3 4 5 // 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 接口发生了变化,为了保证本次升级范围尽量可控,我们选择对其进行兼容。"><link rel=preload href=/scss/main.min.5e43f8574351718e9b44966c9f3a571202ed048c082f457fb574c10b1a1bc56c.css as=style integrity="sha256-XkP4V0NRcY6bRJZsnzpXEgLtBIwIL0V/tXTBCxobxWw=" crossorigin=anonymous><link href=/scss/main.min.5e43f8574351718e9b44966c9f3a571202ed048c082f457fb574c10b1a1bc56c.css rel=stylesheet integrity="sha256-XkP4V0NRcY6bRJZsnzpXEgLtBIwIL0V/tXTBCxobxWw=" crossorigin=anonymous><script src=https://code.jquery.com/jquery-3.7.1.min.js integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin=anonymous></script><script defer src=https://unpkg.com/lunr@2.3.9/lunr.min.js integrity=sha384-203J0SNzyqHby3iU6hzvzltrWi/M41wOP5Gu+BiJMz5nwKykbkUx8Kp7iti0Lpli crossorigin=anonymous></script></head><body class="td-page td-blog"><header><nav class="td-navbar js-navbar-scroll" data-bs-theme=dark><div class="container-fluid flex-column flex-md-row"><a class=navbar-brand href=/cn/><span class="navbar-brand__logo navbar-logo"></span><span class=navbar-brand__name>Apache HoraeDB</span></a><div class="td-navbar-nav-scroll ms-md-auto" id=main_navbar><ul class=navbar-nav><li class=nav-item><a class=nav-link href=/cn/docs/><i class='fa-solid fa-book'></i><span>文档</span></a></li><li class=nav-item><a class=nav-link href=/cn/downloads/><i class='fa-solid fa-download'></i><span>下载</span></a></li><li class=nav-item><a class="nav-link active" href=/cn/blog/><i class='fa-brands fa-blogger'></i><span>博客</span></a></li><li class="nav-item dropdown d-none d-lg-block"><div class=dropdown><a class="nav-link dropdown-toggle" href=# role=button data-bs-toggle=dropdown aria-haspopup=true aria-expanded=false>中文</a><ul class=dropdown-menu><li><a class=dropdown-item href=/blog/2024/release-2.1.0/>English</a></li></ul></div></li><li class="td-light-dark-menu nav-item dropdown"><svg class="d-none"><symbol id="check2" viewBox="0 0 16 16"><path d="M13.854 3.646a.5.5.0 010 .708l-7 7a.5.5.0 01-.708.0l-3.5-3.5a.5.5.0 11.708-.708L6.5 10.293l6.646-6.647a.5.5.0 01.708.0z"/></symbol><symbol id="circle-half" viewBox="0 0 16 16"><path d="M8 15A7 7 0 108 1v14zm0 1A8 8 0 118 0a8 8 0 010 16z"/></symbol><symbol id="moon-stars-fill" viewBox="0 0 16 16"><path d="M6 .278a.768.768.0 01.08.858 7.208 7.208.0 00-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527.0 1.04-.055 1.533-.16a.787.787.0 01.81.316.733.733.0 01-.031.893A8.349 8.349.0 018.344 16C3.734 16 0 12.286.0 7.71.0 4.266 2.114 1.312 5.124.06A.752.752.0 016 .278z"/><path d="M10.794 3.148a.217.217.0 01.412.0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217.0 010 .412l-1.162.387A1.734 1.734.0 0011.593 7.69l-.387 1.162a.217.217.0 01-.412.0l-.387-1.162A1.734 1.734.0 009.31 6.593l-1.162-.387a.217.217.0 010-.412l1.162-.387a1.734 1.734.0 001.097-1.097l.387-1.162zM13.863.099a.145.145.0 01.274.0l.258.774c.115.346.386.617.732.732l.774.258a.145.145.0 010 .274l-.774.258a1.156 1.156.0 00-.732.732l-.258.774a.145.145.0 01-.274.0l-.258-.774a1.156 1.156.0 00-.732-.732l-.774-.258a.145.145.0 010-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z"/></symbol><symbol id="sun-fill" viewBox="0 0 16 16"><path d="M8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.5.5.0 01.5.5v2a.5.5.0 01-1 0v-2A.5.5.0 018 0zm0 13a.5.5.0 01.5.5v2a.5.5.0 01-1 0v-2A.5.5.0 018 13zm8-5a.5.5.0 01-.5.5h-2a.5.5.0 010-1h2a.5.5.0 01.5.5zM3 8a.5.5.0 01-.5.5h-2a.5.5.0 010-1h2A.5.5.0 013 8zm10.657-5.657a.5.5.0 010 .707l-1.414 1.415a.5.5.0 11-.707-.708l1.414-1.414a.5.5.0 01.707.0zm-9.193 9.193a.5.5.0 010 .707L3.05 13.657a.5.5.0 01-.707-.707l1.414-1.414a.5.5.0 01.707.0zm9.193 2.121a.5.5.0 01-.707.0l-1.414-1.414a.5.5.0 01.707-.707l1.414 1.414a.5.5.0 010 .707zM4.464 4.465a.5.5.0 01-.707.0L2.343 3.05a.5.5.0 11.707-.707l1.414 1.414a.5.5.0 010 .708z"/></symbol></svg> |
| <button class="btn btn-link nav-link dropdown-toggle d-flex align-items-center" id=bd-theme type=button aria-expanded=false data-bs-toggle=dropdown data-bs-display=static aria-label="Toggle theme (auto)"><svg class="bi my-1 theme-icon-active"><use href="#circle-half"/></svg></button><ul class="dropdown-menu dropdown-menu-end" aria-labelledby=bd-theme-text><li><button type=button class="dropdown-item d-flex align-items-center" data-bs-theme-value=light aria-pressed=false> |
| <svg class="bi me-2 opacity-50"><use href="#sun-fill"/></svg> |
| Light<svg class="bi ms-auto d-none"><use href="#check2"/></svg></button></li><li><button type=button class="dropdown-item d-flex align-items-center" data-bs-theme-value=dark aria-pressed=false> |
| <svg class="bi me-2 opacity-50"><use href="#moon-stars-fill"/></svg> |
| Dark<svg class="bi ms-auto d-none"><use href="#check2"/></svg></button></li><li><button type=button class="dropdown-item d-flex align-items-center active" data-bs-theme-value=auto aria-pressed=true> |
| <svg class="bi me-2 opacity-50"><use href="#circle-half"/></svg> |
| Auto<svg class="bi ms-auto d-none"><use href="#check2"/></svg></button></li></ul></li></ul></div><div class="d-none d-lg-block"><div class="td-search td-search--offline"><div class=td-search__icon></div><input type=search class="td-search__input form-control" placeholder="Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.50067a676aae922ae836785e3626a1aa.json data-offline-search-base-href=/ data-offline-search-max-results=10></div></div></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><aside class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"><div id=td-sidebar-menu class=td-sidebar__inner><form class="td-sidebar__search d-flex align-items-center"><div class="td-search td-search--offline"><div class=td-search__icon></div><input type=search class="td-search__input form-control" placeholder="Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.50067a676aae922ae836785e3626a1aa.json data-offline-search-base-href=/ data-offline-search-max-results=10></div><button class="btn btn-link td-sidebar__toggle d-md-none p-0 ms-3 fas fa-bars" type=button data-bs-toggle=collapse data-bs-target=#td-section-nav aria-controls=td-section-nav aria-expanded=false aria-label="Toggle section navigation"></button></form><nav class="td-sidebar-nav collapse foldable-nav" id=td-section-nav><div class="td-sidebar-nav__section nav-item dropdown d-block d-lg-none"><div class=dropdown><a class="nav-link dropdown-toggle" href=# role=button data-bs-toggle=dropdown aria-haspopup=true aria-expanded=false>中文</a><ul class=dropdown-menu><li><a class=dropdown-item href=/blog/2024/release-2.1.0/>English</a></li></ul></div></div><ul class="td-sidebar-nav__section pe-md-3 ul-0"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id=m-cnblog-li><a href=/cn/blog/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section tree-root" id=m-cnblog><span>博客</span></a><ul class=ul-1><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024ospp-li><input type=checkbox id=m-cnblog2024ospp-check> |
| <label for=m-cnblog2024ospp-check><a href=/cn/blog/2024/ospp/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024ospp><span>2024 开源之夏结束,HoraeDB 参与同学获得最具潜力奖!</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024new-committer-neochen-li><input type=checkbox id=m-cnblog2024new-committer-neochen-check> |
| <label for=m-cnblog2024new-committer-neochen-check><a href=/cn/blog/2024/new-committer-neochen/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024new-committer-neochen><span>欢迎 Apache HoraeDB 新晋 Committer: Neo Chen</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024release-python-client-200-li><input type=checkbox id=m-cnblog2024release-python-client-200-check> |
| <label for=m-cnblog2024release-python-client-200-check><a href=/cn/blog/2024/release-python-client-2.0.0/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024release-python-client-200><span>HoraeDB Python 客户端 2.0.0 版本发布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024review-coc-na-li><input type=checkbox id=m-cnblog2024review-coc-na-check> |
| <label for=m-cnblog2024review-coc-na-check><a href=/cn/blog/2024/review-coc-na/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024review-coc-na><span>2024 年 ApacheCon 北美之旅的收获与感悟</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child active-path" id=m-cnblog2024release-210-li><input type=checkbox id=m-cnblog2024release-210-check checked> |
| <label for=m-cnblog2024release-210-check><a href=/cn/blog/2024/release-2.1.0/ class="align-left ps-0 active td-sidebar-link td-sidebar-link__page" id=m-cnblog2024release-210><span class=td-sidebar-nav-active-item>2.1.0 版本发布</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024ccf-bit-li><input type=checkbox id=m-cnblog2024ccf-bit-check> |
| <label for=m-cnblog2024ccf-bit-check><a href=/cn/blog/2024/ccf-bit/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024ccf-bit><span>Apache HoraeDB 与你相约北京理工大学</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024coc-na-li><input type=checkbox id=m-cnblog2024coc-na-check> |
| <label for=m-cnblog2024coc-na-check><a href=/cn/blog/2024/coc-na/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024coc-na><span>Apache HoraeDB 与你相约 Community Over Code 北美大会</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024new-committer-baojinri-li><input type=checkbox id=m-cnblog2024new-committer-baojinri-check> |
| <label for=m-cnblog2024new-committer-baojinri-check><a href=/cn/blog/2024/new-committer-baojinri/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024new-committer-baojinri><span>欢迎 Apache HoraeDB 新晋 Committer: 鲍金日</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-cnblog2024first-online-meeting-li><input type=checkbox id=m-cnblog2024first-online-meeting-check> |
| <label for=m-cnblog2024first-online-meeting-check><a href=/cn/blog/2024/first-online-meeting/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-cnblog2024first-online-meeting><span>预告:第一次线上会议</span></a></label></li></ul></li></ul></nav></div></aside><aside class="d-none d-xl-block col-xl-2 td-sidebar-toc d-print-none"><div class="td-page-meta ms-2 pb-1 pt-2 mb-0"><a href=https://github.com/apache/horaedb-docs/tree/main/content/cn/blog/2024/release-2.1.0.md class="td-page-meta--view td-page-meta__view" target=_blank rel=noopener><i class="fa-solid fa-file-lines fa-fw"></i> View page source</a> |
| <a href=https://github.com/apache/horaedb-docs/edit/main/content/cn/blog/2024/release-2.1.0.md class="td-page-meta--edit td-page-meta__edit" target=_blank rel=noopener><i class="fa-solid fa-pen-to-square fa-fw"></i> Edit this page</a> |
| <a href="https://github.com/apache/horaedb-docs/new/main/content/cn/blog/2024?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" class="td-page-meta--child td-page-meta__child" target=_blank rel=noopener><i class="fa-solid fa-pen-to-square fa-fw"></i> Create child page</a> |
| <a href="https://github.com/apache/horaedb-docs/issues/new?title=2.1.0%20%e7%89%88%e6%9c%ac%e5%8f%91%e5%b8%83" class="td-page-meta--issue td-page-meta__issue" target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Create documentation issue</a> |
| <a href=https://github.com/apache/horaedb/issues/new class="td-page-meta--project td-page-meta__project-issue" target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Create project issue</a> |
| <a id=print href=/cn/blog/_print/><i class="fa-solid fa-print fa-fw"></i> Print entire section</a></div><div class=td-toc><nav id=TableOfContents><ul><li><a href=#1-引入基于本地磁盘的新-wal-实现>1. 引入基于本地磁盘的新 WAL 实现</a></li><li><a href=#2-使用-apache-opendal-访问对象存储>2. 使用 Apache OpenDAL 访问对象存储</a></li><li><a href=#下载>下载</a></li><li><a href=#总结>总结</a></li></ul></nav></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://horaedb.apache.org/cn/tags/community/ data-taxonomy-term=community><span class=taxonomy-label>Community</span><span class=taxonomy-count>7</span></a></li><li><a class=taxonomy-term href=https://horaedb.apache.org/cn/tags/release/ data-taxonomy-term=release><span class=taxonomy-label>Release</span><span class=taxonomy-count>2</span></a></li></ul></div></aside><main class="col-12 col-md-9 col-xl-8 ps-md-5 pe-md-4" role=main><a class=td-rss-button title=RSS href=/cn/blog/index.xml target=_blank rel=noopener><i class="fa-solid fa-rss" aria-hidden=true></i></a><div class=td-content><h1>2.1.0 版本发布</h1><div class="td-byline mb-4"><time datetime=2024-11-18 class=text-body-secondary>2024-11-18</time></div><header class=article-meta><div class="taxonomy taxonomy-terms-article taxo-tags"><h5 class=taxonomy-title>Tags:</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://horaedb.apache.org/cn/tags/release/ data-taxonomy-term=release><span class=taxonomy-label>Release</span></a></li></ul></div></header><p>Apache HoraeDB(孵化中)团队很高兴地宣布,v2.1.0 版本已于 2024-11-18 发布,这个版本解决了 60 多个问题,并且包括两个主要功能:</p><h2 id=1-引入基于本地磁盘的新-wal-实现>1. 引入基于本地磁盘的新 WAL 实现</h2><p>在之前的版本中,有一个基于 RocksDB 的 WAL。虽然它在大多数情况下运行良好,但存在以下问题:</p><ul><li>从源代码编译可能是一项具有挑战性的任务,尤其是因为 RocksDB 主要是用 C++ 编写的。</li><li>对于 WAL 而言,RocksDB 可能有些矫枉过正。如果你对 RocksDB 不熟悉,那么对它进行调整可能会非常具有挑战性。</li></ul><p>通过这个新的 WAL,就很好的解决了上面两个问题,而且在性能测试结果,新 WAL 的表现略优于之前的实现,给以后的优化打下了结实的基础。</p><p><figure><img src=/images/local-wal-write.png alt=写入速率对比 loading=lazy><figcaption><center>写入速率对比</center></figcaption></figure><figure><img src=/images/local-wal-replay.png alt=回放速率对比 loading=lazy><figcaption><center>回放速率对比</center></figcaption></figure></p><p>感兴趣的朋友可以参考<a href=https://horaedb.apache.org/cn/docs/design/wal_on_disk/>这里的设计文档</a>了解更多这个特性的细节。</p><h2 id=2-使用-apache-opendal-访问对象存储>2. 使用 Apache OpenDAL 访问对象存储</h2><p>Apache OpenDAL 是一个为访问各种数据存储后端提供统一 API 的项目。以下是一些主要优势:</p><ul><li>统一的 API:OpenDAL 为访问 AWS S3、Azure Blob Storage 和本地文件系统等不同存储后端提供了一致、统一的 API。</li><li>优化效率:OpenDAL 在构建时就考虑到了性能。它包括确保高效数据访问和操作的优化功能,使其适用于高性能应用程序。</li><li>全面的文档:该项目提供了详细的文档,使开发人员更容易上手并了解如何有效地使用该库。</li></ul><p>在较新版本的 OpenDAL 中,提供了 <code>object_store</code> 的<a href=https://github.com/apache/opendal/tree/main/integrations/object_store>集成</a>,这非常有利于 HoraeDB 的代码迁移,上层使用的 API 几乎没有发生变化,只需要将对象存储抽象为统一的 OpenDAL operator:</p><div class=highlight><div style=-moz-tab-size:4;-o-tab-size:4;tab-size:4><table style=border-spacing:0;padding:0;margin:0;border:0><tr><td style=vertical-align:top;padding:0;margin:0;border:0><pre tabindex=0 style=-moz-tab-size:4;-o-tab-size:4;tab-size:4><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f">1 |
| </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f">2 |
| </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f">3 |
| </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f">4 |
| </span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f">5 |
| </span></code></pre></td><td style=vertical-align:top;padding:0;margin:0;border:0;width:100%><pre tabindex=0 style=-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-rust data-lang=rust><span style=display:flex><span><span style=color:#408080;font-style:italic>// Create a new operator |
| </span></span></span><span style=display:flex><span><span style=color:#408080;font-style:italic></span><span style=color:green;font-weight:700>let</span><span style=color:#bbb> </span>operator<span style=color:#bbb> </span><span style=color:#666>=</span><span style=color:#bbb> </span>Operator::new(S3::default())<span style=color:#666>?</span>.finish();<span style=color:#bbb> |
| </span></span></span><span style=display:flex><span><span style=color:#bbb> |
| </span></span></span><span style=display:flex><span><span style=color:#bbb></span><span style=color:#408080;font-style:italic>// Create a new object store |
| </span></span></span><span style=display:flex><span><span style=color:#408080;font-style:italic></span><span style=color:green;font-weight:700>let</span><span style=color:#bbb> </span>object_store<span style=color:#bbb> </span><span style=color:#666>=</span><span style=color:#bbb> </span>Arc::new(OpendalStore::new(operator));<span style=color:#bbb> |
| </span></span></span></code></pre></td></tr></table></div></div><p>此外,由于 Apache OpenDAL 实现的 <code>object_store</code> 是基于最新版本的,相较于 HoraeDB 之前使用的版本,<code>object_store</code> 接口发生了变化,为了保证本次升级范围尽量可控,我们选择对其进行兼容。</p><p>对新 API 适配的过程中, <code>put_multipart</code> 接口变化最大,因此主要的适配逻辑也在这里,HoraeDB 的做法是:对底层的 <code>put_multipart</code> 接口进行了封装,保证上层代码无修改,具体细节可参考:</p><ul><li><a href=https://github.com/apache/horaedb/blob/v2.1.0/src/components/object_store/src/multi_part.rs>https://github.com/apache/horaedb/blob/v2.1.0/src/components/object_store/src/multi_part.rs</a></li></ul><blockquote><p>说明:在 parquet 最新版本中,写入路径上对新 <code>put_multipart</code> 接口适配程度较高,若用户使用的 parquet 版本 >= 52.0.0,则无需进行适配,若是更老的版本,可参考 HoraeDB 的适配实现。</p></blockquote><h2 id=下载>下载</h2><p>见<a href=/cn/downloads/>下载页面</a>。</p><h2 id=总结>总结</h2><p>其他错误修复和改进请参见此处: |
| <a href=https://github.com/apache/horaedb/releases/tag/v2.1.0>https://github.com/apache/horaedb/releases/tag/v2.1.0</a></p><blockquote><p>我们一如既往地热忱欢迎您加入<a href=/community>我们的社区</a>,分享您的真知灼见。</p></blockquote><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/cn/blog/2024/ccf-bit/ aria-label="Previous - Apache HoraeDB 与你相约北京理工大学" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/cn/blog/2024/review-coc-na/ aria-label="Next - 2024 年 ApacheCon 北美之旅的收获与感悟" class="btn btn-primary">Next<span class=ms-1>→</span></a></li></ul><div class=td-page-meta__lastmod>Last modified December 5, 2024: <a href=https://github.com/apache/horaedb-docs/commit/49ee244f9b629f462c63c04674201eee91266108>blog: add review coc post (#161) (49ee244)</a></div></div></main></div></div><footer class="td-footer row d-print-none"><div class=container-fluid><div class="row mx-md-2"><div class=td-footer__center>Apache HoraeDB is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.<hr><span class=td-footer__copyright>© |
| 2023–2024 |
| <span class=td-footer__authors><p>The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p><p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.</p></span></span><span class=td-footer__all_rights_reserved>All Rights Reserved</span></div></div><hr><div class="row mx-md-2"><div class=td-footer__center><span class=td-footer__copyright>Found a bug in website? <a href=https://github.com/apache/horaedb-docs/issues/new>Open an issue</a> or <a href=https://github.com/apache/horaedb-docs/pulls>submit a pull request</a> on GitHub.</span></div></div><hr></div></footer></div><script src=/js/main.min.f72d00502781aaf278a14088eb2356b1ba2a05ad698a0c43fe86314d74ceab56.js integrity="sha256-9y0AUCeBqvJ4oUCI6yNWsboqBa1pigxD/oYxTXTOq1Y=" crossorigin=anonymous></script><script defer src=/js/click-to-copy.min.73478a7d4807698aed7e355eb23f9890ca18fea3158604c8471746d046702bad.js integrity="sha256-c0eKfUgHaYrtfjVesj+YkMoY/qMVhgTIRxdG0EZwK60=" crossorigin=anonymous></script><script src=/js/tabpane-persist.js></script></body></html> |