SequoiaDB是一款分布式文档型数据库,是国内为数很少拥有自主知识产权的开源数据库。目前SequoiaDB已经在GitHub上开源。数据库
SequoiaDB主要的功能特色是支持分布式事务、2003标准SQL、同时提供文档存储引擎和块存储引擎、与大数据产品有良好的整合。并发
2.1 API开发接口框架
SequoiaDB的API开发接口,是功能最全的开发接口,目前已经支持C、C++、Java、Scala、Python、C#、Perl、Javascript多种开发语言。运维
SequoiaDB的API支持对数据库作全部操做,包括:增删查改、数据库扩容、数据迁移、数据库节点启停、增减集合空间和集合、监控数据库状态信息等。分布式
SequoiaDB的API开发风格偏向对象式操做,以Java驱动为例,向数据库写入一条记录,代码以下。函数
图 1高并发
可是C语言的API驱动因为开发语言的限制,开发方式仍是遵循面向过程式开发,如下是C语言驱动向数据库写入一条记录的代码。oop
图 2性能
SequoiaDB的安装包已经包含了大部分经常使用的API驱动,用户能够在安装数据库后直接使用。用户也能够经过SequoiaDB官网下载各个开发语言的驱动包。学习
2.2 大数据开发接口
SequoiaDB和不少大数据产品都有较好的整合,例如:Hadoop MapReduce、Hive、Spark RDD、SparkSQL,用户能够经过扩展大数据产品的存储层,使得存储在SequoiaDB的数据为大数据提供源数据。
简而言之,SequoiaDB和大数据产品的关系就是存储和计算框架的关系。
SequoiaDB和各种大数据产品的对接方式都是经过配置大数据产品的链接方式进行,例如SequoiaDB和Spark的对接,就是对Spark的spark-env.sh 配置文件增长SPARK_CLASSPATH参数。
SPARK_CLASSPATH="/opt/sequoiadb/sequoiadb-driver-SNAPSHOT.jar:/opt/sequoiadb/spark-sequoiadb-SNAPSHOT.jar"
当大数据产品和SequoiaDB完成了对接,那么后续的使用和开发流程与使用原生的HDFS或者本地文件没有本质区别。
2.3 SQL开发接口
SequoiaDB的SQL开发接口包含两种方式,一种是社区版的基于PostgreSQL扩展的SQL引擎,另一种是由SequoiaDB公司提供的SequoiaSQL产品,二者的SQL语法都使用PostgreSQL的SQL语法,支持2003 SQL规范,而且都支持存储过程、事务功能和JDBC服务。
可是二者在复杂SQL关联实现机制上有所不一样,社区版本的PostgreSQL仅支持Hash Join关联方式,而SequoiaSQL同时支持NL Join和Hash Join两种关联方式,可以更好适用在复杂的SQL关联场景。
开发者如何选择SequoiaDB开发接口
3.1 实时数据处理
在实时处理场景,一般都是对数据库作高并发的增、删、查、改操做,此时须要数据库的索引功能支持,因此开发者能够采用API接口或者是SQL接口,不建议使用大数据相关开发接口作应用开发。
另外一方面,实时数据处理也有多是由流式处理引擎+数据库共同处理,因此开发者在开发流式处理程序时,须要结合SequoiaDB的驱动程序进行开发,例如Spark Streaming的开发程序一般使用Scala语言和Java语言,若是是Store流处理引擎,开发者更可能是选择Java做为开发语言。
3.2 跑批数据处理
若是开发者要使用SequoiaDB作跑批类数据处理,应该选择SequoiaDB与大数据产品相结合的技术方案。
若是发者但愿使用SQL命令作数据处理,那么能够考虑采用SparkSQL或者Hive作开发。若是开发者须要处理的业务场景很是复杂,普通SQL很难知足开发需求,那么能够考虑采用MapReduce或者RDD开发接口,由开发人员直接根据业务逻辑使用程序实现相应的数据处理流程。
3.3 API or SQL
开发者在选择SequoiaDB的开发方式时,一般出现选择困难症,到底是选择使用API仍是SQL。其实这个问题没有绝对的答案,主要要看开发者将要实现的场景。
首先开发者应该了解两种接口各自的优缺点。
API 优势
1. 性能优,全部的开发接口中性能最高的
2. 支持操做块存储
3. 支持数据库全部操做接口,包括监控、启停节点等数据库运维接口
API 缺点
1. 开发方式与传统的JDBC不一样,须要开发者适应
2. 对多表关联支持很差,须要开发者使用程序完成表关联操做
3. 缺少数据处理函数,大部分须要用户使用程序实现
SQL 优势
1. 符合传统开发者习惯,学习成本低
2. 提供多表关联功能
3. 提供丰富数据处理函数,开发相对便捷
4. 作原有系统程序迁移,开发成本低
SQL 缺点
1. 性能相对API有所降低,降低幅度大概在10%-15%
2. 对全表作count、group by、sort等统计操做性能相对较差
3. 不支持直接操做SequoiaDB的块存储
4. 开发者须要同时维护SequoiaDB中的集合和SQL引擎中的table信息
5. 没法调用数据库的运维相关命令
因此根据以上特性,开发者能够在如下场景选择API进行系统开发
(1) 最求性能最大化
(2) 新系统开发
(3) 业务场景相对简单的场景使用API
(4) 须要使用块存储的场景
在如下场景选择SQL进行系统开发
(1) 须要使用复杂关联查询
(2) 须要使用多种数据处理函数
(3) 对原有系统进行应用迁移
(4) 系统不会常常对全表作count、group by和sort这类统计操做
因为SequoiaDB的开发接口相对过去传统的关系型数据库多,因此本文经过对SequoiaDB各类接口的技术特性向广大开发者进行介绍,但愿可以让开发者更加了解SequoiaDB的开发特性,而后能够在不一样的开发场景中选择适合的接口进行开发,以得到性能最优的效果。