分布式事务内存数据库MemDB.zip

时间:2022-08-07 09:44:40
【文件属性】:
文件名称:分布式事务内存数据库MemDB.zip
文件大小:227KB
文件格式:ZIP
更新时间:2022-08-07 09:44:40
开源项目 MemDB 是全球首个支持分布式事务的 MongoDB。高性能和可伸缩快速的内存数据访问,高达 25,000 ops (single doc read/write) /碎片 (each shard take one CPU core).系统可水平伸缩没有单点瓶颈真正的分布式 ACID 事务在分布式环境真正支持 ACID (Stands for Atomicity, Consistency, Isolation, Durability) 事务MemDB 让 MongoDB 支持 ACID 事务兼容 MongoDB 和 Mongoose直接使用 MongoDB 的查询 API内置 Mongoose 支持高可用性每个碎片都有一个或者多个 slaves,不会发生单点故障 MemDB shell:架构: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); } 标签:MemDB
【文件预览】:
memdb-master
----.gitignore(207B)
----gruntfile.js(4KB)
----README.md(7KB)
----bin()
--------memdbcluster(6KB)
--------memdb(4KB)
--------memdbd(3KB)
--------memdbindex(2KB)
----test()
--------bin()
--------env.js(3KB)
--------blanket.js(852B)
--------app()
--------memdb.conf.js(2KB)
--------perf.js(13KB)
--------lib()
--------stress.js(7KB)
----History.md(414B)
----LICENSE(11KB)
----app()
--------protocol.js(3KB)
--------slave.js(4KB)
--------server.js(6KB)
--------shard.js(25KB)
--------document.js(8KB)
--------log4js.json(949B)
--------consts.js(1KB)
--------backends()
--------database.js(8KB)
--------config.js(3KB)
--------utils.js(9KB)
--------collection.js(15KB)
--------backendlocker.js(5KB)
--------indexbuilder.js(4KB)
--------connection.js(4KB)
--------modifier.js(5KB)
----.jshintrc(2KB)
----package.json(2KB)
----AUTHORS(137B)
----index.js(687B)
----memdb.conf.js(5KB)
----doc()
--------v0.3.0.md(453B)
--------images()
--------diagrams.pptx(79KB)
----.npmignore(206B)
----.travis.yml(104B)
----.editorconfig(1000B)
----sample()
--------indexing.js(3KB)
--------autoconnection.js(3KB)
--------mdbgoose.js(3KB)
--------connection.js(2KB)
----lib()
--------protocol.js(2KB)
--------client.js(4KB)
--------consts.js(1KB)
--------clientpool.js(1KB)
--------autoconnection.js(11KB)
--------mongoose-driver()
--------index.js(2KB)
--------mdbgoose.js(6KB)
--------connection.js(3KB)

网友评论