CN111488339A - 基于Node.JS的NoSQL数据库、建立及处理方法 - Google Patents

基于Node.JS的NoSQL数据库、建立及处理方法 Download PDF

Info

Publication number
CN111488339A
CN111488339A CN201910071601.4A CN201910071601A CN111488339A CN 111488339 A CN111488339 A CN 111488339A CN 201910071601 A CN201910071601 A CN 201910071601A CN 111488339 A CN111488339 A CN 111488339A
Authority
CN
China
Prior art keywords
data
node
database
file
nosq
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.)
Granted
Application number
CN201910071601.4A
Other languages
English (en)
Other versions
CN111488339B (zh
Inventor
王海洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN201910071601.4A priority Critical patent/CN111488339B/zh
Publication of CN111488339A publication Critical patent/CN111488339A/zh
Application granted granted Critical
Publication of CN111488339B publication Critical patent/CN111488339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

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数据库,该数据库的建立方法及数据处理方法,主要应用于数据库系统技术领域。
背景技术
目前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数据库的数据处理方法,其特征在于,所述处理方法还包括:
调用修改方法函数对所述结果集中的所有数据进行更新;
或者,对结果集中的结果按给定排序条件进行排序,然后调用修改方法函数对第一条数据进行更新;
或者,当所述结果集中无符合条件的结果时,插入一条符合条件的记录,然后调用传入的修改方法函数对数据进行更新。
CN201910071601.4A 2019-01-25 2019-01-25 基于Node.JS的NoSQL数据库、建立及处理方法 Active CN111488339B (zh)

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 true CN111488339A (zh) 2020-08-04
CN111488339B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
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自动修改恢复模式的方法
CN114840361A (zh) * 2022-04-13 2022-08-02 江苏安超云软件有限公司 加快数据库恢复的方法及应用

Citations (6)

* Cited by examiner, † Cited by third party
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的国际化实现方法
US20170286517A1 (en) * 2010-12-23 2017-10-05 Eliot Horowitz Systems and methods for managing distributed database deployments
CN109101500A (zh) * 2017-06-20 2018-12-28 北京国双科技有限公司 一种文件数据的展示方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286517A1 (en) * 2010-12-23 2017-10-05 Eliot Horowitz Systems and methods for managing distributed database deployments
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)

* Cited by examiner, † Cited by third party
Title
张煜;: "一种使用Node.js构建的分布式数据流日志服务系统" *
陈旭飞;于凤芹;钦道理;: "异构数据库系统数据转换方法设计与实现" *

Cited By (3)

* Cited by examiner, † Cited by third party
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自动修改恢复模式的方法
CN114840361A (zh) * 2022-04-13 2022-08-02 江苏安超云软件有限公司 加快数据库恢复的方法及应用

Also Published As

Publication number Publication date
CN111488339B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
CN107391653B (zh) 一种分布式NewSQL数据库系统及图片数据储存方法
CN105630864B (zh) 存储行标识符值的字典的强制排序
US9678969B2 (en) Metadata updating method and apparatus based on columnar storage in distributed file system, and host
US9672235B2 (en) Method and system for dynamically partitioning very large database indices on write-once tables
US20160147801A1 (en) Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes
US20120259863A1 (en) Low Level Object Version Tracking Using Non-Volatile Memory Write Generations
US8060711B2 (en) Storage system
CN111488339A (zh) 基于Node.JS的NoSQL数据库、建立及处理方法
CN103595797B (zh) 一种分布式存储系统中的缓存方法
US11526465B2 (en) Generating hash trees for database schemas
CN105447166A (zh) 一种基于关键字查找信息的方法及系统
CN115757629A (zh) 多源异构数据增量同步方法、系统、存储介质和电子设备
CN111352936A (zh) Es重建索引的方法、存储介质
CN102937923B (zh) 一种自动保存用户界面状态的方法
US20210303404A1 (en) Systems and methods for database migration
US11080332B1 (en) Flexible indexing for graph databases
CN114595286A (zh) 一种数据同步方法、装置、电子设备及存储介质
CN113760600B (zh) 一种数据库备份方法、数据库还原方法和相关装置
CN111259003B (zh) 一种数据库建立方法及装置
JP2018109898A (ja) データマイグレーションシステム
CN110879762A (zh) 一种云备份的删除方法及本地存储的云备份删除方法
CN115296858B (zh) 主动防御网关拓扑编辑器本地存储方法与系统
CN117131023B (zh) 数据表处理方法、装置、计算机设备和可读存储介质
CN114546731B (zh) 一种工作流数据恢复方法及数据恢复系统
US11379433B2 (en) Persistent version storage for relational database management system

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