CN111488339B - 基于Node.JS的NoSQL数据库、建立及处理方法 - Google Patents
基于Node.JS的NoSQL数据库、建立及处理方法 Download PDFInfo
- Publication number
- CN111488339B CN111488339B CN201910071601.4A CN201910071601A CN111488339B CN 111488339 B CN111488339 B CN 111488339B CN 201910071601 A CN201910071601 A CN 201910071601A CN 111488339 B CN111488339 B CN 111488339B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- database
- file
- adopting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims description 13
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000006870 function Effects 0.000 claims description 36
- 238000002715 modification method Methods 0.000 claims description 24
- 238000012986 modification Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 10
- 238000012163 sequencing technique Methods 0.000 claims description 10
- 230000001360 synchronised effect Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 3
- 238000013500 data storage Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 3
- 238000010367 cloning Methods 0.000 description 3
- 230000002688 persistence Effects 0.000 description 2
- 241000282375 Herpestidae Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及基于Node.JS的NoSQL数据库、建立及处理方法。目的是提供基于Node.JS的NoSQL数据库,不依赖第三方应用实现基于内存和文件的非关系型数据库存储。方案:S1、采用Node.JS原生API创建一个目录以存储数据库文件;S2、检测数据表对应的数据文件是否存在于目录中,若是,执行S5;若否,执行S3;S3、采用Node.JS原生API在内存中创建一个数组以存放数据,创建数据记录初始索引;S4、采用Node.JS原生API将数据表对应数据转换为JSON格式字符串,存储至目录下的数据文件中;S5、采用Node.JS原生API将数据文件读取到内存,转换为JSON格式存放。本发明主要用于数据库系统领域。
Description
技术领域
本发明涉及一种基于Node.JS的NoSQL数据库,该数据库的建立方法及数据处理方法,主要应用于数据库系统技术领域。
背景技术
目前Node.JS下大部分NoSQL数据库都是作为第三方应用引入的,如MongoDB(MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案)、Redis(Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。)等。
NoSQL数据库是所有非关系型数据库的统称。NoSQL不使用SQL(Structured QueryLanguage的缩写,含义为结构化查询语言)作为查询语言,不遵循经典RDBMS(RelationalDatabase Management System,关系数据库管理系统)原理。数据不需要固定的数据表模式,可以避免SQL中经常会用到的JOIN操作,具有水平可扩展性等特征。
Node.JS是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎(Google开源的、高性能的JavaScript引擎,由C++编写,并用在Google开源浏览器Chrome中)进行了封装。Node.JS对一些特殊用例进行优化,提供替代的API(应用程序编程接口),使得V8在非浏览器环境下运行得更好。
目前常用的非关系型数据库,如MongoDB在使用过程中存在以下问题:环境搭建比较麻烦,配置用户,迁移数据等;占用磁盘空间比较大;在Node.JS下操作MongoDB的中间件MongoDB或mongoose(在node.JS异步环境下对mongodb进行便捷操作的对象模型工具)操作不方便。
发明内容
本发明的目的在于克服上述存在的问题,提供一种基于Node.JS的NoSQL数据库,在Node.JS环境下不依赖第三方应用(如MongoDB、Redis等)实现基于内存和文件的非关系型数据库存储。
本发明的目的是通过如下技术方案来完成的,
基于Node.JS的NoSQL数据库的建立方法,包括:
S1、采用Node.JS原生API(应用程序编程接口)创建一个拥有读写权限的目录用于存储数据库文件,该目录位于磁盘上;
S2、检测数据表对应的数据文件是否存在于所述目录中,若是,执行步骤S5;若否,执行步骤S3;
S3、采用Node.JS原生API根据数据表名称在内存中创建一个数组用于存放数据,并基于数组创建数据记录的初始索引;
S4、采用Node.JS原生API将数据表对应数组数据转换为JSON格式的字符串,并采用Node.JS原生API将该字符串存储至所述目录下的数据文件中,形成数据表对应的数据文件;
S5、采用Node.JS原生API将数据文件以文件的方式读取到内存中;
S6、采用Node.JS原生API将S5中读取到的文件转换为JSON格式的数组并存放在内存中。
作为优选,所述目录下的数据文件包含A和B两份数据文件,所述字符串先存储至所述A和B两份数据文件中的任一数据文件中,完成后再存储至另一数据文件中;由于往磁盘写入文件时,受磁盘IO读写速度限制,在数据量较大时写入时间有可能会比较长,在此过程中如果系统断电或异常退出,数据会全部丢失,使用A、B两份数据文件热备的方式,轮流写入,系统断电或异常退出,只会丢失当前操作的数据文件,另一份数据文件不受影响;
检测到A和B两份数据文件同时存在时,比对A和B两份数据文件的最后修改时间,采用Node.JS原生API将其中修改时间最新的数据文件以文件的方式读取到内存中,最后将读取到的文件转换为JSON格式的数组并存放在内存中。
所述数据库初始化完成后,通过Node.JS对外提供数据库的操作接口。
作为优选,所述创建数据记录的初始索引,具体为:
根据提供的初始值创建数据记录初始索引,如果未提供,则使用默认初始值,目前默认初始值是1000000。
一种采用前述方法建立的基于Node.JS的NoSQL数据库,可以调用相关接口对数据进行相关处理。
为了提高数据的可读以及可操作性,采用二进制文本文件作为数据的存储方式,在各个操作系统下都可以使用对应的文本编辑工具打开并操作。
作为优选,所述数据库采用JSON格式来存储数据和传输数据,所有数据以散列表的形式存储于内存中(相对于磁盘,内存的数据读写速度要高出很多倍,将数据存放在内存中能够极大地提高数据库的性能),并采用一张表一个数据文件的分表原则。
作为优选,所述数据库采用JSON中的对象类型作为单条数据记录的格式,自增属性_id表示该条数据记录的索引值,数据记录其他数据项采用键值对的方式存放在对象中。
作为优选,数据表新增数据记录时,遍历数据表原有的数据集,找出最大的索引值,进行加一处理后作为新增数据记录的索引值;若原有数据集为空,则采用默认的索引值作为新增数据记录的索引值。
当修改数据表中数据时,先查找符合条件的数据集,并调用传入的修改方法函数,对单项或全部数据进行修改更新;具体为,首先利用数据库的查询功能,查询符合条件的数据集(结果集);然后调用修改方法函数对所述结果集中的所有数据进行更新;或者,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;或者,当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新。
为保证记录删除后索引值仍然唯一,删除数据表中数据时,查找符合条件的数据集,并删除除索引外的全部数据项,保留索引值,防止索引值被新增数据项重复使用,有效避免新插入的记录覆盖先前记录的索引值。
本发明之数据库系统运行时所有数据都是存放在内存中的,为防止突然宕机或者系统崩溃导致数据丢失,需要按照既定策略将内存中的数据持久化(备份)到磁盘,以保证数据安全。本发明之数据库系统有三种持久化模式——热备,全量备份,差异备份:
热备,数据发生改变后,将拟备份数据备份至数据库存储目录下的一份文件中,结束后再将该拟备份数据同步至数据库存储目录下的另一份文件中;
全量备份,数据发生改变后,将数据表中的完整数据集备份至数据库存储目录下的文件中;
差异备份,将数据表中的完整数据集备份至数据库存储目录下的文件中,并在数据发生改变后,将差异于所述完整数据集的数据备份至数据库存储目录下的文件中。
基于Node.JS的NoSQL数据库的数据处理方法,包括:
数据发生改变后,将拟备份数据备份至数据库存储目录(前述数据库建立方法步骤S1中所述的目录)下的一份文件中,结束后再将该拟备份数据同步至数据库存储目录(前述步骤S1中所述的目录)下的另一份文件中;采用两份文件互备的方式,即便是在写的过程中,程序异常退出,也只会丢失一份备用数据,不会造成数据全部丢失;
或者,数据发生改变后,将数据表中的完整数据集备份至数据库存储目录(前述步骤S1中所述的目录)下的文件中;即在某个时间点对所有数据进行一个完全的备份,这种备份方式的好处就是只用一个备份,就可以恢复所有数据,大大加快了数据的恢复时间。
或者,将数据表中的完整数据集备份至数据库存储目录(前述步骤S1中所述的目录)下的文件中,并在数据发生改变后,将差异于所述完整数据集的数据备份至数据库存储目录下(前述步骤S1中所述的目录)的文件中;进行恢复时,我们只需对第一次全量备份和最后一次差异备份进行恢复;
所述基于Node.JS的NoSQL数据库为前述一种采用前述方法建立的基于Node.JS的NoSQL数据库。
作为优选,所述备份具体为:
将数据表对应的JSON数据序列化成字符串,然后使用Node.JS原生API将该字符串存储到数据库存储目录(前述步骤S1中所述的目录)下对应的二进制文本文件中。
作为优选,所述处理方法还包括数据查询:
通过循环的方式,从数据表对应的数据集中依次取出数据,根据传入的条件函数判断数据是否满足条件,是则将数据放入结果集中,否则跳过并继续取出下一条数据,不断循环得到最终的查询结果;
或者,根据索引值返回与该索引值对应的数据放入结果集中,得到查询结果;
或者,通过函数式传入查询参数,在查询到所有满足条件的数据集后,根据传入的排序参数进行排序,然后返回一条或全部结果集,得到查询结果;
查询返回的结果为原始JSON数据的深度克隆后的JSON数据。
作为优选,所述处理方法还包括数据修改:
调用修改方法函数对所述结果集中的所有数据进行更新;
或者,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;
或者,当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新;
具体包括:
调用的批量更新方法,调用修改方法函数对所述结果集中的所有数据进行更新;
调用的单项更新方法,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;
调用的批量更新并新增方法,对所述结果集中的所有数据(查询结果集)批量进行更新;当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新;
调用的单项更新并新增方法,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;当指定查询条件的数据记录不存在时,会先插入一条符合条件的记录,然后调用传入的修改方法对数据进行更新。
本发明与现有技术相比有如下优点和效果:
本发明通过在Node环境下,使用Node.JS原生API实现一个不依赖第三方的简洁版非关系型数据库,实现数据的快速存储,读取,修改,删除等,在应用重启后数据能够及时恢复,以及数据变更后能及时存档。
附图说明
图1是本发明数据更新流程图。
具体实施方式
下面将结合附图对本发明做详细的介绍。
本发明通过在Node.JS环境下使用JSON格式来存储数据和传输数据,通过在内存中建立映像加文件存储的方式来实现非关系型数据存储,在应用重启后数据能够及时恢复,以及数据变更后能及时存档。
本发明基于Node.JS的NoSQL数据库的建立方法,包括:
S1、采用Node.JS原生API(应用程序编程接口)创建一个拥有读写权限的目录用于存储数据库文件,该目录位于磁盘上;
S2、根据给定的数据表(即数据集合)名字,检测其对应的物理数据文件是否存在于所述目录中,若是,执行步骤S5;若否,执行步骤S3;
S3、采用Node.JS原生API根据数据表名称在内存中创建一个数组用于存放数据,并基于数组创建数据记录的初始索引,如果未提供,则使用默认初始值,目前默认初始值是1000000;
S4、采用Node.JS原生API将数据表对应数组数据转换为JSON格式的字符串,并采用Node.JS原生API将该字符串存储至所述目录下的数据文件中;由于往磁盘写入文件时,受磁盘IO读写速度限制,在数据量较大时写入时间有可能会比较长,在此过程中如果系统断电或异常退出,数据会全部丢失,本实施例使用A、B两份数据文件热备的方式,轮流写入,系统断电或异常退出,只会丢失当前操作的数据文件,另一份数据文件不受影响;具体为:所述目录下的数据文件包含A和B两份数据文件,所述字符串先存储至所述A和B两份数据文件中的任一数据文件中,完成后再存储至另一数据文件中;
S5、检测到A和B两份数据文件同时存在时,比对A和B两份数据文件的最后修改时间,采用Node.JS原生API将其中修改时间最新的数据文件以文件的方式读取到内存中;
S6、采用Node.JS原生API将S5中读取到的文件转换为JSON格式的数组并存放在内存中。
所述数据库初始化完成后,通过Node.JS对外提供数据库的操作接口。
采用前述方法建立的数据库,运行在Node.JS环境下,使用场景主要面向中小型应用,数据规模有限,采用的分表原则是一张表一个数据文件,并且会将数据库所有数据都读取到内存中以方便操作;本发明采用散列表的形式将数据存放在内存中。其优点在于相对于磁盘,内存的数据读写速度要高出很多倍,将数据存放在内存中能够极大地提高数据库的性能。不过数据全部存放在内存中的一大隐患是断电后数据会全部丢失,这就需要结合磁盘存储,根据既定策略,将内存中的数据按实际需要定期或不定期保存到磁盘中,以防止数据意外丢失。
本发明数据库采用了JSON格式作为文档数据的存储形式和网络的传输格式。JSON格式(JavaScript Object Notation的缩写)是一种轻量级的数据交换格式,2001年由Douglas Crockford提出。Node.JS是一个基于Chrome V8 JavaScript engine的JavaScript运行时环境,原生支持JSON格式,因此无需额外引入代码即可使用。作为应用广泛的数据结构JSON具有语法简单、易于理解、方便解析等特点;它独立于编程语言和平台,常被用于不同系统间数据交换;支持的基本数据类型有数值、字符串、布尔值、空值、数组、对象几种。本发明所述数据库采用JSON中的对象类型作为单条数据记录的格式,自增属性_id表示该条数据记录的索引值,数据记录其他数据项采用键值对的方式存放在对象中。
为了提高数据的可读以及可操作性,采用了二进制文本文件作为数据的存储方式,在各个操作系统下都可以使用对应的文本编辑工具打开并操作。
作为优选,数据表新增数据记录时,遍历数据表原有的数据集,找出最大的索引值,进行加一处理后作为新增数据记录的索引值;若原有数据集为空,则采用默认的索引值作为新增数据记录的索引值。
当修改数据表中数据时,先查找符合条件的数据集,并调用传入的修改方法函数,对单项或全部数据进行修改更新;具体为,首先利用数据库的查询功能,查询符合条件的数据集(结果集);然后调用修改方法函数对所述结果集中的所有数据进行更新;或者,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;或者,当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新。
为保证记录删除后索引值仍然唯一,删除数据表中数据时,查找符合条件的数据集,并删除除索引外的全部数据项,保留索引值,防止索引值被新增数据项重复使用,有效避免新插入的记录覆盖先前记录的索引值。
所述将内存中的数据按实际需要定期或不定期保存到磁盘中,具体为三种持久化模式—热备,全量备份,差异备份:
热备,在数据库正常运行的情况下进行备份;在热备期间,数据库的读写操作均可正常进行;数据发生改变后,将拟备份数据备份至数据库存储目录下的一份文件中,结束后再将该拟备份数据同步至数据库存储目录下的另一份文件中;
全量备份,数据发生改变后,将数据表中的完整数据集备份至数据库存储目录下的文件中;
差异备份,将数据表中的完整数据集备份至数据库存储目录下的文件中,并在数据发生改变后,将差异于所述完整数据集的数据备份至数据库存储目录下的文件中。
所述数据库还包括查询功能:
通过循环的方式,从数据表对应的数据集中依次取出数据,根据传入的条件函数判断数据是否满足条件,是则将数据放入结果集中,否则跳过并继续取出下一条数据;
或者,根据索引值返回与该索引值对应的数据放入结果集中;
或者,通过函数式传入查询参数,在查询到所有满足条件的数据集后,根据传入的排序参数进行排序,然后返回一条或全部结果集;
查询返回的结果为原始JSON数据的深度克隆后的JSON数据。
作为优选,所述数据库还包括数据修改功能:
调用修改方法函数对所述结果集中的所有数据进行更新;
或者,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;
或者,当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新。
基于Node.JS的NoSQL数据库的数据处理方法,包括:
数据发生改变后,将拟备份数据备份至数据库存储目录下的一份文件中,结束后再将该拟备份数据同步至数据库存储目录下的另一份文件中(此时数据库的读写操作均可正常进行);采用两份文件来存放同一份数据,一个时间点只写一份文件,写入结束后再将数据同步到另一份文件。如此操作的主要原因是由于磁盘IO读写速度的限制,当数据量超过一定大小,比如200M时,需要较长时间才能将数据完整写到磁盘上。当只有一份文件时如果写的过程中程序异常退出,会导致数据全部丢失。使用两份文件互备的方式,即便是在写的过程中,程序异常退出,也只会丢失一份备用数据,不会造成数据全部丢失。
或者,数据发生改变后,将数据表中的完整数据集备份至数据库存储目录下的文件中;即在某个时间点(数据发生改变后)对所有数据进行一个完全的备份,这种备份方式的好处就是只用一个备份,就可以恢复所有数据,大大加快了数据的恢复时间。
或者,将数据表中的完整数据集备份至数据库存储目录下的文件中,并在数据发生改变后,将差异于所述完整数据集的数据备份至数据库存储目录下的文件中;进行恢复时,仅需对第一次全量备份(完整数据集备份)和最后一次差异备份进行恢复;不仅具备需要时间短、节省磁盘空间的优势;同时具备全备份恢复所需存储空间少、恢复时间短的特点。只需要两份数据文件,即全备份数据文件与灾难发生前一天的差异备份数据文件,就可以将系统恢复。
所述基于Node.JS的NoSQL数据库为前述的数据库。
作为优选,所述备份具体为:
将数据表对应的JSON数据序列化成字符串,然后使用Node.JS原生API将该字符串存储到数据库存储目录下对应的二进制文本文件中。
作为优选,所述处理方法还包括数据查询,不需要使用传统的SQL,可以直接使用函数式进行查询:
通过循环的方式,从数据表对应的数据集中依次取出数据,根据传入的条件函数判断数据是否满足条件,是则将数据放入结果集中,否则跳过并继续取出下一条数据,不断循环得到最终的查询结果;
或者,根据索引值返回与该索引值对应的数据放入结果集中,得到查询结果;
或者,通过函数式传入查询参数,在查询到所有满足条件的数据集后,根据传入的排序参数进行排序,然后返回一条或全部结果集,得到查询结果;
查询返回的结果为原始JSON数据的深度克隆后的JSON数据。
如图1所示,作为优选,所述处理方法还包括数据修改:
调用修改方法函数对所述结果集(查询所得)中的所有数据进行更新;
或者,对结果集(查询所得)中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;
或者,当所述结果集(查询所得)中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新;
具体包括:
调用的批量更新方法,调用修改方法函数对所述结果集中的所有数据进行更新;
调用的单项更新方法,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;
调用的批量更新并新增方法,对所述结果集中的所有数据(查询结果集)批量进行更新;当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新;
调用的单项更新并新增方法,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;当指定查询条件的数据记录不存在时,会先插入一条符合条件的记录,然后调用传入的修改方法对数据进行更新。
所述数据处理方法还包括:
内存数据恢复,系统重启后,会自动将表数据全部读取到内存中;
历史数据恢复,如需手动回退到某个历史版本数据,只需将对应时间点的全量备份文件拷贝至数据库文件目录重命名成当前工作文件,然后重启系统即可。
Claims (12)
1.一种基于Node.JS的NoSQL数据库的建立方法,其特征在于包括:
S1、采用Node.JS原生API创建一个拥有读写权限的目录用于存储数据文件;
S2、检测数据表对应的数据文件是否存在于所述目录中,若是,执行步骤S5;若否,执行步骤S3;
S3、采用Node.JS原生API根据数据表名称在内存中创建一个数组用于存放数据,并基于数组创建数据记录的初始索引;
S4、采用Node.JS原生API将数据表对应数组数据转换为JSON格式的字符串,并采用Node.JS原生API将该字符串存储至所述目录下的数据文件中;
S5、采用Node.JS原生API将数据文件以文件的方式读取到内存中;
S6、采用Node.JS原生API将S5中读取到的文件转换为JSON格式的数组并存放在内存中。
2.根据权利要求1所述的基于Node.JS的NoSQL数据库的建立方法,其特征在于:
所述目录下的数据文件包含A和B两份数据文件,所述字符串先存储至所述A和B两份数据文件中的任一数据文件中,完成后再存储至另一数据文件中;
检测到A和B两份数据文件同时存在时,比对A和B两份数据文件的最后修改时间,采用Node.JS原生API将其中修改时间最新的数据文件以文件的方式读取到内存中。
3.根据权利要求1所述的基于Node.JS的NoSQL数据库的建立方法,其特征在于,所述创建数据记录的初始索引,具体为:
根据提供的初始值创建数据记录初始索引,若未提供,则使用默认初始值1000000;
所述数据库初始化完成后,通过Node.JS对外提供数据库的操作接口。
4.一种采用权利要求1或2或3所述方法建立的基于Node.JS的NoSQL数据库。
5.根据权利要求4所述的基于Node.JS的NoSQL数据库,其特征在于:所述数据库采用JSON格式来存储数据和传输数据,所有数据以散列表的形式存储于内存中,并采用一张表一个数据文件的分表原则。
6.根据权利要求5所述的基于Node.JS的NoSQL数据库,其特征在于:所述数据库采用JSON中的对象类型作为单条数据记录的格式,自增属性_id表示该条数据记录的索引值。
7.根据权利要求4所述的基于Node.JS的NoSQL数据库,其特征在于:数据表新增数据记录时,遍历数据表原有的数据集,找出最大的索引值,进行加一处理后作为新增数据记录的索引值;若原有数据集为空,则采用默认初始值作为新增数据记录的索引值。
8.根据权利要求4所述的基于Node.JS的NoSQL数据库,其特征在于:删除数据表中数据时,查找符合条件的数据集,并删除除索引外的全部数据项,保留索引值,防止索引值被新增数据项重复使用。
9.一种基于Node.JS的NoSQL数据库的数据处理方法,其特征在于:
数据发生改变后,将拟备份数据备份至数据库存储目录下的一份文件中,结束后再将该拟备份数据同步至数据库存储目录下的另一份文件中;
或者,数据发生改变后,将数据表中的完整数据集备份至数据库存储目录下的文件中;
或者,将数据表中的完整数据集备份至数据库存储目录下的文件中,并在数据发生改变后,将差异于所述完整数据集的数据备份至数据库存储目录下的文件中;
所述基于Node.JS的NoSQL数据库为权利要求5-8任意一项所述的数据库。
10.根据权利要求9所述的基于Node.JS的NoSQL数据库的数据处理方法,其特征在于,所述备份具体为:
将数据表对应的JSON数据序列化成字符串,然后使用Node.JS原生API将该字符串存储到数据库存储目录下对应的二进制文本文件中。
11.根据权利要求9所述的基于Node.JS的NoSQL数据库的数据处理方法,其特征在于:
通过循环的方式,从数据表对应的数据集中依次取出数据,根据传入的条件函数判断数据是否满足条件,若是,则将数据放入结果集中,若否,则跳过并继续取出下一条数据;
或者,根据索引值返回与该索引值对应的数据放入结果集中;
或者,通过函数式传入查询参数,在查询到所有满足条件的数据集后,根据传入的排序参数进行排序,然后返回一条或全部结果集;
返回的结果为原始JSON数据克隆后的JSON数据。
12.根据权利要求11所述的基于Node.JS的NoSQL数据库的数据处理方法,其特征在于,所述处理方法还包括:
调用修改方法函数对所述结果集中的所有数据进行更新;
或者,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;
或者,当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910071601.4A CN111488339B (zh) | 2019-01-25 | 2019-01-25 | 基于Node.JS的NoSQL数据库、建立及处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910071601.4A CN111488339B (zh) | 2019-01-25 | 2019-01-25 | 基于Node.JS的NoSQL数据库、建立及处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111488339A CN111488339A (zh) | 2020-08-04 |
CN111488339B true CN111488339B (zh) | 2023-10-27 |
Family
ID=71812179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910071601.4A Active CN111488339B (zh) | 2019-01-25 | 2019-01-25 | 基于Node.JS的NoSQL数据库、建立及处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488339B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181387A (zh) * | 2020-09-09 | 2021-01-05 | 上海微亿智造科技有限公司 | 一种web多人协同开发过程中模块管理方法 |
CN112817941A (zh) * | 2021-02-24 | 2021-05-18 | 紫光云技术有限公司 | 一种解决sqlserver自动修改恢复模式的方法 |
CN114840361B (zh) * | 2022-04-13 | 2023-07-14 | 江苏安超云软件有限公司 | 加快数据库恢复的方法及应用 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902319A (zh) * | 2012-12-30 | 2014-07-02 | 青岛海尔软件有限公司 | 基于服务器端javascript的热部署方法 |
CN105354328A (zh) * | 2015-11-25 | 2016-02-24 | 南京莱斯信息技术股份有限公司 | 一种解决NoSQL数据库并发访问冲突的系统及方法 |
CN106445705A (zh) * | 2016-10-08 | 2017-02-22 | 武汉烽火众智数字技术有限责任公司 | 基于RabbitMQ和Socket.io的平台级联方法和系统 |
CN106569793A (zh) * | 2016-09-19 | 2017-04-19 | 济南浪潮高新科技投资发展有限公司 | 一种基于Node.js的国际化实现方法 |
CN109101500A (zh) * | 2017-06-20 | 2018-12-28 | 北京国双科技有限公司 | 一种文件数据的展示方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713280B2 (en) * | 2010-12-23 | 2020-07-14 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
-
2019
- 2019-01-25 CN CN201910071601.4A patent/CN111488339B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902319A (zh) * | 2012-12-30 | 2014-07-02 | 青岛海尔软件有限公司 | 基于服务器端javascript的热部署方法 |
CN105354328A (zh) * | 2015-11-25 | 2016-02-24 | 南京莱斯信息技术股份有限公司 | 一种解决NoSQL数据库并发访问冲突的系统及方法 |
CN106569793A (zh) * | 2016-09-19 | 2017-04-19 | 济南浪潮高新科技投资发展有限公司 | 一种基于Node.js的国际化实现方法 |
CN106445705A (zh) * | 2016-10-08 | 2017-02-22 | 武汉烽火众智数字技术有限责任公司 | 基于RabbitMQ和Socket.io的平台级联方法和系统 |
CN109101500A (zh) * | 2017-06-20 | 2018-12-28 | 北京国双科技有限公司 | 一种文件数据的展示方法及装置 |
Non-Patent Citations (2)
Title |
---|
张煜 ; .一种使用Node.js构建的分布式数据流日志服务系统.计算机系统应用.2013,第22卷(第02期),全文. * |
陈旭飞 ; 于凤芹 ; 钦道理 ; .异构数据库系统数据转换方法设计与实现.微型机与应用.2015,第34卷(第08期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111488339A (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488339B (zh) | 基于Node.JS的NoSQL数据库、建立及处理方法 | |
US7672930B2 (en) | System and methods for facilitating a linear grid database with data organization by dimension | |
CN110096476B (zh) | 数据备份方法、装置及计算机可读存储介质 | |
EP2756434B1 (en) | Efficient data recovery | |
US8112396B2 (en) | Backup and recovery of integrated linked databases | |
US7533136B2 (en) | Efficient implementation of multiple work areas in a file system like repository that supports file versioning | |
US9892185B2 (en) | Method and system for syncing data structures | |
US20160147801A1 (en) | Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes | |
CN105574093A (zh) | 一种在基于HDFS的spark-sql大数据处理系统上建立索引的方法 | |
US10606839B2 (en) | Preventing staleness in query results when using asynchronously updated indexes | |
CN103678556A (zh) | 列式数据库处理的方法和处理设备 | |
US11269954B2 (en) | Data searching method of database, apparatus and computer program for the same | |
US20220035786A1 (en) | Distributed database management system with dynamically split b-tree indexes | |
CN102880671A (zh) | 一种面向分布式文件系统的主动重复数据删除方法 | |
CN105447166A (zh) | 一种基于关键字查找信息的方法及系统 | |
US20110320404A1 (en) | Standby index in physical data replication | |
Jun et al. | The research & application of ETL tool in business intelligence project | |
US11080332B1 (en) | Flexible indexing for graph databases | |
US20170270149A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
CN103020285A (zh) | 跨数据库支持多字段组合的自动编码方法和系统 | |
JP2018109898A (ja) | データマイグレーションシステム | |
CN108073584B (zh) | 一种数据处理方法及服务器 | |
CN104239576A (zh) | 查找HBase表列值中所有行的方法和装置 | |
CA2322603C (en) | Optimizing updatable scrollable cursors in database systems | |
TWI484358B (zh) | 資料庫之移轉系統、方法及其電腦可讀取之媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |