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

          MemDB分布式事務(wù)內(nèi)存數(shù)據(jù)庫(kù)

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

          MemDB 是全球首個(gè)支持分布式事務(wù)的 MongoDB。

          高性能和可伸縮

          • 快速的內(nèi)存數(shù)據(jù)訪問(wèn),高達(dá) 25,000 ops (single doc read/write) /碎片 (each shard take one CPU core).

          • 系統(tǒng)可水平伸縮

          • 沒(méi)有單點(diǎn)瓶頸

          真正的分布式 ACID 事務(wù)

          • 在分布式環(huán)境真正支持 ACID (Stands for Atomicity, Consistency, Isolation, Durability) 事務(wù)

          • MemDB 讓 MongoDB 支持 ACID 事務(wù)

          兼容 MongoDB 和 Mongoose

          • 直接使用 MongoDB 的查詢 API

          • 內(nèi)置 Mongoose 支持

          高可用性

          • 每個(gè)碎片都有一個(gè)或者多個(gè) slaves,不會(huì)發(fā)生單點(diǎn)故障

          MemDB shell:

          memdbshell.gif

          架構(gòu):

          architecture.png

          Mdbgoose:

          var memdb = require('memdb-client');
          var P = memdb.Promise;
          var mdbgoose = memdb.goose;
          // Define player schema
          var playerSchema = new mdbgoose.Schema({
              _id : String,
              name : String,
              areaId : Number,
              deviceType : Number,
              deviceId : String,
              items : [mdbgoose.SchemaTypes.Mixed],
          }, {collection : 'player'});
          // Define player model
          var Player = mdbgoose.model('player', playerSchema);
          var main = P.coroutine(function*(){
              // Connect to memdb
              yield mdbgoose.connectAsync({
                  shards : { // specify all shards here
                      s1 : {host : '127.0.0.1', port: 31017},
                      s2 : {host : '127.0.0.1', port: 31018},
                  }
              });
              // Make a transaction in s1
              yield mdbgoose.transactionAsync(P.coroutine(function*(){
                  var player = new Player({
                      _id : 'p1',
                      name: 'rain',
                      areaId : 1,
                      deviceType : 1,
                      deviceId : 'id1',
                      items : [],
                  });
                  // insert a player
                  yield player.saveAsync();
                  // find player by id
                  var doc = yield Player.findByIdAsync('p1');
                  console.log('%j', doc);
                  // find player by areaId, return array of players
                  var docs = yield Player.findAsync({areaId : 1});
                  console.log('%j', docs);
                  // find player by deviceType and deviceId
                  player = yield Player.findOneAsync({deviceType : 1, deviceId : 'id1'});
                  // update player
                  player.areaId = 2;
                  yield player.saveAsync();
                  // remove the player
                  yield player.removeAsync();
              }), 's1');
          });
          if (require.main === module) {
              main().finally(process.exit);
          }
          瀏覽 16
          點(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>
                  国产探花第一页 | 一级电影毛片 | 搞黄色的在线观看 | 亚洲 欧美 激情 另类 校园 | 精品国产91 |