【巨杉数据库SequoiaDB】巨杉?具系列之一 | ?对象存储?具sdblobtool

近期,巨杉数据库正式推出了完整的SequoiaDB 工具包,作为辅助工具,更好地帮助大家使用和运维管理分布式数据库。为此,巨杉技术社区还将持续推出工具系列文章,帮助大家了解巨杉数据库丰富的工具矩阵。

本文作为系列第一篇,将分享巨杉数据库大数据存储工具 sdblobtool 的基本介绍和应用实践。

巨杉工具矩阵

一、对象存储与自建存储对比
通俗地讲,自建存储就是自己购买服务器设备存储文件,通过运维人员手工进行文件的上传下载。而对象存储,则是使用不同的存储形态来存储文件。目前,对象存储独立的存储形态有三种:块存储、?件存储以及新出现的对象存储。

块存储:简单来说,块存储就是将硬盘直接挂载到主机,在主机上我们能够看到的就是一块块的硬盘以及硬盘分区。从存储架构的角度而言,块存储又分为DAS存储(Direct-Attached Storage,直连式存储)和SAN存储(Storage Area Network,存储区域网络)。

文件存储:指的是在文件系统上的存储,也就是主机操作系统中的文件系统。我们知道,文件系统中有分区,有文件夹,子文件夹,整体形成?个自上而下的?件结构,?户可以通过操作系统中的应?程序来打开和修改文件系统下的?件。

对象存储:指的是?向对象/?件的、海量的互联网存储对象。虽然它也是文件,但它是已经被封装的?件(编程中的对象就有封装性的特点)。在对象存储系统?,用户不能直接打开和修改?件,但可以像 ftp ?样上传和下载?件。另外,对象存储不像?件系统那样有?个很多层级的?件结构,而是只有?个“桶”的概念(也就是存储空间),“桶”??全部都是对象,是一种非常扁平化的存储方式。

二、巨杉数据库大对象存储
SequoiaDB 和各大云平台对象存储都提供存储服务,都具备分布式、可扩展、高可用等特性。各大云平台对象存储是专门为对象存储而设计的,而SequoiaDB的块存储引擎则针对非结构化数据存储。

SequoiaDB 的块存储字段类型叫做LOB(Large OBject,大对象),其核心机制是将内容文件打散成多个数据块,每个数据块被分别发送到不同分区独立存放。如下图所示:


LOB 文件逻辑结构

与其他解决方案相比,由于不存在独立中控元数据节点,SequoiaDB 提供的 LOB 存储机制理论上可以存放近乎无限数量的对象文件,并且不会由于元数据堆积而造成性能下降。同时,由于数据块被散列分布到所有数据节点,整个系统的吞吐量随集群磁盘数量的增加近乎线性提升。最后,SequoiaDB 提供原生的内容管理接口,通过 REST 访问方式支持批次管理、版本管理、流程管理等一系列基本CM特性。

基于LOB 存储机制的内容管理平台架构图

从使用方式上看,SequoiaDB的 LOB 机制可以使用原生 API 的访问形式,对底层 LOB 对象进行读写访问;同时,用户也可以通过高阶 CM API Java 接口,Java 驱动会将请求封装成 RESTful 形式,通过发送接收 HTTP 报文进行对象和批次级别读写更新操作。

相对于其他云存储平台,巨杉数据库对象存储具有以下优势:
安全性

SequoiaDB 提供基于本地化的对象存储,通过多副本数据备份,实现数据安全,安全性毋庸置疑。
支持全类型数据的覆盖

SequoiaDB 是?款以 JSON/BSON 数据类型作为底层存储格式的分布式关系型数据库,支持灵活的数据类型定义和存储,支持全类型数据的覆盖,可同时存储结构化、半结构化和非结构化数据,对大数据的存储与分析提供了了一个坚实、可靠、高效与灵活的底层平台。

更加灵活的一致性策略

目前,SequoiaDB 数据分区组的数据一致性是基于集合级别进行配置的。用户在使用SequoiaDB 的过程中,可以随时调整数据一致性的强度。在一个多副本的 SequoiaDB 集群中,集合默认的数据?致性行级别为“最终?致性”。

深度整合大数据体系组件

SequoiaDB 的企业版本不仅集成了 Hadoop 的 HDFS、MapReduce和Spark,还向客户提供完善的 SQL 解决方案和丰富的第三方插件,例如 ETL 工具 Kettle 的 SequoiaDB 插件,Spark SQL 的扩展包--支持 Spark SQL 自动同步操作 SequoiaDB 数据集等。

