非关系型数据库的实现方法、装置、存储介质和设备制造方法及图纸

技术编号:21832449 阅读:116 留言:0更新日期:2019-08-10 17:55
本申请提供一种非关系型数据库的实现方法、装置、存储介质和设备。一种非关系型数据库的实现方法,由C#语言实现,方法包括:采用C#语言创建非关系型数据库;获取预存储的数据,并将数据按照预设规则进行分类;根据预设规则在非关系型数据库中创建相应的数据表;创建类;根据数据表的结构定义类的对象;创建构造函数,为对象赋值,以实现将数据写入数据表中;序列化对象,将对象转化成字节数组,以使写入数据表中的数据持久化;以及反序列化字节数组,以使字节数组重新转换成对象,以读取存储在非关系型数据库中的数据实现了在采用C#编程语言编写的程序中嵌入非关系型数据库,并且实现数据的持久性存储。

Realization method, device, storage medium and equipment of non-relational database

【技术实现步骤摘要】
非关系型数据库的实现方法、装置、存储介质和设备
本申请涉及数据处理
,特别是涉及一种非关系型数据库的实现方法、装置、存储介质和设备。
技术介绍
数据库(Database)是按照数据结构来组织、存储和管理数据的数据处理系统,随着互联网的发展,数据库的应用更加广泛,其性能要求也越来越高。目前数据库系统必须具备较高的事务处理速度和应用可靠性。非关系型数据库,即非关系型数据库,在相关技术中,非关系型数据库主要有以下几种:1、Column-Oriented,面向检索的列式存储,其存储结构为列式结构。2、Key-Value,面向高性能并发读/写的缓存存储,其结构类似于数据结构中的Hash表,每个Key分别对应一个Value,能够提供非常快的查询速度、大数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作。3、Document-Oriented,面向海量数据访问的文档存储,这类存储的结构与Key-Value非常相似,也是每个Key分别对应一个Value,但是这个Value主要以JSON(JavaScriptObjectNotations)或者XML等格式的文档来进行存储。这种存储方式可以很方便地被面向对象的语言所使用。目前存在很多流行的非关系型数据库,例如Redis、Memcached等,安装配置过程较为繁琐,且安装完成后应用程序需要通过TCP连接进行访问,不支持嵌入到采用C#语言编写的程序中,如何将非关系型数据库嵌入采用C#语言编写的程序中,且能实现持久性数据存储,是亟待解决的问题。
技术实现思路
本申请提供一种非关系型数据库的实现方法、装置、存储介质和设备,旨在解决现有技术中的不足。本公开示例的第一方面,提供一种非关系型数据库的实现方法,由C#语言实现,所述方法包括:采用C#语言创建至少一个非关系型数据库;获取预存储的数据,并将所述数据按照预设规则进行分类;根据所述预设规则在所述非关系型数据库中创建相应的数据表,所述数据表至少包括一个;创建类;根据所述数据表的结构定义所述类的对象;创建构造函数,为所述对象赋值,以实现将所述数据写入所述数据表中;序列化所述对象,将所述对象转化成字节数组,以使写入所述数据表中的所述数据持久化;以及反序列化所述字节数组,以使所述字节数组重新转换成对象,以读取存储在所述非关系型数据库中的所述数据。可选地,所述根据所述预设规则在所述非关系型数据库中创建相应的数据表的步骤包括:创建所述数据表的表格名称;添加所述数据表的表索引;以及在所述数据表的表结构中创建预设维度的表记录散列;其中,每一个所述表记录散列中设定有若干链表,且若干所述链表之间通过Key索引依次链接。可选地,所述方法还包括:对所述数据进行管理操作;所述管理操作包括:对所述数据表进行新增记录、查询记录、修改记录和删除记录操作中的至少一种;或在所述数据库中创建新数据表。可选地,所述新增记录操作包括:获取预插入的新记录;计算所述新记录的Key值的哈希值;通过所述新记录的Key值的哈希值,采用取余法计算所述新记录的Key值对应的第一散列下标;将所述新记录存储至所述第一散列下标对应的所述链表中。可选地,所述查询记录操作包括:计算预查询记录的Key值的哈希值;通过所述预查询记录的Key值的哈希值,采用取余法计算所述预查询记录的Key值对应的第二散列下标;轮询所述第二散列下标对应的所述链表中所有记录的Key值,直至匹配出所述预查询记录后,返回结果集。可选地,所述修改记录的操作包括:计算预修改记录的Key值的哈希值;通过所述预修改记录的Key值的哈希值,利用取余法计算所述预修改记录的Key值对应的第三散列下标;轮询所述第三散列下标对应的所述链表中所有记录的Key值,直至匹配出所述预修改记录;获取用于替换所述预修改记录的替换记录;判断所述替换记录的数据所述预修改记录的数据的大小;若所述替换记录的数据大于所述预修改记录的数据,则申请一块新区域写入所述替换记录的数据,并将所述替换记录的Value起始位置修改为所述预修改记录的Value起始位置,以及修改所述替换记录的的Value长度;以及若所述替换记录的数据不大于所述预修改记录的数据,则直接用所述替换记录覆盖所述预修改记录,并修改所述替换记录的的Value长度。可选地,所述删除记录操作包括:计算预删除记录的Key值的哈希值;通过所述预删除记录的Key值的哈希值,利用取余法计算所述预删除记录的Key值对应的第四散列下标;轮询所述第四散列下标对应的所述链表中所有记录的Key值,直至匹配出所述预删除记录;将存储所述预删除记录的Key值中的有效位置为无效。本公开示例的第二方面,提供一种嵌入式数据库的实现装置,用于采用C#语言嵌入所述非关系型数据库,所述装置包括:非关系型数据库创建模块,被配置为采用C#语言创建至少一个非关系型数据库;数据获取模块,被配置为获取预存储的数据,并将所述数据按照预设规则进行分类;数据表创建模块,被配置为根据所述预设规则在所述非关系型数据库中创建相应的数据表,所述数据表至少包括一个;类创建模块,被配置为创建类;对象定义模块,被配置为根据所述数据表的结构定义所述类的对象;构造函数创建模块,被配置为创建构造函数,为所述对象赋值,以实现将所述数据写入所述数据表中;序列化模块,被配置为序列化所述对象,将所述对象转化成字节数组,以使写入所述数据表中的所述数据持久化;以及反序列化模块,被配置为反序列化所述字节数组,以使所述字节数组重新转换成对象,以读取存储在所述非关系型数据库中的所述数据。本公开示例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例第一方面所述的方法中的步骤。本公开示例的第四方面,提供一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现如本申请实施例第一方面所述的方法中的步骤。与现有技术相比,采用上述技术方案,本申请至少能够达到如下技术效果:在采用C#编程语言编写的程序中嵌入非关系型数据库,随后获取预存储的数据,并将预存储的数据按照预设规则进行分类,按照预设规则创建相应的数据表,使得创建的数据表能按照所述预设规则容纳存储数据,接着创建类,初始化类的对象,并创建构造函数,为对象赋值,以在创建完成的所述数据表中写入所述数据,然后再将对象序列化,将对象转化成字节数组,以使所述数据存储在硬盘上,从而使得写入数据表中的数据持久化;反序列化所述字节数组,以使存储在所述非关系型数据库中的所述数据能够被读取或重新赋值。实现了在采用C#编程语言编写的程序中嵌入非关系型数据库,并且实现了数据的持久性存储。本公开的其他特征和优点将在具体实施方式部分予以详细说明。附图说明图1是本申请一实施例提供的一种嵌入式数据库的实现方法的流程图;图2是本申请一实施例提供的一种嵌入式数据库的实现方法构建的数据库内部的表结构的原理示意图;图3是本申请一实施例提供的一种嵌入式数据库的实现方法构建的数据库文件的物理存储的结构的原理示意图;图4是本申请一实施例提供的一种嵌入式数据库的实现装置的示意图;图5是本申请一实施例提供的一种嵌入式数据库的性能测试的耗时试验结果。具体实施方式为使本申请的上述目的、特征和本文档来自技高网...

