MongoDB学习及其C++ Driver使用

MongoDB 学习(待补充)

概念

- oplog 主节点的操作记录,幂等性
- mongod mongo后台进程
- secondary节点 副本集中的非主结点

集群

- 功能
    - 数据冗余
    - 读写分离
- 缺点
    - 容错性差

副本集

- 概念
    - 一组有相同数据的mongodb实例,只有主实例执行写操作,其它实例保持同步;主可读写,其它节点只可读
- 功能
    - 自动容错(auto-failover)
    - 自动恢复(auto-recovery)
    - 读写分离
        - connection string的options里添加readPreference=secondaryPreferred
    - 数据冗余
- 缺点
    - 待补充
- 注意事项
    - 如果使用当前主节点地址建立连接,当当前主节点失效(降级为secondary节点),客户端将无法执行写操作
    - 使用 副本集方式 连接副本集
        - connection string的options里添加replicaSet=xxx
            - replicaSet参数指定,要连接的是一个副本集,但只提供了一个在这个副本集中的ip:host,是什么行为?
            - 如果不传这个参数,至少提供了两个在这个副本集中的ip:host,通过mongo driver可以检测是否为副本集
            - 如果不传这个参数,只提供了一个在这个副本集中的ip:host,mongo driver只会连接这一个ip:host
- driver建立连接的过程
    - 参考了下面文献中stackoverflow.com的一个提问,但没有分析过cxx driver代码和验证
    - 如果seed list中有多个ip:host,driver会检测使用哪种连接方式(replicaSet还是sharding)
    - 如果检测到是replicaset,driver会通过seed list中的结点找到主节点
    - 然后driver更新replicaset中的结点,并动态维持最新的状态

安装

mongo-c-driver是安装mongo-cxx-driver的基础,并且两者的版本需要适配。可参考mongo-cxx-driver发布页面来确定mongo-c-driver版本,如r3.3.1版本的cxx-driver需要1.10.1版本的c-driver

mongo-c-driver安装命令参考:

yum install cmake3
cmake3 -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DCMAKE_BUILD_TYPE=Release ..

-mongo-cxx-driver安装命令参考:

cmake3 -DCMAKE_BUILD_TYPE=Release -DBSONCXX_POLY_USE_BOOST=1 -DCMAKE_INSTALL_PREFIX=/usr/local ..

MongoDB C++ Driver使用

以下代码基于MongoDB C++ Driver 使用手册

解析数据

将 Mongo Bson 数据解析为 C++ 类型,参考代码

增删改查

对 Mongo 基本的操作,参考代码

连接池

基于连接池封装了mongo client,参考代码

参考

http://mongoc.org/libmongoc/current/installing.html
http://mongocxx.org/mongocxx-v3/installation/
http://mongoc.org/libmongoc/1.10.1/index.html mongo-c-api使用文档
http://mongoc.org/libmongoc/1.10.1/mongoc_uri_t.html#connection-pool-options
http://mongocxx.org/
https://stackoverflow.com/questions/35920013/new-c-mongo-driver-how-to-see-type-and-how-to-get-string-value
Mongodb主从复制/ 副本集/分片集群介绍
Connection String URI
https://docs.mongodb.com/ecosystem/drivers/
[MongoDB Connection String to Replica Set](MongoDB Connection String to Replica Set)
https://mongodb-documentation.readthedocs.io/en/latest/reference/connection-string.html#uri.replicaSet
https://stackoverflow.com/questions/23958759/mongodb-connection-string-to-replica-set

原文地址:https://www.cnblogs.com/wangzhiyi/p/9750939.html