mongodb c++接口

本文介绍了如何在Linux系统上创建用于MongoDB服务的专用用户,并详细解释了/etc/passwd文件中用户信息的各个字段含义。此外,还提供了MongoDB连接字符串及复制集配置示例。

mongod用户创建

 groupadd mongod

adduser -s /bin/false -d /bin/null --no-create-home -c mongod  -g mongod mongod

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

由上面的格式可以看出,每一行代表一个用户的信息,一共包括7个字段的信息,每个字段的信息用冒号隔开。这7个字段分别代表:

1. 账号名称:即登陆时的用户名
2. 密码:早期UNIX系统的密码是放在这个文件中的,但因为这个文件的特性是所有程序都能够读取,所以,这样很容易造成数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow中了
3. UID:用户ID,每个账号名称对应一个UID,通常UID=0表示root管理员
4. GID:组ID,与/etc/group有关,/etc/group与/etc/passwd差不多,是用来规范用户组信息的
5. 用户信息说明栏: 用来解释这个账号是干什么的
6. 家目录:home目录,即用户登陆以后跳转到的目录,以root用户为例,/root是它的家目录,所以root用户登陆以后就跳转到/root目录这里
7. Shell:用户使用的shell,通常使用/bin/bash这个shell,这也就是为什么登陆Linux时默认的shell是bash的原因,就是 在这里设置的,如果要想更改登陆后使用的shell,可以在这里修改。另外一个很重要的东西是有一个shell可以用来替代让账号无法登陆的命令,那就是 /sbin/nologin。


mongo-cxx-driver-legacy-1.0.4

scons --extrapath=/usr/local/boost158/ --prefix=/usr/local/mongodb30  --ssl=SSL --use-sasl-client=USE-SASL-CLIENT ./

boost_1_58_0.tar

./bootstrap.sh --prefix=/usr/local/boost158
./b2 install

mongo-cxx-pool-master(需要-std=c++11 可以修改源码用低版本编译)

mongodb3.0 连接串mongodb://xxx:xxx@192.168.0.21:27017/admin

mongodb3.0 复制集连接串mongodb://xxx:xxx@192.168.0.21:27011,192.168.0.21:27012,192.168.0.21:27010/admin?authMechanism=SCRAM-SHA-1&authSource=admin&replicaSet=rs0(使用authMechanism= MONGODB-CR失败 默认,只需提供复制集中一个正确的ip)

需要先认证才能准确得到 mastr和slave 
cout<<"11:"<<conn->slaveConn().getServerAddress()<<endl;
    BSONObj obj = conn->slaveConn().findOne("test.testdb", MONGO_QUERY("_id"<<OID("55b886c1b0852f7c713227b0")),0,QueryOption_SlaveOk);
    cout<<obj.jsonString()<<endl;

可能获取不同的地址


DBClientConnection& conn1 = conn->slaveConn();
    cout<<"11:"<<conn1.getServerAddress()<<endl;
    BSONObj obj = conn1.findOne("test.testdb", MONGO_QUERY("_id"<<OID("55b886c1b0852f7c713227b0")),0,QueryOption_SlaveOk);
    cout<<obj.jsonString()<<endl;

转载于:https://my.oschina.net/yagami1983/blog/489326

最近重构并优化了一套后端服务的代码: 1. 设计并开发高效的C++对象池算法,时间复杂度为 O(1) 在整个重构框架中,对象池是负责管理内存的底层基本模块 2. 利用命令模式的思想开发 Redis 子模块 抽象出方便高效的接口提供给上层程序员使用 3. 利用组合模式和装饰模式的思想开发 MongoDB 数据库查询条件装饰器 将查询条件和数据库 MongodbModule 数据模型进行解耦合 4. 抽象出一套 MongoDB Module 结果集接口 通过模板和特化技术实现 string/int 等不同索引类型的结果集 5. 开发 AbstractMongodbModule 类处理通用的 MongoDB 数据库表数据操作 数据库中不同的表都有自己的 AbstractMongodbModule 子类对应 6. 用 Perl 开发自动代码生成器,上层程序员对照数据库表结构写 .tmpl 配置文件, 自动生成该数据库表的 MongodbModule 子类,减轻程序员新增表时的工作量 7. 结合 Redis 模块和 MongoDB 模块,开发 HierarchicalModule 分层数据模型 构造一个 Redis 缓存层 + MongoDB 持久层的后台 Server 架构 并通过简单方便的接口供上层程序员使用,具体的数据分层处理对上层程序员是黑盒的 8. 设计并开发整套缓存层使用的 KEY 规则,方便缓存更新 结合公司的数据订阅系统进行 Redis缓存层 + MongoDB 持久层数据更新功能 9. 重构后的分层数据架构比原有接口效率提高 5 - 400 倍(返回数据记录条数从 150 - 5 条) 绝大部分时间后端接口需要获取记录个数在 50 以内,所以效率提升在 100 倍左右
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值