配置 SequoiaDB 巨杉数据库存储引擎
在 SequoiaDB 巨杉数据库存储引擎中开启 RC 级别事务,并且配置为等锁模式,同时为 SequoiaS3 的存储创建专属的域。
1)通过 Linux 命令行进入 SequoiaDB Shell;
1 | sdb |
2)通过 javascript 语言连接协调节点,获取数据库连接;
1 | var db = new Sdb("localhost", 11810); |
3)开启 RC 级别事务,且配置为等锁模式;
1 | db.updateConf( { transactionon: true, transisolation: 1, translockwait: true } ); |
4)创建存储元数据的集合空间所在的域;
1 | db.createDomain("metaDomain", [ "group1", "group2", "group3" ], { AutoSplit: true} ); |
5)创建存储对象数据的集合空间所在的域;
1 | db.createDomain("dataDomain", [ "group1", "group2", "group3" ], { AutoSplit: true} ); |
6)退出 SequoiaDB Shell;
1 | quit; |
配置 SequoiaS3 系统
为 SequoiaS3 系统设置监听端口、数据存储域、存储引擎的协调节点等启动的基础配置。
1)进入 SequoiaS3 包目录;
1 | cd /opt/sequoiadb/tools/sequoias3 |
2)配置 SequoiaS3,配置对外监听端口;
1 | echo 'server.port=8002' >> config/application.properties |
3)配置 coord 节点的 IP 和端口,可以配置多组并使用逗号分隔
1 | echo 'sdbs3.sequoiadb.url=sequoiadb://localhost:11810' >> config/application.properties |
4)配置 SequoiaS3 的存储创建了专属的域
1 | echo 'sdbs3.sequoiadb.meta.domain=metaDomain' >> config/application.properties |
Note:
- 详细配置说明: SequoiaS3 实例参数配置
启动 SequoiaS3 系统
1)配置修改完成后,通过 ./sequoias3.sh 可执行脚本启动 SequoiaS3;
1 | /opt/sequoiadb/tools/sequoias3/sequoias3.sh start |
2)进入 SequoiaDB Shell,查看 SequoiaS3 元数据表,SequoiaS3 实例在启动的时候如果这些元数据表不存在会自动创建;
1 | sdb |
3)使用javascript语法连接协调节点,获取 db 数据库连接;
1 | var db = new Sdb("localhost", 11810); |
4)查看集合列表;
1 | db.list(SDB_SNAP_COLLECTIONS); |
操作截图:
5)退出 SequoiaDB Shell;
1 | quit; |
Note:
系统启动时需确保数据库已经正常运行,系统启动后会创建默认管理员用户,您可以使用该默认管理员用户创建新的用户,然后使用新用户角色进行桶操作,对象操作。
- 默认管理员账户名:
administrator
- 默认管理员AccessKeyID:
ABCDEFGHIJKLMNOPQRST
- 默认管理员用户SecreatKeyID:
abcdefghijklmnopqrstuvwxyz0123456789ABCD
用户接口相关操作
在本例中将使用 curl restful 方式来测试 SequoiaS3 用户接口,主要包括用户创建、密钥获取、用户删除等相关操作。后续操作需要启动 SequoiaS3 进程,如有关闭需要打开。
创建用户
使用 curl 创建用户 s3user(其中 ABCDEFGHIJKLMNOPQRST 为默认管理员 AccessKeyID ,为 abcdefghijklmnopqrstuvwxyz0123456789ABCD 默认管理员用户 SecreatKeyID ):
1 | curl -v -X POST "http://localhost:8002/users/?Action=CreateUser&UserName=s3user&role=admin" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图:
获取用户的访问秘钥
使用 curl 获取 s3user 用户访问秘钥(需管理员用户权限):
1 | curl -v -X POST "http://localhost:8002/users/?Action=GetAccessKey&UserName=s3user" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图:
删除用户
使用 curl 删除用户 s3user(需管理员用户权限):
1 | curl -v -X POST "http://localhost:8002/users/?Action=DeleteUser&UserName=s3user" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图:
桶增删查接口相关操作
在本例中将使用 curl restful 方式来测试 SequoiaS3 桶接口,主要包括桶创建、桶获取、桶删除等相关操作。
创建桶
使用 curl 创建桶 sdbbucket:
1 | curl -v -X PUT "http://localhost:8002/sdbbucket" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图:
获取桶信息
使用 curl 获取所有桶信息:
1 | curl -v -X GET "http://localhost:8002" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图:
删除桶
1)使用 curl 删除桶 sdbbucket;
1 | curl -v -X DELETE "http://localhost:8002/sdbbucket" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图:
2)检查桶是否存在,确认结果中是否存在桶 sdbbucket;
1 | curl -v GET "http://localhost:8002" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图:
文件上传和下载相关操作
在本例中将使用 curl restful 方式来测试 SequoiaS3 文件对象接口,主要包括文件对象上传、下载、删除相关操作。
如果已经删除桶则需要重新创建,需要先确保 sdbbucket 桶已创好。
使用 curl 创建桶 sdbbucket :
1 | curl -v -X PUT "http://localhost:8002/sdbbucket" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
文件对象上传
1)检查 /opt/sequoiadb/tools/sequoias3/ 目录下是否存在 sequoia-s3-3.4.jar 这个文件,后面向 sdbbucket 桶上传此文件;
1 | ls /opt/sequoiadb/tools/sequoias3/sequoia-s3-3.4.jar |
2)使用 curl 向 sdbbucket 中写入文件 “sequoia-s3-3.4.jar” ,在S3中的名称是 “sdbs3.jar”;
1 | curl -X PUT -T "/opt/sequoiadb/tools/sequoias3/sequoia-s3-3.4.jar" "http://localhost:8002/sdbbucket/sdbs3.jar" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" -H "Content-Type: text/plain" |
3)进入 SequoiaDB Shell,查看对象是否上传成功;
1 | sdb |
4)使用javascript语法连接协调节点,获取 db 数据库连接;
1 | var db = new Sdb("localhost", 11810); |
5)在元数据集合中查找文件名,确定是否上传成功;
1 | db.S3_SYS_Meta.S3_ObjectMeta.find( { "Key": "sdbs3.jar" } ); |
6)退出 SequoiaDB Shell;
1 | quit; |
Note:
- 上传前去确保桶 sdbbucket 存在,如不存在,使用之前命令创建 sdbbucket 桶对象。
- 第一次上传对象时,会创建 S3_ObjectData* 的集合,该集合用于保存对象文件。
文件对象下载
1)从桶 sdbbucket 中读取文件对象 “sdbs3.jar”,并存放到本地目录 sdbs3.jar 文件中;
1 | curl -o sdbs3.jar -X GET "http://localhost:8002/sdbbucket/sdbs3.jar" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" -H "Content-Type: text/plain" |
操作截图:
2)查看下载的文件 sdbs3.jar,观察该文件与 sequoia-s3-3.4.jar 大小是否一致;
1 | ls -trl |
操作截图:
文件对象删除
1)从桶 sdbbucket 中删除文件对象 “sdbs3.jar”;
1 | curl -X DELETE "http://localhost:8002/sdbbucket/sdbs3.jar" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
2)进入 SequoiaDB Shell,查看对象是否删除成功;
使用 linux 命令进入 SequoiaDB Shell;
1 | sdb |
使用javascript语法连接协调节点,获取 db 数据库连接;
1 | var db = new Sdb("localhost", 11810); |
在元数据集合中查找文件名,如果返回值为空,则对象删除成功;
1 | db.S3_SYS_Meta.S3_ObjectMeta.find( { "Key": "sdbs3.jar" } ); |
退出 SequoiaDB Shell;
1 | quit; |
创建 JAVA 工程项目
本小节介绍使用 Java S3 的使用样例,实现基本读写操作。
1)创建 JAVA 工程目录;
1 | mkdir -p /home/sdbadmin/s3/lib |
2)进入工程目录;
1 | cd /home/sdbadmin/s3 |
3)拷贝 S3 接口需要的 jar 包;
1 | cp /home/sdbadmin/package/s3/* ./lib |
4)复制以下代码到实验环境终端执行,生成创建桶和上传文件的 Init.java 文件;
1 | cat > /home/sdbadmin/s3/Init.java << EOF |
5)复制以下代码到实验环境终端执行,生成查询桶内对象列表和下载对象的 GetObject.java 文件;
1 | cat > /home/sdbadmin/s3/GetObject.java << EOF |
6)复制以下代码到实验环境终端执行,生成删除对象和桶的 DeleteBucket.java 文件;
1 | cat > /home/sdbadmin/s3/DeleteBucket.java << EOF |
7)查询是否已经生成以上 JAVA 文件;
1 | ls -trl /home/sdbadmin/s3/Init.java |
编译运行代码
上一小节已经创建了 JAVA 工程和代码并且拷贝了 JAVA 驱动,接下来我们对代码进行编译运行。
1)编译 Init.java 文件;
1 | javac -cp .:./lib/* -d . Init.java |
2)运行 Init 类代码,创建”javabucket”桶和上传文件;
1 | java -cp .:./lib/* com.sequoiadb.samples.Init |
3)编译 GetObject.java 文件;
1 | javac -cp .:./lib/* -d . GetObject.java |
4)运行 GetObject 类代码,查询桶内对象列表和获取对象;
1 | java -cp .:./lib/* com.sequoiadb.samples.GetObject |
5)查看对象是否下载成功;
1 | ls -trl |
操作截图:
6)编译 DeleteBucket.java 文件;
1 | javac -cp .:./lib/* -d . DeleteBucket.java |
7)运行 DeleteBucket 类代码,查询桶内对象列表和获取对象;
1 | java -cp .:./lib/* com.sequoiadb.samples.DeleteBucket |
8)检查桶是否存在,确认结果中是否存在桶 javabucket;
1 | curl -v GET "http://localhost:8002" -H "Host: localhost:8002" -H "Authorization: AWS ABCDEFGHIJKLMNOPQRST:abcdefghijklmnopqrstuvwxyz0123456789ABCD" |
操作截图: