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