0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Rust的嵌入式符合ACID的鍵值數(shù)據(jù)庫

jf_wN0SrCdH ? 來源:Rust語言中文社區(qū) ? 2023-12-28 11:29 ? 次閱讀

surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的鍵值數(shù)據(jù)庫

surrealkv 是基于 Rust 中的版本化、low level、嵌入式鍵值數(shù)據(jù)庫。它持久保存到磁盤,符合 ACID,并支持多個讀取器和寫入器。

特性

內(nèi)存數(shù)據(jù)庫

可嵌入

ACID 語義,具有豐富的事務(wù)支持和回滾

內(nèi)置項(xiàng)目版本控制

多版本并發(fā)控制

多個并發(fā)讀取器和寫入器

持久的僅附加文件格式以實(shí)現(xiàn)持久性(支持 WAL)

rspack -- 基于 Rust 的高性能模塊打包工具

Rspack(讀音為 /'ɑresp?k/,)是一個基于 Rust 的高性能構(gòu)建引擎, 具備與 Webpack 生態(tài)系統(tǒng)的互操作性,可以被 Webpack 項(xiàng)目低成本集成,并提供更好的構(gòu)建性能。

初衷

作者寫道:創(chuàng)建 Rspack 的原因是要解決在 ByteDance 維護(hù)構(gòu)建工具時遇到的各種性能問題。由于 ByteDance 內(nèi)部存在許多巨石應(yīng)用,它們都具有復(fù)雜的構(gòu)建配置,生產(chǎn)環(huán)境構(gòu)建需要耗費(fèi)十幾分鐘,甚至超過半小時;開發(fā)環(huán)境的耗時也超過十幾分鐘。我們在 Webpack 上嘗試了多種方法來優(yōu)化這些巨石應(yīng)用,但是效果甚微。我們意識到在 Webpack 上的優(yōu)化已經(jīng)難以為繼,必須要從底層改造,才能適應(yīng)我們的需求。同時在聆聽解決業(yè)務(wù)各種復(fù)雜的構(gòu)建需求中,我們意識到開發(fā)人員對構(gòu)建工具有以下要求:

快速的 Dev 啟動性能。 npm run dev 是開發(fā)者每天需要運(yùn)行很多次的命令,但大型項(xiàng)目每次都需要等待 10 分鐘,這對于工程師來說非常痛苦,因此優(yōu)化開發(fā)模式下啟動的時間至關(guān)重要。

高效的 Build 性能。 npm run build 經(jīng)常在 CI/CD 環(huán)境中運(yùn)行,它決定了應(yīng)用生產(chǎn)交付的效率。有些應(yīng)用在生產(chǎn)環(huán)境中需要 20 到 30 分鐘的構(gòu)建時間,如果能縮短這段時間,對開發(fā)流程也將非常有幫助。

靈活的配置。 用戶工程的配置非常靈活,不夠統(tǒng)一。在之前的嘗試中,將 Webpack 配置遷移到其他構(gòu)建工具時,我們遇到了許多問題,因?yàn)槠渌麡?gòu)建工具的配置不如 Webpack 靈活。

生產(chǎn)環(huán)境的優(yōu)化能力。 在啟用 Rspack 之前,我們嘗試了社區(qū)內(nèi)的各種方案,但它們都面臨著一定程度的生產(chǎn)環(huán)境負(fù)優(yōu)化,例如拆分包不夠精細(xì)等。因此,優(yōu)化生產(chǎn)環(huán)境的產(chǎn)物是我們不可放棄的功能。

在確定了這四個需求后,我們調(diào)查了社區(qū)中的所有技術(shù)方案,它們通常都能很好的滿足其中個別需求,但沒有一個方案能同時滿足所有條件。因此,我們決定自研 Rspack。

Rspack 目前的狀態(tài)

到 2023 年 3 月為止 Rspack 已經(jīng)開發(fā)了 11 個月,雖然 Rspack 仍處于比較早期的狀態(tài),且缺失了一些 webpack 的功能,但根據(jù)二八原則,目前的功能已經(jīng)能夠滿足大多數(shù)項(xiàng)目的需求。同時,我們已經(jīng)在內(nèi)部的多個業(yè)務(wù)上完成了落地,取得了 5~10 倍編譯性能的提升。目前的性能仍然存在較大提升空間,我們會持續(xù)對 Rspack 進(jìn)行更深入的性能優(yōu)化。Rspack 已經(jīng)完成了對 webpack 主要配置的兼容,并且適配了 webpack 的 loader 架構(gòu)。目前,你已經(jīng)可以在 Rspack 中無縫使用你熟悉的各種 loader,如 babel-loader、less-loader、sass-loader、vue-loader 等等。