SequoiaDB 不仅通过了全球最大的 Hadoop 发行商 Cloudera 的官方认证(全球只有四家 NoSQL 数据库获得),还获得了了 DataBricks 的官方认证,同时,SequoiaDB 也是国内三家经过 DataBricks 授权,拥有发行 Spark 权利的厂商之?。

三、大对象存储工具 sdblobtool ?法
sdblobtool 是一款用于管理 SequoiaDB 集合中大对象的工具,具有大对象(lob)的导出、导?、迁移的功能。

  1. 大对象的导出

导出功能是将集合中的?对象导出到本地?件。导出参数:

Note:
--prefer 的取值包括 M 或 m 指master(主节点); S 或 s(从节点); A 或 a 表示anyone; 通过1~255指定instanceid(实例id)

导出示例:

  1. 连接主机名为 sdb 的数据库服务器中服务名为11810协调节点,将集合空间为 sample,集合为 employee 中的大对象导?到本地文件 mylob。
    [[email protected]]$ sdblobtool --operation export --hostname sdb --svcname 11810
    --collection sample.employee --file /opt/file/lobfile
    执行效果

[[email protected]] sdblobtool --operation export --hostname sdb --svcname 11810 --collection sample.employee --file /home/sdbadmin/mylob
lob exporting has been done, total num:6

#查看当前目录下的日志文件
[[email protected]] ls -lrt
总用量 104
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:24 myblog
-rw-r--r--1 sdbadmin sdbadmin_group 1497 10月 27 18:24 sdblobtool.log
导出日志

2019-10-27-18.24.33.252414 Level:EVENT
PID:23987 TID:23987
Function:main Line:323
Message:
Start sdblobtool [Ver:3.2, Re;ease: 42463, Build: 2019-07-27-20.55.27]...

2019-10-27-18.24.33.252848 Level:EVENT
PID:23987 TID:23987
Function:main Line:344
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
options:{省略}

2019-10-27-18.24.33.257633 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/mig/migLobTool.cpp
Message:
begin to export lob

2019-10-27-18.24.33.270184 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/mig/migLobTool.cpp
Message:
lob exporting has been done, total num:6

2019-10-27-18.24.33.270323 Level:EVENT
PID:23987 TID:23987
Function:_exportLob
File:Sequoiadb/engine/pmd/sdblobtool.cpp
Message:
sdblobtool quit. rc: 0, shell rc: 0.

  1. 连接主机名为 sdb01 的数据库服务器?中服务名为 11810 协调节点,使用用户名 sdbadmin,密码 sdbadmin,将集合空间为 sample,集合为 employee 中的大对象导入到本地文件 lobfile。
    [[email protected]]$ sdblobtool --operation export --hostname sdb01 --svcname
    11810 --username sdbadmin --password sdbadmin --collection samole.employee --file
    /opt/file/lobfile
  2. 将集合空间为bizz,集合为 img 中的大对象导入到本地文件 lobfile 中,并指定从主节点导出。
    [[email protected]]$ sdblobtool --operation export --hostname sdb01 --svcname
    11810 --collection bizz.img --prefer M --file /opt/file/lobfile
  3. 大对象的导入
    ?对象导入是将本地文件中的大对象文件导入到集合中, 导入参数:

    Note:
    指定--ignorefe 时只需要添加 --ignorefe即可,不需要为其指定具体值。--file的本地?文件指使用 sdblobtool 导出?生成的文件。

导入示例:

  1. 将本地文件 mylob 中的?对象导入至集合空间 sample,集合 employee2 中,当遇到已经存在的大对象时跳过。
    [[email protected]]$ sdblobtool --operation import --hostname sdb --svcname 11810
    --collection sample.employee2 --file /home/sdbadmin/mylob --ignorefe
    执行效果

[sdb[email protected]] ls lrt
总用量 100
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:27 mylobbr/>[[email protected]]
[[email protected]] sdblobtool --operation import --hostname sdb --svcname 11810 --collection sample.employee2 --file /home/sdbadmin/mylob --ignoref
File version: 1 TotalNum: 6 CreateTime: 2019-10-27-18.27.27.894000
lob importing has been done, total num: 0br/>[[email protected]]
[[email protected]b] ls -lrt
总用量 104
-rw-r-----1 sdbadmin sdbadmin_group 99328 10月 27 18:27 mylob
-rw-r--r--1 sdbadmin sdbadmin_group 1492 10月 27 18:30 sdblobtool.log
导出日志

2019-10-27-18.30.08.474176 Level:EVENT
PID:8084 TID:8084
Function:main Line:323
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
Start sdblobtool [Ver: 3.2, Release: 42463, Build: 2019-07-27-20.55.27]...

