方正智睿NoSQL数据库总体介绍

作者:dazhao_cn  发布日期:2013-06-21 10:13:52

方正智睿NoSQL数据库总体介绍

方正智睿NoSQL数据库管理系统是一个面向海量NoSQL数据存储和管理的数据库服务器软件,它可以高效地存储和管理XML数据,key-value数据,并且让用户通过标准的查询语言和高效易用的编程接口来访问这些NoSQL数据。

主要功能

海量XML数据的高效存储和访问

与开源的XML数据库不同,智睿数据库可以单机管理TB级别的XML数据以及支持对此规模的XML数据的查询和更新。XML文档在数据库系统中不是简单地作为一个整体存放,而是被拆分为节点来存储,以便达到高效的存储,查询和更新效率;在查询执行时,排序,去重,连接,集合操作等查询处理步骤都会自适应地根据它所操作的数据量的规模在内存或者外存中执行,兼顾运行效率和系统资源限制。

 

实现了标准的XQUERY1.0和XPATH2.0, XQuery Update和XQuery Fulltext 语言作为查询语言,根据文档的存储方案实现高效的查询和更新。利用各种索引实现查询的高效执行。在完全支持标准查询一样的基础之上,根据性能和功能需求扩展查询语言。

完整的数据库系统通用功能

除了最基本的XML和key-value数据的增删改查,以及容纳这些数据的容器和数据表及其索引的创建,删除,截断,dump/load等功能外,智睿NoSQL数据库也支持完整的数据库管理功能,例如backup(full, incremental)/restore,批量数据操作,表空间管理,数据库管理,大对象存储和访问,参数配置,完整的数据安全与访问控制功能,以及文档数据库特有的逻辑数据模型的维护和管理。还支持丰富的编程接口(C++, Java, C#, shell脚本),图形化的查询客户端和管理客户端,DBA可以通过web界面方便地管理智睿数据库服务器的运行实例。支持32位和64位的Windows和linux系列操作系统平台,以及支持任意文字编码的XML文档文本和查询文本,支持基于gnu gettext的国际化。未来还会支持跨体系结构(big/little endian)的混合部署和体系结构无关的数据格式。

遵循国际标准

遵循W3C制定的XML标准家族的所有相关标准。具体包括XML1.0/XML1.1,XML Namespace,DTD/XML Schema,XQuery1.0/XPath2.0,XQuery Update和XQuery Fulltext,以及其他XML附属协议例如XLink/XPointer/XInclude等。查询语言使用 XPath/XQuery, XQueryUpdate; 连接协议使用XQC/XQJ,并且支持当今国际上主流XML数据库的功能集合。

支持Key-Value数据管理

智睿NoSQL数据库使用一个key-value存储引擎来管理所有的NoSQL数据。这个存储引擎实现了非常简单灵活通用的key-value的数据模型,支持细粒度(行级)的并发控制,完整的事务ACID属性实现。我们把存储引擎的key-value数据管理功能开放给用户,这样用户可以将任意格式和内容的数据存储在本系统中。 Key-value数据没有任何标准规定的格式和数据模型,其格式内容和意义完全由用户处理,非常灵活。但用户只能通过API来访问这些key-value数据,不能通过任何查询语言来访问。目前的大数据时代有很多这样的数据库,比如hbase,bigtable,redis,Berkeley db等。智睿数据库的key-value存储引擎与这几个数据库相比,有很多特色,后面的文章中会介绍到。

数据库集群

支持基于事务日志复制的主-从数据库集群,主节点完成数据更新和查询,主机节点数据更新的事务日志被实时复制到备机并且由备机重做日志以便更新备机数据,而备机节点只可以处理只读的用户数据查询请求。将查询负载分散到多个备机节点,就可以让主机处理数据更新负载,这样不仅可以提升系统全局的吞吐率,提高可扩展性,还可以提高可靠性。

当主机节点停止运行时(断电,软硬件故障,网络故障,维护等),所有备机可以自动完成主节点选举,系统整体不会终止服务。

系统功能扩展与增强

为了方便用户使用或者提升系统性能的目标实现了很多有特色的功能。具体包括方便用户对文档进行分类管理的逻辑数据模型;供xquery fulltext全文检索使用的可自定义语料库,包括中文分词词库,停用词表,thesaurus词表等;以及XML文档版本管理,外部执行SQL查询,查询profiling/explaining,支持事务aci属性的xquery查询结果集缓存等

系统总体架构

智睿NoSQL数据库系统主要由存储引擎,查询引擎,服务器框架三大子系统构成。下图是智睿NoSQL系统的架构图:

存储引擎以统一的key-value数据模型提供对数据的插入,扫描(scan),更新和删除操作,并且实现数据库事务管理和事务ACID属性和基于日志复制的replication及其主节点选举,还提供了供上层模块使用的通用功能,比如多层次的内存管理,sequence,排序,临时表,mutex/spinlock等基础设施;由于存储引擎的通用性,事实上可以根据需要实现更多的数据模型及其查询引擎,例如可以实现json,rdf graph等数据模型及其查询引擎。

 

XML查询引擎实现 XQuery/XPath/XQueryUpdate/XQuery Fulltext 这几种查询语言,包括对这些查询语言的解析,优化和执行,以及xml数据与存储引擎的key-value数据的双向转换。同时实现了基于XQuery数据模型的节点存储和访问机制,将xml数据按照节点来存储为二进制格式,Xdm定义的7种节点中,存储元素节点和文档节点,每个节点对应于一个数据行。其他5种节点存储在它们的父节点(必然是元素节点或者文档节点)中。 这样智睿XML数据库就是一个native XML数据库。将XML数据拆分为节点存储可以大大提高查询和更新的执行效率,因为这样避免了反复的XML文档解析,可以迅速得到目标节点,特别是在XML文档很大的时候性能优势很明显。

 

访问控制和元数据管理模块使用存储引擎管理它们的元数据,将内部定义格式的数据存储在元数据表中。访问控制模块处理用户的访问控制配置命令,以及所有来自所有数据访问模块的访问控制检查。元数据管理模块实现一个逻辑数据模型,方便用户使用类似文件系统目录树的方式组织文档和文档集合(目录)。

 

服务器框架负责把存储引擎和查询引擎包装成为一个应用程序(服务器进程)来运行,实现客户端连接API和网络通信协议,接收用户来自网络的请求,调度工作线程处理用户请求(通常是调用查询引擎或存储引擎),返回结果给用户,并完成统一的异常和错误处理。

在后面的文章中,我会依次讲述存储引擎,查询引擎和服务器框架的详细功能和设计。


Tag标签: NoSQL   数据库  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规