目前 Rspack 對緩存支持還比較簡單,僅支持了內(nèi)存級別的緩存,未來我們會建設(shè)更強(qiáng)的緩存能力,包括可遷移的持久化緩存,這將帶來更大的想象空間,如在 monorepo 里不同的機(jī)器上都可以復(fù)用 Rspack 的云端緩存,提升大型項(xiàng)目的緩存命中率。

特性

啟動速度極快: 基于 Rust 實(shí)現(xiàn),構(gòu)建速度極快,帶給你極致的開發(fā)體驗(yàn)。

閃電般的 HMR: 內(nèi)置增量編譯機(jī)制,HMR 速度極快,完全勝任大型項(xiàng)目的開發(fā)。

兼容 webpack 生態(tài): 針對 webpack 的架構(gòu)和生態(tài)進(jìn)行兼容,無需從頭搭建生態(tài)。

內(nèi)置常見構(gòu)建能力: 對 TypeScript、JSX、CSS、CSS Modules、Sass 等提供開箱即用的支持。

默認(rèn)生產(chǎn)優(yōu)化: 默認(rèn)內(nèi)置多種優(yōu)化策略,如 Tree Shaking、代碼壓縮等等。

框架無關(guān): 不和任何前端框架綁定,保證足夠的靈活性。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18816

    瀏覽量

    298475
  • 讀取器
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    5214
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    226

    瀏覽量

    6497

原文標(biāo)題:【Rust日報】2023-12-20 surrealkv -- 基于 Rust 的 嵌入式、符合 ACID 的鍵值數(shù)據(jù)庫

