CN104077082A - 网络投票数据存储方法和装置 - Google Patents
网络投票数据存储方法和装置 Download PDFInfo
- Publication number
- CN104077082A CN104077082A CN201410305766.0A CN201410305766A CN104077082A CN 104077082 A CN104077082 A CN 104077082A CN 201410305766 A CN201410305766 A CN 201410305766A CN 104077082 A CN104077082 A CN 104077082A
- Authority
- CN
- China
- Prior art keywords
- voting
- storage file
- memory
- data block
- storage
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000013500 data storage Methods 0.000 title claims abstract description 22
- 238000013507 mapping Methods 0.000 claims abstract description 32
- 230000000694 effects Effects 0.000 claims abstract description 29
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种网络投票数据存储方法和装置,属于网络投票技术领域。所述方法包括:将网络服务器的磁盘中投票存储文件映射到内存中,所述投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数;接收客户端发送的投票信息,所述投票信息包括:投票活动标识、选择的投票选项标识以及与每个所述选择的投票选项标识对应的票数;根据所述投票信息中的投票选项标识以及投票票数,更新所述内存中所述投票存储文件中所述投票选项标识对应的票数;将内存中的所述投票存储文件写入所述磁盘。既保证了对数据的访问速度,又避免了程序崩溃或者断电等故障时引起的数据丢失的问题,不需要使用SSD,节约了成本。
Description
技术领域
本发明涉及网络投票技术领域,特别涉及一种网络投票数据存储方法和装置。
背景技术
网络投票是以投票为中心的社会化网络服务,网络投票的投票和开票由服务器控制,并且服务器还承担验票的角色。网络投票有吞吐量大、实时性高的特点。因此对于网络投票的服务器而言,服务器中的存储模块的读写性能,影响服务器对于网络投票数据的访问速度,对网络投票吞吐量大和实时性有很大影响。
目前服务器中的存储模块一般包括机械磁盘、内存、固态硬盘等,其中,基于机械磁盘的存储,访问速度慢。基于内存的存储,遇到程序崩溃或者断电等故障,会引起数据丢失。使用固态硬盘(Solid State Disk,简称“SSD”),一定程度上可以缓解上述矛盾,但它更适合读请求多,写请求少的场景。当SSD用于有大量写请求的投票系统一段时间后,会出现写放大的问题,导致写入性能低下。达不到预期的效果。而且SSD的成本也远高于机械硬盘,用于投票系统性价比不高。因此,如何在不使用SSD的情况下保证网络投票数据存储的访问速度,且能够避免程序崩溃或者断电等故障时引起的数据丢失,就成了目前急需解决的问题。
发明内容
为了解决现有技术中投票系统在使用SSD时进行存储时,成本高且存在写放大,而在使用机械磁盘进行存储时,网络投票数据访问速度慢的问题,本发明实施例提供了一种网络投票数据存储方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种网络投票数据存储方法,适用于网络投票服务器,所述方法包括:
将所述网络投票服务器的磁盘中投票存储文件映射到内存中,所述投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数;
接收客户端发送的投票信息,所述投票信息包括:投票活动标识、选择的投票选项标识以及与每个所述选择的投票选项标识对应的票数;
根据所述投票信息中的投票选项标识以及投票票数,更新所述内存中所述投票存储文件中所述投票选项标识对应的票数;
将内存中的所述投票存储文件写入所述磁盘。
在本发明实施例的一种实现方式中,所述投票存储文件分为索引区和数据区,所述索引区包括至少一个第一数据块,所述第一数据块包括投票选项标识以及数据块下标,所述数据区包括至少一个第二数据块,所述第二数据块包括投票选项标识以及投票票数,所述数据块下标用于指示所述投票选项标识对应的第二数据块映射后的位置。
在本发明实施例的另一种实现方式中,所述将所述网络投票服务器的磁盘中投票存储文件映射到内存中,包括:
将所述索引区中每个第一数据块的投票选项标识以及数据块下标分别作为钥匙key和值value映射到内存红黑树中;
将所述数据区中的多个第二数据块映射到内存中的一个全局数组中,所述数据块下标为所述全局数组的下标。
在本发明实施例的另一种实现方式中,所述将内存中的所述投票存储文件写入所述磁盘,包括:
周期性地将内存中的所述投票存储文件写入所述磁盘;或者,
如果内存中空闲页面低于预定量,则将内存中的所述投票存储文件写入所述磁盘;或者,
如果所述内存中更新的所述投票存储文件的量超过预定比例,则将内存中的所述投票存储文件写入所述磁盘。
在本发明实施例的另一种实现方式中,所述方法还包括:
获取投票活动配置,所述投票活动配置包括:投票活动标识、投票选项数量、以及所述投票活动标识对应的投票存储文件的存储路径;
判断所述投票存储文件的存储路径上是否存在所述投票存储文件;
当所述投票活动标识对应的投票存储文件的存储路径上不存在所述投票存储文件时,在所述投票存储文件的存储路径上新建所述投票存储文件。
另一方面,本发明实施例还提供了一种网络投票数据存储装置,适用于网络投票服务器,所述装置包括:
映射模块,用于将所述网络投票服务器的磁盘中投票存储文件映射到内存中,所述投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数;
接收模块,用于接收客户端发送的投票信息,所述投票信息包括:投票活动标识、选择的投票选项标识以及与每个所述选择的投票选项标识对应的票数;
处理模块,用于根据所述投票信息中的投票选项标识以及投票票数,更新所述内存中所述投票存储文件中所述投票选项标识对应的票数;
输出模块,用于将内存中的所述投票存储文件写入所述磁盘。
在本发明实施例的一种实现方式中,所述投票存储文件分为索引区和数据区,所述索引区包括至少一个第一数据块,所述第一数据块包括投票选项标识以及数据块下标,所述数据区包括至少一个第二数据块,所述第二数据块包括投票选项标识以及投票票数,所述数据块下标用于指示所述投票选项标识对应的第二数据块映射后的位置。
在本发明实施例的另一种实现方式中,所述映射模块包括:
第一映射单元,用于将所述索引区中每个第一数据块的投票选项标识以及数据块下标分别作为钥匙key和值value映射到内存红黑树中;
第二映射单元,用于将所述数据区中的多个第二数据块映射到内存中的一个全局数组中,所述数据块下标为所述全局数组的下标。
在本发明实施例的另一种实现方式中,所述输出模块包括:
输出单元,用于周期性地将内存中的所述投票存储文件写入所述磁盘;或者,
在内存中空闲页面低于预定量时,将内存中的所述投票存储文件写入所述磁盘;或者,
在所述内存中更新的所述投票存储文件的量超过预定比例时,将内存中的所述投票存储文件写入所述磁盘。
在本发明实施例的另一种实现方式中,所述装置还包括:
获取模块,用于获取投票活动配置,所述投票活动配置包括:投票活动标识、投票选项数量、以及所述投票活动标识对应的投票存储文件的存储路径;
判断模块,用于判断所述投票存储文件的存储路径上是否存在所述投票存储文件;
新建模块,用于当所述投票活动标识对应的投票存储文件的存储路径上不存在所述投票存储文件时,在所述投票存储文件的存储路径上新建所述投票存储文件。
本发明实施例提供的技术方案带来的有益效果是:
通过将网络投票中的投票存储文件写入内存中,当有客户端发送投票信息时,根据投票信息中用户投出的票数,对内存中投票存储文件中投票选项的票数进行更新,保证了对数据的访问速度,然后再将内存中的投票存储文件写入磁盘,避免了程序崩溃或者断电等故障时引起的数据丢失的问题,不需要使用SSD,节约了成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的应用场景图;
图2是本发明实施例一提供的网络投票数据存储方法流程图;
图3是本发明实施例二提供的网络投票数据存储方法流程图;
图4是本发明实施例三提供的网络投票数据存储装置的结构示意图;
图5是本发明实施例四提供的网络投票数据存储装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了便于实施例的描述,下面先简单介绍一下本发明中实施例的应用场景。参见图1,该场景中包括客户端1,客户端1可以是个人电脑、移动终端等设备。客户端1中设有可以进行网络投票的应用,用户可以采用该应用进行网络投票。客户端1与网络投票服务器2通过网络连接。网络投票服务器2接收客户端1发送的投票信息,并进行验票统计等功能,将票数等信息写入到网络投票服务器2中的磁盘中。
需要说明的是,以上所述的设备种类及连接方式仅为举例,本发明对此不作限制。
实施例一
本发明实施例提供了一种网络投票数据存储方法,适用于网络投票服务器,参见图2,该方法包括:
步骤101:将网络投票服务器的磁盘中投票存储文件映射到内存中,投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数。
具体地,这里所说的磁盘为普通机械硬盘。投票活动标识用来指示该投票存储文件所对应的投票活动,每个投票存储文件与一个投票活动对应。投票选项标识是一场投票中投票人可以选投的选项的标识。
步骤102:接收客户端发送的投票信息,投票信息包括:投票活动标识、选择的投票选项标识以及与每个选择的投票选项标识对应的票数。
具体地,投票信息中投票活动标识是投票人参与的投票活动标识,即该投票信息所参与的投票,因为可能一个投票人同时能对多场投票。投票人选择的投票选项标识用来标识投票人选投的选项,既可以是一个选项也可以多个选项。投票票数与投票选项标识对应,当可以投多个选项时,每个选项的票数与之对应。当然,在只能对每个选项投固定票数(如一票)的投票中,该投票票数可以省略。
步骤103:根据投票信息中的投票选项标识以及投票票数,更新内存中投票存储文件中投票选项标识对应的票数。
具体地,当接收到客户端发送的投票信息后,根据投票信息中投票活动标识在内存中找到对应的投票存储文件,再根据投票信息中的投票选项标识以及投票票数,进行计票,也就是在投票存储文件中该投票选项标识对应的票数基础上,加上该投票信息的票数,生成新的票数,并代替原有票数。例如,原来内存中投票存储文件中选项A的票数为1000票,而在客户端发送的投票信息中,对选项A投了5票,则此时需要将内存中投票存储文件中选项A的票数改为1005票。
步骤104:将内存中的投票存储文件写入磁盘。
具体地,网络投票服务器中一般采用LINUX系统,在LINUX系统下,使用内核线程pdflush将内存中的投票存储文件写入磁盘。在具体写入时,根据投票活动标识找到磁盘内的文件,将内存中的投票存储文件替换磁盘中原有的投票存储文件。
本发明实施例通过将网络投票中的投票存储文件写入内存中,当有客户端发送投票信息时,根据投票信息中用户投出的票数,对内存中投票存储文件中投票选项的票数进行更新,保证了对数据的访问速度,然后再将内存中的投票存储文件写入磁盘,避免了程序崩溃或者断电等故障时引起的数据丢失的问题,不需要使用SSD,节约了成本。
实施例二
本发明实施例提供了一种网络投票数据存储方法,适用于网络投票服务器,参见图3,该方法包括:
步骤201:获取投票活动配置,该投票活动配置包括投票活动标识、投票选项数量、以及该投票活动标识对应的投票存储文件的存储路径。
具体地,每个投票活动的投票选项都对应一个投票存储文件。每个投票存储文件都有投票活动标识,根据投票活动标识可以将内存中的数据写到磁盘中的投票存储文件中。投票存储文件的存储路径是该投票存储文件在磁盘中的位置。
步骤202:判断投票存储文件的存储路径上是否存在投票存储文件;若投票存储文件的存储路径上存在投票存储文件,则执行步骤204;若投票存储文件的存储路径上不存在投票存储文件,则执行步骤203。
进一步地,当投票存储文件的存储路径上存在投票存储文件时,还可以验证该投票存储文件的长度,若该投票存储文件的长度与预设长度相等,则执行步骤204,若该投票存储文件的长度与预设长度不相等,则执行步骤203。从而保证投票存储文件的准确性。
步骤203:在投票存储文件的存储路径上新建投票存储文件,然后执行步骤204。
新建时,按照后文中描述的投票存储文件的格式进行,这里不作赘述。
步骤204:将网络投票服务器的磁盘中投票存储文件映射到内存中。
具体地,当需要启动一项投票活动,则根据该投票活动的投票活动标识确定其对应投票存储文件的存储路径,然后将该路径存储的文件加载到内存中。
投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数。
这里所说的磁盘为普通机械硬盘。投票活动标识用来指示该投票存储文件所对应的投票活动,每个投票存储文件与一个投票活动对应。投票选项标识是一场投票中投票人可以选投的选项的标识。
具体地,投票存储文件包括索引区和数据区,索引区包括至少一个第一数据块,第一数据块包括投票选项标识以及数据块下标,数据区包括至少一个第二数据块,第二数据块包括投票选项标识以及投票票数,数据块下标用于指示投票选项标识对应的第二数据块映射后的位置。
进一步地,该第二数据块还可以包括更多的字段,以满足实际需求,如投票选项排名等。
例如,索引区每个第一数据块为8字节,其中投票选项标识4字节,数据块下标4字节。数据区每个第二数据块为20字节,包括投票选项标识、投票票数、最后的票时间、投票选项排名和扩展字段。
索引区中第一数据块和数据区中第二数据库的数量相等,都是与前述投票选项数量相等的。
在本实施例的一种实现方式中,步骤204可以采用下述方式实现:
步骤一、将索引区中每个第一数据块的投票选项标识以及数据块下标分别作为钥匙key和值value映射到内存红黑树中。
步骤二、将数据区中的至少一个第二数据块映射到内存中的一个全局数组中,数据块下标为全局数组的下标。即数据块下标用来指示第二数据块映射到内存中全局数组内的下标。
步骤205:接收客户端发送的投票信息,投票信息包括:投票活动标识、投票人标识、选择的投票选项标识以及与每个选择的投票选项标识对应的票数,投票人标识包括用户身份标识和客户端地址中的至少一个。
具体地,投票信息中投票活动标识是投票人参与的投票活动标识,即该投票信息所参与的投票,因为可能一个投票人同时能对多场投票。当用户采用实名投票时,投票人标识可以包括用户身份标识和客户端地址。而当用户采用匿名身份投票时,此时用户身份标识为空,投票人标识只包括客户端地址。这里客户端地址一般是客户端的IP(Internet Protocol,网络互连协议)地址,当然也可以是客户端的MAC(Media Access Control,媒体介入控制层)地址。投票人选择的投票选项标识用来标识投票人选投的选项,既可以是一个选项也可以多个选项。投票票数与投票选项标识对应,当可以投多个选项时,每个选项的票数与之对应。当然,在只能对每个选项投固定票数(如一票)的投票中,该投票票数可以省略。
步骤206:根据投票信息中的投票选项标识以及投票票数,更新内存中投票存储文件中投票选项标识对应的票数。
具体地,当接收到客户端发送的投票信息后,根据投票信息中投票活动标识作为钥匙key在红黑树中找到对应的值value,根据值value确定其对应的数据在全局数组中的位置,根据投票信息中票数进行计票,在全局数组中记录的票数基础上,加上该投票信息的票数,生成新的票数,并代替全局数组中原有票数。例如,原来全局数组中选项A的票数为1000票,而在客户端发送的投票信息中,对选项A投了5票,则此时需要将内存中全局数组中选项A的票数改为1005票。
而当内存中投票存储文件中不存在该投票选项时,还可以添加新的投票选项,即在红黑树和全局数组中添加一条新的记录。
进一步地,在上述全局数组的基础上,网络投票服务器可以对投票选项的得票数进行排序,即对数组中得票数进行排序。排序可以实时进行也可以周期性进行。
另外,除了投票存储文件外,还可以设置单独的存储文件,用来记录投票人的信息,包括投票人标识、投票人投出的票数等。
步骤207:将内存中的投票存储文件写入磁盘。
具体地,网络投票服务器中一般采用LINUX系统,在LINUX系统下,使用内核线程pdflush将内存中的投票存储文件写入磁盘。
具体地,步骤207可以采用下述方式实现:
周期性地将内存中的投票存储文件写入磁盘;或者,
如果内存中空闲页面低于预定量,则将内存中的投票存储文件写入磁盘;或者,
如果内存中更新的投票存储文件的量超过预定比例,则将内存中的投票存储文件写入磁盘。
其中,周期性地将内存中的投票存储文件写入磁盘是:在内存中的存储投票信息的第一数据块和第二数据块超过一定时间没更新到磁盘时,将这些数据块写入磁盘中。
本发明实施例通过将网络投票中的投票存储文件写入内存中,当有客户端发送投票信息时,根据投票信息中用户投出的票数,对内存中投票存储文件中投票选项的票数进行更新,保证了对数据的访问速度,然后再将内存中的投票存储文件写入磁盘,避免了程序崩溃或者断电等故障时引起的数据丢失的问题,不需要使用SSD,节约了成本。
实施例三
本发明实施例提供了一种网络投票数据存储装置,适用于网络投票服务器,参见图4,该装置包括:
映射模块301,用于将网络投票服务器的磁盘中投票存储文件映射到内存中,投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数。
具体地,这里所说的磁盘为普通机械硬盘。投票活动标识用来指示该投票存储文件所对应的投票活动,每个投票存储文件与一个投票活动对应。投票选项标识是一场投票中投票人可以选投的选项的标识。
接收模块302,用于接收客户端发送的投票信息,投票信息包括:投票活动标识、选择的投票选项标识以及与每个选择的投票选项标识对应的票数。
具体地,投票信息中投票活动标识是投票人参与的投票活动标识,即该投票信息所参与的投票,因为可能一个投票人同时能对多场投票。投票人选择的投票选项标识用来标识投票人选投的选项,既可以是一个选项也可以多个选项。投票票数与投票选项标识对应,当可以投多个选项时,每个选项的票数与之对应。当然,在只能对每个选项投固定票数(如一票)的投票中,该投票票数可以省略。
处理模块303,用于根据投票信息中的投票选项标识以及投票票数,更新内存中投票存储文件中投票选项标识对应的票数。
具体地,当接收到客户端发送的投票信息后,根据投票信息中投票活动标识在内存中找到对应的投票存储文件,再根据投票信息中的投票选项标识以及投票票数,进行计票,也就是在投票存储文件中该投票选项标识对应的票数基础上,加上该投票信息的票数,生成新的票数,并代替原有票数。例如,原来内存中投票存储文件中选项A的票数为1000票,而在客户端发送的投票信息中,对选项A投了5票,则此时需要将内存中投票存储文件中选项A的票数改为1005票。
输出模块304,用于将内存中的投票存储文件写入磁盘。
具体地,网络投票服务器中一般采用LINUX装置,在LINUX装置下,使用内核线程pdflush将内存中的投票存储文件写入磁盘。在具体写入时,根据投票活动标识找到磁盘内的文件,将内存中的投票存储文件替换磁盘中原有的投票存储文件。
本发明实施例通过将网络投票中的投票存储文件写入内存中,当有客户端发送投票信息时,根据投票信息中用户投出的票数,对内存中投票存储文件中投票选项的票数进行更新,保证了对数据的访问速度,然后再将内存中的投票存储文件写入磁盘,避免了程序崩溃或者断电等故障时引起的数据丢失的问题,不需要使用SSD,节约了成本。
实施例四
本发明实施例提供了一种网络投票数据存储装置,适用于网络投票服务器,参见图5,该装置包括:
映射模块401,用于将网络投票服务器的磁盘中投票存储文件映射到内存中,投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数。
具体地,这里所说的磁盘为普通机械硬盘。投票活动标识用来指示该投票存储文件所对应的投票活动,每个投票存储文件与一个投票活动对应。投票选项标识是一场投票中投票人可以选投的选项的标识。
接收模块402,用于接收客户端发送的投票信息,投票信息包括:投票活动标识、投票人标识、选择的投票选项标识以及与每个选择的投票选项标识对应的票数,投票人标识包括用户身份标识和客户端地址中的至少一个。
具体地,投票信息中投票活动标识是投票人参与的投票活动标识,即该投票信息所参与的投票,因为可能一个投票人同时能对多场投票。当用户采用实名投票时,投票人标识可以包括用户身份标识和客户端地址。而当用户采用匿名身份投票时,此时用户身份标识为空,投票人标识只包括客户端地址。这里客户端地址一般是客户端的IP地址,当然也可以是客户端的MAC地址。投票人选择的投票选项标识用来标识投票人选投的选项,既可以是一个选项也可以多个选项。投票票数与投票选项标识对应,当可以投多个选项时,每个选项的票数与之对应。当然,在只能对每个选项投固定票数(如一票)的投票中,该投票票数可以省略。
处理模块403,用于根据投票信息中的投票选项标识以及投票票数,更新内存中投票存储文件中投票选项标识对应的票数。
输出模块404,用于将内存中的投票存储文件写入磁盘。具体地,网络投票服务器中一般采用LINUX系统,在LINUX系统下,使用内核线程pdflush将内存中的投票存储文件写入磁盘。
具体地,每个投票活动的投票选项都对应一个投票存储文件。每个投票存储文件都有投票活动标识,根据投票活动标识可以将内存中的数据写到磁盘中的投票存储文件中。
具体地,投票存储文件包括索引区和数据区,索引区包括至少一个第一数据块,第一数据块包括投票选项标识以及数据块下标,数据区包括至少一个第二数据块,第二数据块包括投票选项标识以及投票票数,数据块下标用于指示投票选项标识对应的第二数据块映射后的位置。
进一步地,该第二数据块还可以包括更多的字段,以满足实际需求,如投票选项排名等。
例如,索引区每个第一数据块为8字节,其中投票选项标识4字节,数据块下标4字节。数据区每个第二数据块为20字节,包括投票选项标识、投票票数、最后的票时间、投票选项排名和扩展字段。
索引区中第一数据块和数据区中第二数据库的数量相等,都是与前述投票选项数量相等的。
在本实施例的一种实现方式中,映射模块401包括:
第一映射单元4011,用于将索引区中每个第一数据块的投票选项标识以及数据块下标分别作为钥匙key和值value映射到内存红黑树中;
第二映射单元4012,用于将数据区中的多个第二数据块映射到内存中的一个全局数组中,数据块下标为全局数组的下标。即数据块下标用来指示第二数据块映射到内存中全局数组内的下标。
处理模块403在接收到客户端发送的投票信息后,根据投票信息中投票活动标识作为钥匙key在红黑树中找到对应的值value,根据值value确定其对应的数据在全局数组中的位置,根据投票信息中票数进行计票,在全局数组中记录的票数基础上,加上该投票信息的票数,生成新的票数,并代替全局数组中原有票数。例如,原来全局数组中选项A的票数为1000票,而在客户端发送的投票信息中,对选项A投了5票,则此时需要将内存中全局数组中选项A的票数改为1005票。
而当内存中投票存储文件中不存在该投票选项时,还可以添加新的投票选项,即在红黑树和全局数组中添加一条新的记录。
进一步地,在上述全局数组的基础上,网络投票服务器可以对投票选项的得票数进行排序,即对数组中得票数进行排序。排序可以实时进行也可以周期性进行。
另外,除了投票存储文件外,还可以设置单独的存储文件,用来记录投票人的信息,包括投票人标识、投票人投出的票数等。
具体地,输出模块404包括:
输出单元4041,用于周期性地将内存中的投票存储文件写入磁盘;或者,
在内存中空闲页面低于预定量时,将内存中的投票存储文件写入磁盘;或者,
在内存中更新的投票存储文件的量超过预定比例时,将内存中的投票存储文件写入磁盘。
其中,周期性地将内存中的投票存储文件写入磁盘是:在内存中的存储投票信息的第一数据块和第二数据块超过一定时间没更新到磁盘时,将这些数据块写入磁盘中。
进一步地,该装置还包括:
获取模块405,用于获取投票活动配置,投票活动配置包括:投票活动标识、投票选项数量、以及投票活动标识对应的投票存储文件的存储路径;
判断模块406,用于判断投票存储文件的存储路径上是否存在投票存储文件;
新建模块407,用于当投票活动标识对应的投票存储文件的存储路径上不存在投票存储文件时,在投票存储文件的存储路径上新建投票存储文件。
新建后,可以将投票存储文件映射到内存中。而当投票存储文件的存储路径上存在投票存储文件时,直接将投票存储文件映射到内存中。
进一步地,当投票存储文件的存储路径上存在投票存储文件时,还可以验证该投票存储文件的长度,若该投票存储文件的长度与预设长度相等,则直接将投票存储文件映射到内存中,若该投票存储文件的长度与预设长度不相等,在投票存储文件的存储路径上新建投票存储文件。从而保证投票存储文件的准确性。
本发明实施例通过将网络投票中的投票存储文件写入内存中,当有客户端发送投票信息时,根据投票信息中用户投出的票数,对内存中投票存储文件中投票选项的票数进行更新,保证了对数据的访问速度,然后再将内存中的投票存储文件写入磁盘,避免了程序崩溃或者断电等故障时引起的数据丢失的问题,不需要使用SSD,节约了成本。
需要说明的是:上述实施例提供的网络投票数据存储装置在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络投票数据存储装置与网络投票数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种网络投票数据存储方法,适用于网络投票服务器,其特征在于,所述方法包括:
将所述网络投票服务器的磁盘中投票存储文件映射到内存中,所述投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数;
接收客户端发送的投票信息,所述投票信息包括:投票活动标识、选择的投票选项标识以及与每个所述选择的投票选项标识对应的票数;
根据所述投票信息中的投票选项标识以及投票票数,更新所述内存中所述投票存储文件中所述投票选项标识对应的票数;
将内存中的所述投票存储文件写入所述磁盘。
2.根据权利要求1所述的方法,其特征在于,所述投票存储文件分为索引区和数据区,所述索引区包括至少一个第一数据块,所述第一数据块包括投票选项标识以及数据块下标,所述数据区包括至少一个第二数据块,所述第二数据块包括投票选项标识以及投票票数,所述数据块下标用于指示所述投票选项标识对应的第二数据块映射后的位置。
3.根据权利要求2所述的方法,其特征在于,所述将所述网络投票服务器的磁盘中投票存储文件映射到内存中,包括:
将所述索引区中每个第一数据块的投票选项标识以及数据块下标分别作为钥匙key和值value映射到内存红黑树中;
将所述数据区中的多个第二数据块映射到内存中的一个全局数组中,所述数据块下标为所述全局数组的下标。
4.根据权利要求1所述的方法,其特征在于,所述将内存中的所述投票存储文件写入所述磁盘,包括:
周期性地将内存中的所述投票存储文件写入所述磁盘;或者,
如果内存中空闲页面低于预定量,则将内存中的所述投票存储文件写入所述磁盘;或者,
如果所述内存中更新的所述投票存储文件的量超过预定比例,则将内存中的所述投票存储文件写入所述磁盘。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取投票活动配置,所述投票活动配置包括:投票活动标识、投票选项数量、以及所述投票活动标识对应的投票存储文件的存储路径;
判断所述投票存储文件的存储路径上是否存在所述投票存储文件;
当所述投票活动标识对应的投票存储文件的存储路径上不存在所述投票存储文件时,在所述投票存储文件的存储路径上新建所述投票存储文件。
6.一种网络投票数据存储装置,适用于网络投票服务器,其特征在于,所述装置包括:
映射模块,用于将所述网络投票服务器的磁盘中投票存储文件映射到内存中,所述投票存储文件包括:投票活动标识、投票选项标识、以及与投票选项标识对应的票数;
接收模块,用于接收客户端发送的投票信息,所述投票信息包括:投票活动标识、选择的投票选项标识以及与每个所述选择的投票选项标识对应的票数;
处理模块,用于根据所述投票信息中的投票选项标识以及投票票数,更新所述内存中所述投票存储文件中所述投票选项标识对应的票数;
输出模块,用于将内存中的所述投票存储文件写入所述磁盘。
7.根据权利要求6所述的装置,其特征在于,所述投票存储文件分为索引区和数据区,所述索引区包括至少一个第一数据块,所述第一数据块包括投票选项标识以及数据块下标,所述数据区包括至少一个第二数据块,所述第二数据块包括投票选项标识以及投票票数,所述数据块下标用于指示所述投票选项标识对应的第二数据块映射后的位置。
8.根据权利要求7所述的装置,其特征在于,所述映射模块包括:
第一映射单元,用于将所述索引区中每个第一数据块的投票选项标识以及数据块下标分别作为钥匙key和值value映射到内存红黑树中;
第二映射单元,用于将所述数据区中的多个第二数据块映射到内存中的一个全局数组中,所述数据块下标为所述全局数组的下标。
9.根据权利要求6所述的装置,其特征在于,所述输出模块包括:
输出单元,用于周期性地将内存中的所述投票存储文件写入所述磁盘;或者,
在内存中空闲页面低于预定量时,将内存中的所述投票存储文件写入所述磁盘;或者,
在所述内存中更新的所述投票存储文件的量超过预定比例时,将内存中的所述投票存储文件写入所述磁盘。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取投票活动配置,所述投票活动配置包括:投票活动标识、投票选项数量、以及所述投票活动标识对应的投票存储文件的存储路径;
判断模块,用于判断所述投票存储文件的存储路径上是否存在所述投票存储文件;
新建模块,用于当所述投票活动标识对应的投票存储文件的存储路径上不存在所述投票存储文件时,在所述投票存储文件的存储路径上新建所述投票存储文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410305766.0A CN104077082A (zh) | 2014-06-30 | 2014-06-30 | 网络投票数据存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410305766.0A CN104077082A (zh) | 2014-06-30 | 2014-06-30 | 网络投票数据存储方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104077082A true CN104077082A (zh) | 2014-10-01 |
Family
ID=51598369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410305766.0A Pending CN104077082A (zh) | 2014-06-30 | 2014-06-30 | 网络投票数据存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077082A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068769A (zh) * | 2015-08-28 | 2015-11-18 | 浪潮软件股份有限公司 | 一种基于消息中间件的消息管理方法及装置 |
CN105490925A (zh) * | 2015-12-22 | 2016-04-13 | 北京奇虎科技有限公司 | 一种信息有效性的验证方法及装置 |
CN106302829A (zh) * | 2016-10-26 | 2017-01-04 | 腾讯音乐娱乐(深圳)有限公司 | 一种信息访问方法、装置及服务器 |
CN106294675A (zh) * | 2016-08-05 | 2017-01-04 | 乐视控股(北京)有限公司 | 一种投票信息生成方法、生成装置及其电子设备 |
CN108416891A (zh) * | 2018-05-21 | 2018-08-17 | 广西九星互联网络有限公司 | 基于投票ip段的网络投票检测方法及装置 |
CN109949472A (zh) * | 2019-02-28 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 用于投票的系统、方法和装置 |
-
2014
- 2014-06-30 CN CN201410305766.0A patent/CN104077082A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068769A (zh) * | 2015-08-28 | 2015-11-18 | 浪潮软件股份有限公司 | 一种基于消息中间件的消息管理方法及装置 |
CN105490925A (zh) * | 2015-12-22 | 2016-04-13 | 北京奇虎科技有限公司 | 一种信息有效性的验证方法及装置 |
CN105490925B (zh) * | 2015-12-22 | 2019-07-23 | 北京奇虎科技有限公司 | 一种信息有效性的验证方法及装置 |
CN106294675A (zh) * | 2016-08-05 | 2017-01-04 | 乐视控股(北京)有限公司 | 一种投票信息生成方法、生成装置及其电子设备 |
CN106302829A (zh) * | 2016-10-26 | 2017-01-04 | 腾讯音乐娱乐(深圳)有限公司 | 一种信息访问方法、装置及服务器 |
CN108416891A (zh) * | 2018-05-21 | 2018-08-17 | 广西九星互联网络有限公司 | 基于投票ip段的网络投票检测方法及装置 |
CN109949472A (zh) * | 2019-02-28 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 用于投票的系统、方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077082A (zh) | 网络投票数据存储方法和装置 | |
CN107391744B (zh) | 数据存储、读取方法、装置及其设备 | |
CN110019004B (zh) | 一种数据处理方法、装置及系统 | |
CN111352902A (zh) | 日志处理方法、装置、终端设备及存储介质 | |
EP2899649A1 (en) | Data indexing method and device | |
CN109885577B (zh) | 数据处理方法、装置、终端及存储介质 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN111475105A (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN104657435A (zh) | 一种应用数据的存储管理方法和网络管理系统 | |
CN108875046A (zh) | 一种存储系统访问方法、装置及电子设备 | |
CN109981569B (zh) | 网络系统访问方法、装置、计算机设备及可读存储介质 | |
CN108304142B (zh) | 一种数据管理方法和装置 | |
CN111061758A (zh) | 数据存储方法、装置及存储介质 | |
CN113722276A (zh) | 日志数据处理方法、系统、存储介质及电子设备 | |
CN115756955A (zh) | 一种数据备份、数据恢复的方法、装置及计算机设备 | |
CN112783711A (zh) | NodeJS上程序内存分析的方法、存储介质 | |
CN112181662B (zh) | 任务调度方法、装置、电子设备及存储介质 | |
CN115470235A (zh) | 一种数据处理方法、装置以及设备 | |
CN113064919A (zh) | 数据处理方法、数据存储系统、计算机设备及存储介质 | |
CN117577163A (zh) | 一种ssd坏块检测方法、装置、计算机设备及存储介质 | |
CN104216666A (zh) | 一种管理磁盘数据写入的方法及装置 | |
CN110990394B (zh) | 分布式面向列数据库表的行数统计方法、装置和存储介质 | |
CN105279103A (zh) | 一种数据管理方法及装置 | |
CN112015672A (zh) | 一种存储系统中数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 511446 Guangzhou City, Guangdong Province, Panyu District, South Village, Huambo Business District Wanda Plaza, block B1, floor 28 Applicant after: Guangzhou Huaduo Network Technology Co., Ltd. Address before: 510655, Guangzhou, Whampoa Avenue, No. 2, creative industrial park, building 3-08, Applicant before: Guangzhou Huaduo Network Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141001 |
|
RJ01 | Rejection of invention patent application after publication |