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

2024-01-11 14:18

本文主要是介绍方正智睿NoSQL数据库总体介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方正智睿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和网络通信协议,接收用户来自网络的请求,调度工作线程处理用户请求(通常是调用查询引擎或存储引擎),返回结果给用户,并完成统一的异常和错误处理。

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

 

 

这篇关于方正智睿NoSQL数据库总体介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/594643

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

查询Oracle数据库表是否被锁的实现方式

《查询Oracle数据库表是否被锁的实现方式》本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,... 目录查询oracle数据库表是否被锁1、查询锁表的会话、人员等信息2、根据 object_id查询被