云网牛站
所在位置:首页 > Linux云数据库 > SequoiaDB基本问答帮助

SequoiaDB基本问答帮助

2018-05-19 16:32:35作者:巨杉软件稿源:云网牛站整理

SequoiaDB基础问答

SequoiaDB是什么类型的数据库?

SequoiaDB是文档类NoSQL数据库。

SequoiaDB基本问答帮助

SequoiaDB存在表吗?

SequoiaDB中存放数据记录的对象叫做集合,对应到关系型数据库的“表”。集合中保存的记录叫做“文档”,对应到关系型数据库的“行”。每个文档中存在多个字段,对应到关系型数据库的“列”。

集合与表的本质区别在于不需要创建时指定数据模型。集合中的每个文档均保存自身的数据结构,因此每个文档之间可以拥有完全不同的字段。用户可以通过命令行、界面或程序向已有记录中添加、删除或更改字段。

SequoiaDB是支持多并发吗?

SequoiaDB支持多并发操作。

SequoiaDB支持SQL吗?

SequoiaDB数据库引擎不支持SQL,但是可以通过PostgreSQL连接器与PG对接,作为PG的外部表,通过PG实现标准SQL的支持。

SequoiaDB支持什么开发语言?

SequoiaDB支持C、C++、Java、.Net、PHP与Python。

SequoiaDB支持强一致吗?

SequoiaDB的一致性为可配置一致性级别。当读写节点均为主节点时,或集合参数ReplSize设置为分区组内节点数量时,系统为强一致性。默认情况下系统为最终一致性。

SequoiaDB支持事务吗?

默认情况下SequoiaDB关闭事务的支持,用户可以通过启动数据库参数--transactionon true启动数据节点的事务支持。默认情况下SequoiaDB支持记录级别的原子性。

SequoiaDB和关系型数据库有什么区别?

SequoiaDB为文档类NoSQL数据库,数据库引擎自身不支持SQL。同时数据模型为弱模式,不需要在创建集合时指定集合的数据模型。

SequoiaDB安装需要什么硬件?

SequoiaDB推荐使用x86 PC服务器,支持普通硬盘与SSD。一般来说,推荐的生产环境使用3台或以上物理服务器互为备份,保证数据的可用性和可靠性。为了保障性能,一般不建议生产环境的SequoiaDB运行在虚拟机上。

SequoiaDB用什么语言开发的?

SequoiaDB使用C++语言开发。

SequoiaDB支持什么操作系统?

SequoiaDB支持64位Linux平台,包括Redhat、Suse、Ubuntu、Centos。

SequoiaDB支持32位平台吗?

SequoiaDB不支持32位平台。

 

SequoiaDB操作

怎样插入一条记录?

在sdb命令行下使用

db.collectionspace.collection.insert ( { hello: "world" } ) ;

怎样删除符合某个条件的记录?

在sdb命令行下使用

db.collectionspace.collection.remove ( { hello: "world" } ) ;

该命令删除集合中所有hello字段为"world"字符串的记录。

怎样更新符合某个条件的记录?

在sdb命令行下使用

db.collectionspace.collection.update ({hello: 1}, { hello: "world" } ) ;

该命令更新集合中所有hello字段为"world"字符串的记录至1。

怎样查询符合某个条件的记录?

在sdb命令行下使用

db.collectionspace.collection.find ({ hello: "world" } ) ;

该命令查找集合中所有hello字段为"world"字符串的记录。

怎样做聚集操作?

使用aggregate命令完成,请参见信息中心。

怎样使用事务?

用户首先需要确保所有参与事务的集合所在的数据节点(包括主节点与从节点)均启动了数据库配置参数transactionon。

在命令行中使用transBegin()与transCommit()或transRollback()可以启动和停止事务操作。事务操作启动后所有的增删改操作均作为该事务的一部分完成,直到该会话提交、回滚、或断连。

事务开始后连接断连意味着该事务回滚。

事务中记录是否锁定?

在事务开始后,提交或回滚前,事务内所有被修改的记录会被互斥锁定,不能由其他会话所修改,但是脏数据信息可以被其他会话读取。

SequoiaDB是否支持MapReduce?

SequoiaDB自身不提供MapReduce的支持,但是可以通过Hadoop Connector与Hadoop连接,使用Hadoop的MapReduce执行框架。

怎样使用SQL访问SequoiaDB?

可以通过PostgreSQL和SequoiaDB提供的PG FDW驱动,在PG中创建SequoiaDB的外部表,通过PG作为SQL执行引擎来运行SQL查询。

 

SequoiaDB分片

怎样建立分片集合?

在建立集合时指定ShardingKey、ShardingType可以创建分片集合:

db.foo.createCL("bar",{ShardingKey:{"age":1},ShardingType:"hash",Partition:1024,ReplSize:1,Compressed:true})

能不能指定访问某个特定的分片?

用户无法手工指定访问特定的某个分片。所有的数据访问必须通过协调节点完成,协调节点会解析用户的操作并判断该操作需要被发送至哪些分片。

SequoiaDB支持哪些分片机制?

SequoiaDB支持范围分片和散列分片。

SequoiaDB是否支持自动分片?

