文件名称:分布式事务内存数据库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)