<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>

          外存高性能 NoSQL 數(shù)據(jù)庫

          聯(lián)合創(chuàng)作 · 2023-10-01 01:23

          1.什么是外存

          Exist 外存本質(zhì)上是一個(gè)內(nèi)存級(jí)別的nosql。 它提出了“面向變量”的數(shù)據(jù)訪問思想,讓用戶只見變量,不見接口,省去了繁瑣的接口調(diào)用。

          以此實(shí)現(xiàn)了邏輯與數(shù)據(jù)分離的效果,一份單結(jié)點(diǎn)代碼自動(dòng)達(dá)到分布式效果。

          目前提供了int8、uint8、uint64、float、double等基礎(chǔ)類型變量的操作,后續(xù)將實(shí)現(xiàn)map vector類型變量操作。

          2.應(yīng)用場(chǎng)景對(duì)比

          來看看面向變量的接口方式比傳統(tǒng)數(shù)據(jù)接口方式要方便多少

          場(chǎng)景1:假設(shè)服務(wù)上有3個(gè)邏輯:用戶登錄時(shí),用戶發(fā)表文章,用戶發(fā)表評(píng)論時(shí),要提升用戶等級(jí) 。

          申明數(shù)據(jù)庫連接 db;
          db.connect();
          OnLogin()
          {
              申明變量 level
              get(表名,"level", level);
              level++;
              set(表名,"level", level);
          }
          OnSend()
          {
              申明變量 level
              get(表名,"level", level);
              level++
              set(表名,"level", level);
          }
          OnReply()
          {
              申明變量 level
              get(表名,"level", level);
              level++
              set(表名,"level", level);
          }
          
          面向變量的訪問方式
          
          Exist::int32 m_var("level");//申明變量
          OnLogin()
          {
              var++;//數(shù)據(jù)已經(jīng)在外存服務(wù)器上修改,下次訪問將在新值基礎(chǔ)上
          }
          OnSend()
          {
              var++;//數(shù)據(jù)已經(jīng)在外存服務(wù)器上修改,下次訪問將在新值基礎(chǔ)上
          }
          OnReply()
          {
              var++;//數(shù)據(jù)已經(jīng)在外存服務(wù)器上修改,下次訪問將在新值基礎(chǔ)上
          }

          就這么簡(jiǎn)單,用戶直接看到一個(gè)個(gè)的變量,就像操作內(nèi)存上的變量一樣操作數(shù)據(jù),根本不需要任何接口,外存由此得名

          場(chǎng)景2:100萬用戶同時(shí)在線:用戶A要查詢用戶B的資料

          • 傳統(tǒng)接口方式

          m_otherNode;//其它結(jié)點(diǎn)/中轉(zhuǎn)定位服務(wù)
          std::map<...> m_userList;//已經(jīng)登錄當(dāng)前結(jié)點(diǎn)的用戶的列表
          OnFindUser( char *username )
          {
                  map::iterater it = m_userList.find(username);
                  if ( it == m_userList.end() )//用戶未必再當(dāng)前結(jié)點(diǎn)登錄,
                  {
                          m_otherNode.Send("查詢用戶數(shù)據(jù)");//到其它結(jié)點(diǎn),或其它定位服務(wù)中專查詢
                          m_otherNode.Recv();
                          if (回應(yīng)用戶不存在) 
                          {
                                  回應(yīng)用戶不存在;
                                  return;
                          }
                  }
                  回應(yīng)用戶信息
                  return;
          };

          面向變量接口方式

          Exist::map<...> m_userList;//已經(jīng)登錄的用戶的列表,用戶信息在外存上
          OnFindUser( char *username )
          {
                  map::iterater it = m_userList.find(username);
                  if ( it == m_userList.end() )//用戶要么在外存中,要么不存在
                  {
                          回應(yīng),用戶不存在;
                          return;
                  }
                  回應(yīng)用戶信息;
                  return;
          };

          省去了到其它結(jié)點(diǎn)查詢的代碼,省去了記錄相關(guān)服務(wù)的連接對(duì)象,一套代碼同時(shí)滿足單結(jié)點(diǎn)與分布式需求,從此沒有分布式一說
          map與vector尚未實(shí)現(xiàn),將在后續(xù)版本中實(shí)現(xiàn),請(qǐng)期待

          支持平臺(tái):win linux
          性能:?jiǎn)蝹€(gè)client測(cè)試,win 5000~6000tps,linux 最高達(dá)到3.7萬tps
          支持編譯:VC++6.0和VS2010,VS2010以下用戶可以從 VC6.0工程轉(zhuǎn)換,linux直接make

          歡迎各路朋友一起體驗(yàn)嘗鮮

          瀏覽 44
          點(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>
                  国产精品色呦呦 | 日本精品视频一区二区 | 亚洲无码高清在线观看 | 国产豆花视频在 | 操逼美女视频 |