SequoiaDB可以通过在配置自动分片的域中创建集合,使集合在创建时自动被切分到该域所包含的数据分片中。该机制仅支持散列分片机制。

怎样对分片进行手工切分?

用户可以对集合调用split函数进行手工切分。

能否直接连接访问特定分片?

一般来说,SequoiaDB不建议用户直接连接到数据节点操作。在某些特殊情况需要时,用户可以直接连接到数据节点的调试端口上进行调错等操作(一般推荐在客服指导下使用,否则可能会造成数据损坏或不一致的发生)。

分片环境中是否能够使用事务?

事务支持分片环境。SequoiaDB在分片环境下使用二段提交。

 

SequoiaDB集合分区

什么是集合分区?

集合分区类似关系型数据库的表分区概念,在集合内按照指定字段的范围划分出分区。每个分区拥有独立的元数据、数据段与索引。请求访问到指定分区的范围时可以避免扫描其他分区中的数据。

怎样创建分区集合?

首先使用createCL命令创建主分区集合,必须指定IsMainCL参数。然后对于主分区集合可以使用attachCL将普通用户分区集合并入主分区集合,并入时需指定该分区的范围。

怎样创建一个既分片又分区的集合?

当并入主分区集合的子集合为分片集合时,该主集合被认为是分区与分片并存的集合。

能不能指定访问某个特定的分区?

SequoiaDB分区集合不支持指定分区的访问。协调节点会判断每个请求是否可以被优化到特定的几个分区,之后会将请求仅发送至指定分区。

SequoiaDB支持哪些分区机制?

SequoiaDB集合分区仅支持范围分区机制。

 

SequoiaDB运维

SequoiaDB支持什么样的存储方式?

SequoiaDB支持本地盘存储和SAN存储。一般来说推荐本地硬盘存储。

不建议将数据库部署在NAS环境中。

SequoiaDB是否支持HDFS?

SequoiaDB不支持HDFS文件系统,而使用本地POSIX文件系统。

SequoiaDB是否需要设置缓冲池?

SequoiaDB使用文件系统映射的方式(mmap)将数据文件映射至进程。因此使用文件系统缓冲作为内存管理器,而不需要手工设置数据库缓冲池。

SequoiaDB日志文件大小如何设置?

SequoiaDB日志文件大小的设置应取决于事务操作的时常,与网络环境的压力。一般来说,推荐使用硬盘空间的5%作为日志空间。

怎样判断内存不足?

当操作系统监控显示过多的Page Faults发生时,可能意味着数据库需要将大量的数据文件读入内存,代表内存空间可能需要增大。

在数据库启动阶段用户可能会看到大量的Page Faults,主要由于数据首先要被读入文件系统内存。这种情况下大量的Page Faults不一定意味着内存不足。

怎样判断是否需要建立新的索引?

当数据库快照发现大量的TotalRead,但TotalSelect增量较小时,则意味着系统读入大量数据但是只有少量记录符合查询条件,代表着系统存在非最优查询,可能需要添加合适的索引。

如何计算集合空间大小?

使用集合空间快照可以看到集合空间大小。

SequoiaDB是否支持二级索引?

SequoiaDB支持多索引,每个集合可以创建最多64个不同索引。

SequoiaDB为什么需要创建索引?

创建合适的索引会提升查询性能,减少I/O访问次数。

SequoiaDB为什么需要复合索引?

当大量的查询需要对固定的多个字段进行过滤时,使用复合索引能够迅速定位到符合给定条件的记录,提升索引扫描的性能。

为什么唯一索引必须包含分片字段?

SequoiaDB使用无共享架构,因此每个分片之间不感知其他分片的数据。因此如果唯一索引不包含分片字段,则每个数据分片无法判定该记录是否存在在其他分片中。

为什么正则表达式匹配性能慢?

正则表达式的匹配逻辑本身就比较复杂,相比起数值和字符串的匹配开销大很多。同时正则表达式无法使用索引,因此应用程序应当尽可能避免使用正则表达式匹配。

怎样判断查询是否使用了索引?

使用explain命令可以判断一个查询是否使用了索引。

怎样手工修改SequoiaDB的配置文件?

在SequoiaDB的安装目录(默认为/opt/sequoiadb/)的conf/local子目录下,每个节点所对应的端口号均作为子目录存在。每个子目录中的sdb.conf文件即为该节点的配置文件。

 

SequoiaDB问题诊断

怎样判断一个操作请求是否成功?

在命令行中,失败的操作会返回错误码。对于大部分API来说,每个命令会返回rc码,0代表正常,其余数值代表警告或失败。

SequoiaDB的诊断日志文件存在什么地方?

SequoiaDB的节点诊断日志文件存在于每个节点的diagpath中。配置参数可以在每个节点对应的配置文件中获得。默认情况下,节点诊断日志文件存在于数据库节点目录下的diaglog目录中,数据库节点目录在节点配置文件的dbpath参数中指定。

SequoiaDB Cluster Manager集群管理日志在安装目录下的conf/log目录中存在。默认安装路径为/opt/sequoiadb。

怎样解读SequoiaDB数据存储文件格式?

用户可以使用sdbinspt检查和格式化数据库集合空间的数据与日志文件。

 

相关主题

SequoiaDB快速入门教程

精选文章
热门文章