文章出處:【微信號:Rust語言中文社區(qū),微信公眾號:Rust語言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫出現(xiàn)823錯誤的數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)庫故障: SQL Server附加數(shù)據(jù)庫出現(xiàn)錯誤823,附加數(shù)據(jù)庫失敗。數(shù)據(jù)庫沒有備份,無法通過備份恢復(fù)數(shù)據(jù)庫。
    的頭像 發(fā)表于 09-20 11:46 ?85次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫</b>出現(xiàn)823錯誤的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    一種常用嵌入式開發(fā)代碼

    使用開源協(xié)議:GPL-2.0varch簡介varch(we-architecture,意為我們的框架)是嵌入式C語言常用代碼模塊,包含了嵌入式中常用的算法庫,
    的頭像 發(fā)表于 09-04 08:06 ?176次閱讀
    一種常用<b class='flag-5'>嵌入式</b>開發(fā)代碼<b class='flag-5'>庫</b>

    恒訊科技分析:云數(shù)據(jù)庫rds和redis區(qū)別是什么如何選擇?

    結(jié)構(gòu)化數(shù)據(jù),使用SQL作為查詢語言,支持ACID事務(wù)和多種復(fù)雜查詢操作。而Redis是一個基于內(nèi)存的非關(guān)系型數(shù)據(jù)庫,采用鍵值對模型存儲數(shù)據(jù),
    的頭像 發(fā)表于 08-19 15:31 ?158次閱讀

    嵌入式系統(tǒng)中集成Rust和Qt的實(shí)踐

    Rust 擁有豐富的生態(tài)系統(tǒng),用于序列化和反序列化、異步操作、解析不安全輸入、線程、靜態(tài)分析等,而 Qt 是一個 C++ 工具包,支持跨各種平臺的豐富的、基于 GUI 的應(yīng)用程序,從 iOS 到嵌入式Linux。Qt 應(yīng)用程序
    發(fā)表于 05-03 10:26 ?1344次閱讀
    在<b class='flag-5'>嵌入式</b>系統(tǒng)中集成<b class='flag-5'>Rust</b>和Qt的實(shí)踐

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)】Oracle數(shù)據(jù)庫ASM實(shí)例無法掛載的數(shù)據(jù)恢復(fù)案例

    oracle數(shù)據(jù)庫ASM磁盤組掉線,ASM實(shí)例不能掛載。數(shù)據(jù)庫管理員嘗試修復(fù)數(shù)據(jù)庫,但是沒有成功。
    的頭像 發(fā)表于 02-01 17:39 ?370次閱讀
    【<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)】Oracle<b class='flag-5'>數(shù)據(jù)庫</b>ASM實(shí)例無法掛載的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    輕量級數(shù)據(jù)庫有哪些類型

    輕量級數(shù)據(jù)庫是指具有小巧、靈活、高效的特點(diǎn),適用于小規(guī)模項(xiàng)目和嵌入式設(shè)備的數(shù)據(jù)庫管理系統(tǒng)。下面是對輕量級數(shù)據(jù)庫類型的詳細(xì)介紹,包括關(guān)系型數(shù)據(jù)庫
    的頭像 發(fā)表于 12-20 11:29 ?1015次閱讀

    關(guān)于JSON數(shù)據(jù)庫

    如何理解JSON數(shù)據(jù)庫?作為NoSQL數(shù)據(jù)庫的一種類型,JSON數(shù)據(jù)庫有哪些優(yōu)勢呢?JSON數(shù)據(jù)庫如何運(yùn)作,它為應(yīng)用程序開發(fā)者帶來了哪些價值呢?
    的頭像 發(fā)表于 12-06 13:46 ?710次閱讀
    關(guān)于JSON<b class='flag-5'>數(shù)據(jù)庫</b>

    redis是關(guān)系型數(shù)據(jù)庫

    Redis不是關(guān)系型數(shù)據(jù)庫,它是一種基于鍵值對的NoSQL數(shù)據(jù)庫。在本文中,我將對Redis進(jìn)行詳細(xì)介紹,包括其特點(diǎn)、用途、常見命令和應(yīng)用場景等。 Redis(REmote DIctionary
    的頭像 發(fā)表于 12-05 10:32 ?1225次閱讀

    什么是JSON數(shù)據(jù)庫

    如何理解JSON數(shù)據(jù)庫?作為NoSQL數(shù)據(jù)庫的一種類型,JSON數(shù)據(jù)庫有哪些優(yōu)勢呢?JSON數(shù)據(jù)庫如何運(yùn)作,它為應(yīng)用程序開發(fā)者帶來了哪些價值呢?文章速覽:什么是JSON什么是JSON
    的頭像 發(fā)表于 12-02 08:04 ?687次閱讀
    什么是JSON<b class='flag-5'>數(shù)據(jù)庫</b>

    NoSQL 數(shù)據(jù)庫如何選型

    什么是NoSQL數(shù)據(jù)庫?為什么要使用NoSQL數(shù)據(jù)庫?鍵值數(shù)據(jù)庫內(nèi)存鍵值數(shù)據(jù)庫文檔
    的頭像 發(fā)表于 11-26 08:05 ?357次閱讀
    NoSQL <b class='flag-5'>數(shù)據(jù)庫</b>如何選型

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫介紹和數(shù)據(jù)恢復(fù)案例

    MongoDB數(shù)據(jù)庫是文檔數(shù)據(jù)存儲,將文檔存儲在集合之中,不是像MySQL一樣的關(guān)系型數(shù)據(jù)庫
    的頭像 發(fā)表于 11-08 15:04 ?777次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)——MongoDB<b class='flag-5'>數(shù)據(jù)庫</b>介紹和<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    「飛凌嵌入式OK3568開發(fā)板試用 」sqlite性能測試

    SQLite簡介 SQLite是一個輕量級的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它是自包含的,即數(shù)據(jù)庫和所有必需的文件都包含在一個單獨(dú)的可執(zhí)行文件中。SQLite是一個嵌入式
    發(fā)表于 11-08 12:26

    如何在HarmonyOS對數(shù)據(jù)庫進(jìn)行備份,恢復(fù)與加密

    backup接口實(shí)現(xiàn)數(shù)據(jù)庫備份,通過restore接口實(shí)現(xiàn)數(shù)據(jù)庫恢復(fù),通過deletebackup接口刪除數(shù)據(jù)庫備份。具體接口及功能,可見??分布
    發(fā)表于 11-07 08:57

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)-oracle數(shù)據(jù)庫報錯無法打開的數(shù)據(jù)恢復(fù)案例

    oracle數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 一臺服務(wù)器,底層由12塊硬盤組成一組磁盤陣列,上層操作系統(tǒng)上運(yùn)行oracle數(shù)據(jù)庫。 oracle數(shù)據(jù)庫故障:
    的頭像 發(fā)表于 10-12 14:00 ?701次閱讀

    如何在Rust中連接和使用MySQL數(shù)據(jù)庫

    MySQL是一個廣泛使用的關(guān)系型數(shù)據(jù)庫,Rust作為一門相對較新的系統(tǒng)級編程語言,具有C語言般的高性能、安全、并發(fā)等特性,因此與MySQL一起使用是一種非常有趣的選擇。在本教程中,我們將手把手地展示
    的頭像 發(fā)表于 09-30 17:05 ?1403次閱讀