分布式内存数据库MemDB安装与配置完全指南

分布式内存数据库MemDB安装与配置完全指南

memdb Distributed Transactional In-Memory Database (全球首个支持分布式事务的MongoDB) memdb 项目地址: https://gitcode.com/gh_mirrors/me/memdb

项目基础介绍与编程语言

MemDB是一款由JavaScript编写的开源项目,它是全球首个支持分布式事务的内存数据库,旨在提供高性能和可扩展性。它在MongoDB的基础上构建了一个带有缓存层的解决方案,实现了真正的分布式ACID事务处理能力,确保了数据的一致性和可靠性。MemDB的设计兼顾了NoSQL数据库的灵活性和关系型数据库的事务安全性。

关键技术和框架

MemDB采用了以下关键技术点:

  • 分布式事务处理:在非关系型数据库中实现类似于传统SQL数据库的完整事务管理。
  • 内存存储:数据主要存储于内存中,以实现高速读写性能。
  • MongoDB兼容性:直接支持MongoDB的查询API和Mongoose ORM,便于现有MongoDB应用的迁移。
  • 高可用架构:每个数据库分片(shard)配备备份节点,消除单点故障。
  • Node.js与Redis:利用Node.js进行服务端逻辑处理,同时借助Redis作为某些功能的支持或缓存。

安装与配置详细步骤

准备工作

  1. 环境需求
    • Node.js: 确保你的系统已安装Node.js(推荐使用最新稳定版)。
    • Redis: 安装Redis服务器,因为它对MemDB的一些功能至关重要。
    • MongoDB: MemDB底层依赖于MongoDB,需预先安装并运行MongoDB服务。

安装MemDB

  1. 全局安装MemDB服务: 打开终端,执行以下命令以全局安装memdb-server

    sudo npm install -g memdb-server
    
  2. 下载项目源代码: 虽然直接安装包含了运行所需的库,但了解项目结构时可从GitHub克隆项目:

    git clone https://github.com/rain1017/memdb.git
    

配置MemDB

  1. 创建配置文件: 复制示例配置文件,并根据自己的需要进行调整。通常这一步是将node_modules/memdb-server/memdb-conf.js复制到一个指定目录,如~/memdb/(若不存在,需先创建该目录),并命名为memdb-conf.js

  2. 修改配置: 编辑memdb-conf.js,主要关注分片设置、MongoDB与Redis连接信息以及任何自定义的集合配置。记得仔细阅读注释,理解每个配置项的作用。

启动MemDB服务

  1. 控制MemDB集群: 使用memdbcluster脚本来管理服务。例如,启动集群:

    memdbcluster start [--conf=memdb-conf.js] [--shard=shardId]
    

    如果你不指定配置文件路径,默认会查找当前目录或~/memdb/memdb-conf.js

  2. 检查状态: 可通过以下命令检查服务状态:

    memdbcluster status
    

测试MemDB

  • 按照快速入门指南编写简单的测试脚本,确认MemDB能正常接收请求与处理事务。
  • 不要忘记根据文档在配置文件中添加必要的索引,以便提高查询效率。

通过以上步骤,您已经成功安装并配置了分布式内存数据库MemDB,可以开始探索它的强大功能,享受高性能数据库服务带来的便利。记得在实际部署前进行详尽的测试,确保所有组件按预期工作。

memdb Distributed Transactional In-Memory Database (全球首个支持分布式事务的MongoDB) memdb 项目地址: https://gitcode.com/gh_mirrors/me/memdb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐凌杏Elizabeth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值