C++开发基础

    • 连接数据库:connect.cpp 演示如何连接到数据库。文件应当包含“client.hpp”头文件及使用命名空间 sdbclient。

    在 Linux下,可以如下编译及链接动态链接库文件 libsdbcpp.so:

    1. $ g++ -o connect connect.cpp -I <PATH>/sdbdriver/include -lsdbcpp -L <PATH>/sdbdriver/lib
    2. 执行结果如下:
    3. $ ./connect localhost 11810 "" ""
    4. Connect success!
    • 创建集合空间和集合

    首先,定义集合空间,集合对象。

    1. sdbCollectionSpace collectionspace ;
    2. sdbCollection collection ;

    创建集合空间"foo"

    1. rc = connection.createCollectionSpace ( "foo", SDB_PAGESIZE_4K, collectionspace ) ;

    在新建立的集合空间中创建集合"bar"

    1. rc = collectionspace.createCollection ( "bar", collection ) ;

    以上创建了一个名字为“foo”的集合空间和一个名字为“bar”的集合,集合空间内的集合的数据页大小为4k。可根据实际情况选择不同大小的数据页。创建集合后,可对集合做增删改查等操作。

    Note:

    在创建集合“bar”时并没有附加分区,压缩等信息,详情请查阅 C++ API

    • 插入数据:insert

    首先,需要创建一个插入的 bson 对象。

    1. obj = BSON ( "name" << "tom" << "age" << 24 ) ;

    接着,把此 bson 对象插入集合中

    1. collection.insert ( obj ) ;
    • 查询:query

    定义一个游标对象

    1. sdbCursor cursor ;

    查询所有记录,并把查询结果放在游标对象中

    从游标中显示所有记录

    1. while( !( rc=cursor.next( obj ) ) )
    2. {
    3. cout << obj.toString() << endl ;
    4. }

    查询操作需要一个游标对象存放查询的结果到本地。要获得查询的结果需要使用游标操作。本例使用了游标操作的 next 接口,表示从查询结果中取到一条记录。此示例中没有设置查询条件,筛选条件,排序情况,及仅使用默认索引。

    • 创建索引:index
    1. # define INDEX_NAME "index"

    首先创建一 BSONObj 对象包含将要创建的索引的信息

    1. BSONObj obj ;
    2. obj = BSON ( "name" << 1 << "age" << -1 ) ;

    创建一个以"name"为升序,"age"为降序的索引

    1. collection.createIndex ( obj, INDEX_NAME, FALSE, FALSE ) ;

    集合对象 collection 中创建一个以"name"为升序,"age"为降序的索引。

    先创建一个包含更新规则的 BSONObj 对象

    1. BSONObj rule = BSON ( "$set" << BSON ( "age" << 19 ) ) ;

    打印出更新规则

    1. cout << rule.toString() << endl ;

    更新记录

    1. collection.update( rule ) ;

    在集合对象 collection 中更新了记录。示例中没有指定数据匹配规则,所以此示例将更新集合中所有的记录。

    集群操作

    • 分区组操作

    以下为分区组操作示例性的例子。真正的应用应包括错误检测等。

    定义一个分区组实例

    定义创建节点需要使用的配置项,此处定义一个空的配置项,表示使用默认配置

    1. BSONObj conf ;

    先建立一个编目分区组

    1. connection.createCataReplicaGroup ( "ubuntu-dev1", "30000", "/opt/sequoiadb/database/catalog/30000", conf ) ;

    创建数据分区组

    1. connection.createRG ( "dataGroup1", rg ) ;

    创建第一个数据节点

    1. rg.createNode ( "ubuntu-dev1", "40000", "/opt/sequoiadb/database/data/40000", conf ) ;

    启动分区组

    1. rg.start () ;
    • 数据节点操作

    数据节点操作包括创建数据节点(sdbReplicaGroup::createNode),得到主数据节点(sdbReplicaGroup::getMaster),得到从数据节点(sdbReplicaGroup::getSlave),启动数据节点(sdbNode::start),停止数据节点(sdbNode::stop)等。

    以下为数据节点操作示例性的例子。真正的应用应包括错误检测等。

    定义一个数据节点实例

    1. sdbNode masternode ;
    2. sdbNode slavenode ;

    获取主数据节点

    1. rg.getMaster( masternode ) ;