2019-10-27-18.30.08.474534 Level:EVENT
PID:8084 TID:8084
Function:main Line:344
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
options:{ "hostname": "sdb", "svcname": "11810", "usrname": "", "passwd": "", "operation": "import", "collection": "foo.bar2", "file": "/home/sdbadmin/mylob", "ignorefe": true, "dsthost": "localhost", "dstservice": "11810", "dstusrname": "", "dstpasswd": "", "PreferedInstance": "M", "ssl": false }

2019-10-27-18.30.08.478471 Level:EVENT
PID:8084 TID:8084
Function:_importLob Line:628
File:SequoiaDB/engine/mig/migLobTool.cpp
Message:
begin to import lob

2019-10-27-18.30.08.484134 Level:EVENT
PID:8084 TID:8084
Function:_importLob Line:654
File:SequoiaDB/engine/mig/migLobTool.cpp
Message:
lob importing has been done, total num:0

2019-10-27-18.30.08.484228 Level:EVENT
PID:8084 TID:8084
Function:main Line:365
File:SequoiaDB/engine/pmd/sdblobtool.cpp
Message:
sdblobtool quit. rc: 0, shell rc: 0.

  1. 使用用户名 sdbadmin 密码 sdbadmin 将本地文件 mylob 中的大对象导入至集合空间 sample,集合 employee2 中,当遇到已经存在的大对象则跳过。
    [[email protected]]$ sdblobtool --operation import --hostname sdb01 --username sdbadmin --passwd sdbadmin --svcname 11810 --collection sample.employee2 --file /home/sdbadmin/mylob --ignorefe
  2. 大对象迁移
    大对象迁移是将集合中的大对象迁移到另一个集合中,迁移参数:

    Note:
    指定--ignorefe 时只需要添加 --ignorefe即可,不需要为其指定具体值。
    迁移示例:
    连接集群主机名为 sdb01 中的协调节点11810,将集合空间 sample,集合 employee 下的大对象复制到另一个集群,目标集群主机名为 sdb02,协调节点为11810,集合空间 sample,集合 employee2 中,需要已存在的大对象跳过。
    [[email protected]]$ sdblobtool --operation migration --hostname sdb01 --svcname 11810 --collection sample.employee --dsthost sdb02 --dstservice 11810 --dstcollection sample.employee2 --ignorefe
  3. 导出成功标志
    指定大对象迁移命令后,控制台会在命令执行后给出本次命令执行结果:

大对象导出

lob exporting has been done, total num:6
大对象导入

File version: 1 TotalNum: 6 CreateTime: 2019-10-27-18.27.27.894000
lob importing has been done, total num: 0
用户通过控制台输出可以判断本次导入或者导出是否存在问题。然后再进入导入/导出生成的 sdblobtool.log 日志文件,检查日志文件中文件导出数量的统计,查看日志文件是否存在 ERROR 信息,判断本地操作是否存在错误。

  1. 大对象工具日志

使用 sdblobtool 时,命令执行结束会在当前所在目录生成 "sdblobtool.log" 日志文件,当发生错误时,用户可以进入日志文件查看错误的详细信息。

  1. 常见问题
    以下为使用 sdblobtool 工具时常见问题。

其他问题可参照巨杉数据库错误码文档进行对照
错误码参考文档:
http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190985-edition_id-0

四、总结
巨杉数据库对象存储通过多副本备份机制实现数据安全,并且具备更加灵活的?致性策略,支持全类型数据覆盖,深度整合大数据体系组件。
sdblobtool 是一款用于管理 SequoiaDB 集合中大对象的工具,具有大对象(lob)的导出、导入、迁移的功能,使用便捷高效。

原文地址:https://blog.51cto.com/13722387/2451856

时间: 2024-08-02 03:12:41

【巨杉数据库SequoiaDB】巨杉?具系列之一 | ?对象存储?具sdblobtool的相关文章

【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态

1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管理.以及海量数据管理和高性能访问场景. 集群一般会使用三副本方式以确保数据安全.假若集群发生因硬件故障等原因导致的节点故障或集群异常,数据库管理员应进行系统的分析和诊断,以确保集群正常工作,不会影响用户的正常使用.本文将与大家分享一下基本的 SequoiaDB 数据库诊断方法. 数据库集群诊断 1)

【巨杉数据库SequoiaDB】为“战疫” 保驾护航,巨杉在行动