【技术保护点】
1.一种非关系型数据库的实现方法,其特征在于,由C#语言实现,所述方法包括:采用C#语言创建至少一个非关系型数据库;获取预存储的数据,并将所述数据按照预设规则进行分类;根据所述预设规则在所述非关系型数据库中创建相应的数据表,所述数据表至少包括一个;创建类;根据所述数据表的结构定义所述类的对象;创建构造函数,为所述对象赋值,以实现将所述数据写入所述数据表中;序列化所述对象,将所述对象转化成字节数组,以使写入所述数据表中的所述数据持久化;以及反序列化所述字节数组,以使所述字节数组重新转换成对象,以读取存储在所述非关系型数据库中的所述数据。

【技术特征摘要】
1.一种非关系型数据库的实现方法,其特征在于,由C#语言实现,所述方法包括:采用C#语言创建至少一个非关系型数据库;获取预存储的数据,并将所述数据按照预设规则进行分类;根据所述预设规则在所述非关系型数据库中创建相应的数据表,所述数据表至少包括一个;创建类;根据所述数据表的结构定义所述类的对象;创建构造函数,为所述对象赋值,以实现将所述数据写入所述数据表中;序列化所述对象,将所述对象转化成字节数组,以使写入所述数据表中的所述数据持久化;以及反序列化所述字节数组,以使所述字节数组重新转换成对象,以读取存储在所述非关系型数据库中的所述数据。2.根据权利要求1所述的方法,其特征在于,所述根据所述预设规则在所述非关系型数据库中创建相应的数据表的步骤包括:创建所述数据表的表格名称;添加所述数据表的表索引;以及在所述数据表的表结构中创建预设维度的表记录散列;其中,每一个所述表记录散列中设定有若干链表,且若干所述链表之间通过Key索引依次链接。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:对所述数据库进行管理操作;所述管理操作包括:对所述数据表进行新增记录、查询记录、修改记录和删除记录操作中的至少一种;或在所述数据库中创建新数据表。4.根据权利要求3所述的方法,其特征在于,所述新增记录操作包括:获取预插入的新记录;计算所述新记录的Key值的哈希值;通过所述新记录的Key值的哈希值,采用取余法计算所述新记录的Key值对应的第一散列下标;将所述新记录存储至所述第一散列下标对应的所述链表中。5.根据权利要求3所述的方法,其特征在于,所述查询记录操作包括:计算预查询记录的Key值的哈希值;通过所述预查询记录的Key值的哈希值,采用取余法计算所述预查询记录的Key值对应的第二散列下标;轮询所述第二散列下标对应的所述链表中所有记录的Key值,直至匹配出所述预查询记录后,返回结果集。6.根据权利要求3所述的方法,其特征在于,所述修改记录的操作包括:计算预修改记录的Key值的哈希值;通过所述预修改记录的Key值的哈希值,利用取余法计算所述预修改记录的Key值对应的第三散列下标;轮询所述第三散列下标对应的所述链表...

【专利技术属性】
技术研发人员:钱旭琛
申请(专利权)人:新奥特北京视频技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1