1. 环境准备
  2. SequoiaDB配置
  3. SequoiaDB操作
  4. Python驱动

使用SequoialDB进行实验。

环境准备

有关SequoiaDB更详细的资料详见 http://www.sequoiadb.com/cn/index.php?a=index&m=Files

修改/etc/hosts,将主机的IP与机器名映射关系配置到该文件中,如:

1
172.16.158.207 lpoc4468-158-207.localdomain

SequoiaDB配置

  1. 检查SequoiaDB的配置服务状态

    在每台数据库服务器上检查SequoiaDB配置服务状态:

    1
    service sdbcm status

    确认服务正在运行,否则执行如下命令启动配置服务:

    1
    service sdbcm start

  2. 运行SequoiaDB shell

    1
    2
    3
    su - sdbadmin
    PATH=/opt/sequoiadb/bin/:$PATH
    sdb

    作用分别为:

    • 切换到sdbadmin用户(后续配置均在sdbadmin用户下完成)

    • 添加PATH环境变量

    • 启动 SequoiaDB Shell 控制台

  3. 启动一个临时协调节点

    1
    2
    3
    4
    oma = new Oma("localhost", 11790)
    oma.createCoord(18800, "/opt/sequoiadb/database/coord/18800")
    oma.startNode(18800)
    db = new Sdb("localhost", 18800)

    作用分别为:

    • 连接到本地的集群管理服务进程sdbcm

    • 创建临时协调节点

    • 启动临时协调节点

    • 连接到临时协调节点

  4. 配置和启动编目节点

    1
    db.createCataRG("lpoc4468-158-207.localdomain", 11800, "/opt/sequoiadb/database/cata/11800")

    作用分别为:

    • 创建一个编目节点组
  5. 配置和启动数据节点

    1
    2
    3
    dataRG = db.createRG("datagroup")
    dataRG.createNode("lpoc4468-158-207.localdomain", 11820, "/opt/sequoiadb/database/data/11820")
    dataRG.start()

    作用分别为:

    • 创建数据节点组

    • 添加数据节点

    • 启动数据节点组

  6. 配置和启动协调节点

    1
    2
    rg = db.createCoordRG()
    rg.createNode("lpoc4468-158-207.localdomain", 11810, "/opt/sequoiadb/database/coord/11810")

    作用分别为:

    • 创建协调节点组

    • 创建协调节点

  7. 使用集合

    1
    2
    3
    db = new Sdb("localhost", 11810)
    db.createCS("foo")
    db.foo.createCL("bar")

    作用分别为:

    • 创建一个新的 sdb 连接

    • 创建集合空间

    • 创建集合

  8. 导入导出

    http://www.sequoiadb.com/cn/index.php?a=index&m=Files&cat_id=1432190654&edition_id=0

    • 导出

      localhost:11810中的foo集合空间的bar集合的namevalue字段导出到test.csv中。

      1
      sdbexprt -s localhost -p 11810 --type csv --file test.csv --fields name, value -c foo -l bar

    • 导入

      test.csv(第一行为字段名)namevalue字段导入到localhost:11810中的foo集合空间的bar集合中。

      1
      sdbimprt -s localhost -p 11810 --type csv --file test.csv -c foo -l bar --fields='name string default "Anonymous", value int' --headerline=true

    • 批量导入

      1
      2
      3
      4
      for i in {1..9}
      do
      sdbimprt -s localhost -p 11810 --type csv --file "$i.csv" -c foo -l bar --headerline=true
      done

    • 注意导入的数据必须是utf-8

      可以用vim来查看并且转换为utf-8:

      1
      2
      vim test.csv
      :set fileencoding=utf-8

    • 注意把文件中的CRLF转换为LF

      1
      sed -i 's/\r//g' "test.csv"

SequoiaDB操作

  1. CRUD操作

    1
    2
    3
    4
    5
    6
    7
    db.foo.bar.insert({"name":"sequoiadb"})
    db.foo.bar.find()
    db.foo.bar.find().current()
    db.foo.bar.find().count()
    db.foo.bar.find({age:23})
    db.foo.bar.remove()
    db.foo.bar.remove({"_id.$oid":"1234567890abcdef00000001"})

    作用分别为:

    • 写入记录

    • 返回所有结果

    • 返回当前游标指向的记录

    • 返回当前游标的记录总数

    • 返回age = 23的记录

    • 删除集合中的所有记录

    • 删除集合中_id.$oid = 1234567890abcdef00000001的记录

  2. 索引

    1
    { "name" : "<索引名>", "key" : "{ "<索引字段1>" : <1|-1>, [ "<索引字段2>" : <1|-1> ...] }, [ "unique" : <true|false> ], [ "enforced" : <true|false> ]}

    如:

    1
    { "name" : "employee_id_key", "key" : {"employee_id" : 1 } }

  3. 聚集

    1
    db.foo.bar.aggregate({$group:{_id: "$name", value_avg: {$avg: "$value"}, Count: {$count: "$value"}, name: {$first: "$name"}}}, {$sort:{valuee_avg: 1}})

Python驱动

http://www.sequoiadb.com/cn/index.php?a=index&m=Files&cat_id=1432190749&edition_id=0

  1. 下载Python驱动pysequoiadb.tar.gz并解压,得到bson文件夹、pysequoiadb文件夹和setup.py

  2. 把两个文件夹放入开发工程目录中,编写代码即可。