2020年,我们经历了一个不平静的新春,在这场大的"战疫"中,巨杉数据库也积极响应号召,勇于承担新一代科技企业的社会担当,用自己的行动助力这场疫情防控阻击战! 赋能"战疫"快速响应 巨杉数据库目前服务许多政府部门应用平台,其中在广州市电子政务中心,就管理了全市近1500万人口的海量医保社保相关数据.医保.社保是抗击疫情工作的"弹药库",也是市民面对疫病的"定心丸". 目前,服务该业务的巨杉数据库集群,在2020年实现系统0错误

【巨杉数据库SequoiaDB】巨杉数据库 v5.0 Beta版 正式发布

2020年疫情的出现对众多企业运营造成了严重的影响.面对突发状况,巨杉利用长期积累的远程研发协作体系,仍然坚持进行技术创新,按照已有规划--推进研发工作,正式推出了巨杉数据库(SequoiaDB) v5.0 Beta版. 我们也在这里向大家介绍一下,SequoiaDB v5.0 版本中将会包含哪些激动人心的功能和特性. ARM架构的官方支持 从 3.2 版本开始,SequoiaDB 已经在有限版本中支持 ARM 芯片服务器与国产操作系统.从 SequoiaDB v5.0 开始,我们正式官方支持飞

【巨杉数据库SequoiaDB】企业级和开源领域“两开花”,巨杉引领国产数据库创新

2019年12月15日,OSC 源创会·年终盛典在深圳圆满举行.巨杉数据库作为业界领先的金融级分布式数据库厂商, 获得 "2019年开源数据库先锋企业" 及 "2019 GVP-Gitee最有价值开源项目" 两项殊荣. ? SequoiaDB 巨杉数据库始终坚持自研路线,并于2014年正式开源,是国内最早的开源数据库之一.经过8年的自主研发和技术发展,迭代发展出了技术领先.产品安全稳定.通用性强的金融级产品.今年 SequoiaDB 发布两个主要的版本,近期发布的3

【巨杉数据库SequoiaDB】巨杉Tech | 巨杉数据库的并发 malloc 实现

本文由巨杉数据库北美实验室资深数据库架构师撰写,主要介绍巨杉数据库的并发malloc实现与架构设计.原文为英文撰写,我们提供了中文译本在英文之后. SequoiaDB Concurrent malloc Implementation Introduction In a C/C++ application, the dynamic memory allocation function malloc(3) can have a significant impact on the applicatio

【巨杉数据库SequoiaDB】限额开放!巨杉数据库中级工程师认证计划正式开启!

课程背景和规划介绍 巨杉大学的学习和认证包括SCDA(巨杉数据库认证技术专员),SCDP(巨杉数据库中级工程师认证),SCDE(巨杉数据库高级工程师认证),SCDD(巨杉数据库认证开发者)等计划,未来还将持续推出针对行业用户.数据库运维.开发者和开源社区爱好者更多学习计划,共同拓展行业广度和技术深度. 巨杉大学的 SCDP(巨杉数据库中级工程师认证)计划,直接上手操作使用,直观体验分布式数据库功能技术.在线交互学习测试,根据代码验证测试结果,帮助大家快速掌握分布式数据库运维管理. Talk is

【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

01 概述 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作. OLTP 场景下通常要求具有很高的并发性.并发事务实际上取决于资源的使用状况,原则上应尽量减少

【巨杉数据库SequoiaDB】点燃深秋,巨杉数据库亮相DTC数据技术嘉年华大会

2019年11月15日,第九届数据技术嘉年华大会在北京隆重召开,本次大会以 "开源 ? 智能 ? 云数据 - 自主驱动发展 创新引领未来" 为主题,探索数据价值,共论智能未来.SequoiaDB 巨杉数据库作为领先的金融级分布式关系型数据库,为大家带来新一代分布式数据库的发展趋势和特性,也通过分享巨杉的丰富金融级实践经验,帮助大家充分了解分布式数据库当前的应用场景. ****分布式数据库发展趋势 在上午主会场的分享中,巨杉数据库联合创始人王涛,为大家带来了题为"新一代分布式数

【巨杉数据库SequoiaDB】巨杉Tech | 分布式数据库Sysbench测试最佳实践

引言 作为一名DBA,时常需要对某些数据库进行一些基准测试,进而掌握数据库的性能情况.本文就针对sysbench展开介绍,帮助大家了解sysbench的一般使用方法. ? sysbench简介 什么是基准线测试 所谓基准测试,就是通过对数据库的性能指标进行定量的.可重复的和可对比的测试.基准线测试可以理解为一种针对系统的压力测试.但该测试并不关心业务逻辑,因此测试相对简单和直接.通过测试可分析在当前配置下(包括硬件配置,OS,及数据库参数设置等)应用的性能表现,实现不同应用之间的比较. 具体而言