<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Engula云原生存儲(chǔ)引擎

          聯(lián)合創(chuàng)作 · 2023-09-27 11:47

          Engula 是一款全新的存儲(chǔ)引擎,旨在幫助工程師們更加從容地構(gòu)建可靠、高性價(jià)比的數(shù)據(jù)庫。設(shè)計(jì)目標(biāo)如下:

          • 云原生,把存儲(chǔ)引擎的計(jì)算、緩存、日志和文件等組件分離,使得各個(gè)組件能夠按需使用云上的彈性資源

          • 智能化,根據(jù)業(yè)務(wù)負(fù)載對(duì)底層的存儲(chǔ)結(jié)構(gòu)進(jìn)行自我優(yōu)化

          • 可擴(kuò)展,提供靈活的 API 讓用戶更加方便地實(shí)現(xiàn)自己的業(yè)務(wù)邏輯

          • 平臺(tái)中立,支持靈活的部署方式,在物理機(jī)、私有云和公有云環(huán)境都能很好的運(yùn)行

          Engula 是用于下一代數(shù)據(jù)基礎(chǔ)架構(gòu)的云原生存儲(chǔ)引擎。旨在以最低的成本在云平臺(tái)上提供可靠和高性能的服務(wù)。云平臺(tái)提供可以按需配置的彈性資源,這為重新構(gòu)建存儲(chǔ)引擎以利用它提供了廣泛的機(jī)會(huì)。為了實(shí)現(xiàn)這一目標(biāo),Engula 從頭開始??設(shè)計(jì),以充分利用這些平臺(tái)上的彈性資源。

          Engula 將經(jīng)典存儲(chǔ)引擎的組件拆分為單一功能單元。例如,有些單元負(fù)責(zé)數(shù)據(jù)存儲(chǔ),有些單元負(fù)責(zé)命令執(zhí)行。每個(gè)單元都是一個(gè)輕量級(jí)的容器,運(yùn)行在一個(gè)節(jié)點(diǎn)上,并在該節(jié)點(diǎn)上擁有一定數(shù)量的資源。節(jié)點(diǎn)由運(yùn)行平臺(tái)提供,構(gòu)成統(tǒng)一的資源池為單元提供服務(wù)。也就是說,Engula 可以看作是一個(gè)整體提供存儲(chǔ)服務(wù)的單元編排系統(tǒng)。

          Engula的設(shè)計(jì)原則如下:

          • 首先使其簡(jiǎn)單可靠,然后使其具有成本效益和高性能。
          • 使其足夠智能,只需最少的操作和配置。
          • 避免平臺(tái)未內(nèi)置的外部依賴項(xiàng)。

          目前 Engula 還處于非常早期的階段;可查看路線圖以了解更多詳情。

          use std::sync::Arc;
          
          use engula::{
              Database, FileSystem, JobRuntime, LocalFileSystem, LocalJobRuntime, LocalJournal, LocalStorage,
              Options, StorageOptions,
          };
          
          #[tokio::main]
          async fn main() -> Result<(), Box<dyn std::error::Error>> {
              let options = Options {
                  memtable_size: 1024,
              };
              let storage_options = StorageOptions::default();
              let dirname = "/tmp/engula";
              let fs = LocalFileSystem::new(dirname)?;
              let fs: Arc<Box<dyn FileSystem>> = Arc::new(Box::new(fs));
              let job = LocalJobRuntime::new(fs.clone());
              let job: Arc<Box<dyn JobRuntime>> = Arc::new(Box::new(job));
              let storage = LocalStorage::new(storage_options, fs, job)?;
              let journal = LocalJournal::new(dirname, false)?;
              let db = Database::new(options, Box::new(journal), Box::new(storage)).await;
              for i in 0..1024u64 {
                  let v = i.to_be_bytes().to_vec();
                  db.put(v.clone(), v.clone()).await?;
                  let got = db.get(&v).await?;
                  assert_eq!(got, Some(v.clone()));
              }
              Ok(())
          }
          瀏覽 20
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲福利网| 青青草黄色视屏 | 北条麻妃成人网站 | 99最新在线视频 | 大香视频99 |