CN103309818A - 存储数据的方法及装置 - Google Patents
存储数据的方法及装置 Download PDFInfo
- Publication number
- CN103309818A CN103309818A CN2012100615558A CN201210061555A CN103309818A CN 103309818 A CN103309818 A CN 103309818A CN 2012100615558 A CN2012100615558 A CN 2012100615558A CN 201210061555 A CN201210061555 A CN 201210061555A CN 103309818 A CN103309818 A CN 103309818A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- sub
- network storage
- storage equipment
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5526—Game data structure
- A63F2300/5533—Game data structure using program state or machine event data, e.g. server keeps track of the state of multiple players on in a multiple player game
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种存储数据的方法及装置,属于计算机技术领域。方法包括:根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中。本发明通过根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,并根据业务逻辑需求,将网络存储设备上的数据加载至二维数据缓存阵列的对应的子数据块中,实现本地存储数据,从而可以提高数据存储及交互的效率,且由于存储数据的二维数据缓存阵列为可扩展的,因而提高了数据结构的可扩展性,从而能够满足业务逻辑的需求。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种存储数据的方法及装置。
背景技术
随着游戏市场的蓬勃发展,游戏的种类层出不穷,游戏人数也逐渐从单人发展到多人,随着人数的增多,游戏产生的数据量也逐渐加大,业务逻辑也随之变得更为复杂,如何高效地存储业务逻辑产生的数据,以向用户提供更好的服务,成为了游戏厂家十分关注的问题。
现有技术在存储业务逻辑产生的数据时,将业务逻辑产生的数据通过网络传输到网络存储设备上,并由该网络存储设备上的数据库进行存储,且为了加快数据交互的速度,现有技术还采取了在该网络存储设备上建立缓存空间,将交互频率比较高的数据存储至缓存空间的方式。
在实现本发明的过程中,发明人发现现有技术至少存在以下缺点:
由于在游戏场景中,随时都可能发生数据的更新,无论将业务逻辑产生的数据存储在网络存储设备的缓存空间中还是存储在数据库中,均需要多次通过网络连接至网络存储设备,而网络连接本身就会导致存储效率的降低,还将影响后续的数据交互效率;同时,如果数据库中的数据结构固定,可扩展性不高,将无法满足业务逻辑要求数据结构变更的需求。
发明内容
为了在提高数据存储效率的同时,提高数据结构的可扩展性,以满足业务逻辑的需求,本发明实施例提供了一种存储数据的方法及装置。所述技术方案如下:
一方面,提供了一种存储数据的方法,所述方法包括:
根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,所述二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;
根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中。
进一步地,所述根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列之后,还包括:
根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,所述数据状态为空闲状态、加载状态、正常状态、修改状态、释放状态和定时释放状态中的一种。
进一步地,所述根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中之后,还包括:
根据业务逻辑修改对应的子数据块中的数据,并将修改后的数据同步至所述网络存储设备。
进一步地,所述将修改后的数据同步至所述网络存储设备,包括:
定时轮询每个子数据块的数据状态,将数据状态为修改状态的子数据块中的数据同步至所述网络存储设备。
进一步地,所述将数据状态为修改状态的子数据块中的数据同步至所述网络存储设备之后,还包括:
将所述数据状态为修改状态的子数据块的数据状态修改为正常状态。
进一步地,所述根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中之后,还包括:
根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备,并释放所述对应的子数据块的共享内存。
进一步地,所述根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备,具体包括:
查询每个子数据块的数据状态,并将数据状态为定时释放状态的子数据块中的数据同步至所述网络存储设备。
进一步地,所述将数据状态为定时释放状态的子数据块中的数据同步至所述网络存储设备之后,还包括:
将所述数据状态为定时释放状态的子数据块的状态修改为空闲状态。
进一步地,所述根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中,包括:
在所有子数据块中选择数据状态为空闲状态的子数据块,根据业务逻辑需求,将网络存储设备上的数据加载至选择的子数据块中。
进一步地,所述将网络存储设备上的数据加载至选择的子数据块中之后,还包括:
将所述选择的子数据块的数据状态由空闲状态修改为加载状态,并在数据加载完毕后,将所述选择的子数据块的数据状态由加载状态修改为正常状态。
进一步地,所述根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列之后,还包括:
建立所述二维数据缓存阵列与所述网络存储设备的映射关系表,并根据所述二维数据缓存阵列的子数据块中的数据变化更新所述映射关系表,所述映射关系表存储在所述网络存储设备上,并记录了每个逻辑数据块中的各个子数据块的数据存储情况;
其中,所述二维数据缓存阵列中的每个逻辑数据块对应一个映射关系表,每个逻辑数据块中的子数据块对应映射关系表中的一条记录。
另一方面,提供了一种存储数据的装置,所述装置包括:
配置模块,用于根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,所述二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;
加载模块,用于根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中。
进一步地,所述装置还包括:
设置模块,用于根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,所述数据状态为空闲状态、加载状态、正常状态、修改状态、释放状态和定时释放状态中的一种。
进一步地,所述装置还包括:
修改模块,用于根据业务逻辑修改对应的子数据块中的数据;
修改同步模块,用于将所述修改模块修改后的数据同步至所述网络存储设备。
进一步地,所述修改同步模块,包括:
轮询单元,用于定时轮询每个子数据块的数据状态;
修改同步单元,用于将所述轮询单元轮询到的数据状态为修改状态的子数据块中的数据同步至所述网络存储设备。
进一步地,所述修改同步模块,还包括:
状态修改单元,用于将所述数据状态为修改状态的子数据块的数据状态修改为正常状态。
进一步地,所述装置还包括:
释放同步模块,用于根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备;
释放模块,用于在所述释放同步模块根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备之后,释放所述对应的子数据块的共享内存。
进一步地,所述释放同步模块,包括:
查询单元,用于查询每个子数据块的数据状态;
释放同步单元,用于将所述查询单元查询到的数据状态为定时释放状态的子数据块中的数据同步至所述网络存储设备。
进一步地,所述释放同步模块,还包括:
状态修改单元,用于将所述数据状态为定时释放状态的子数据块的状态修改为空闲状态。
进一步地,所述加载模块,包括:
选择单元,用于在所有子数据块中选择数据状态为空闲状态的子数据块;
加载单元,用于根据业务逻辑需求,将网络存储设备上的数据加载至所述选择单元选择出的子数据块中。
进一步地,所述加载模块,还包括:
状态修改单元,用于将所述选择出的子数据块的数据状态由空闲状态修改为加载状态,并在数据加载完毕后,将所述选择出的子数据块的数据状态由加载状态修改为正常状态。
进一步地,所述装置还包括:
建立模块,用于建立所述二维数据缓存阵列与所述网络存储设备的映射关系表,所述映射关系表存储在所述网络存储设备上,并记录了每个逻辑数据块中的各个子数据块的数据存储情况;
更新模块,用于根据所述二维数据缓存阵列的子数据块中的数据变化更新所述建立模块建立的映射关系表;
其中,所述二维数据缓存阵列中的每个逻辑数据块对应一个映射关系表,每个逻辑数据块中的子数据块对应映射关系表中的一条记录。
本发明实施例提供的技术方案的有益效果是:
通过根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,并根据业务逻辑需求,将网络存储设备上的数据加载至二维数据缓存阵列的对应的子数据块中,实现本地存储数据,从而可以提高数据存储及交互的效率,且由于存储数据的二维数据缓存阵列为可扩展的,因而提高了数据结构的可扩展性,从而能够满足业务逻辑的需求;另外,在子数据块中的数据修改后,通过将修改后的数据同步至网络存储设备,进而实现本地共享内存与网络存储设备的数据同步,有效防止数据丢失。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种存储数据的方法流程图;
图2是本发明实施例二提供的一种数据存储系统的结构示意图;
图3是本发明实施例二提供的一种存储数据的方法流程图;
图4是本发明实施例二提供的一种数据状态转换图;
图5是本发明实施例二提供的一种逻辑数据块的结构示意图;
图6是本发明实施例二提供的一种映射关系表示意图;
图7是本发明实施例三提供的第一种存储数据的装置结构示意图;
图8是本发明实施例三提供的第二种存储数据的装置结构示意图;
图9是本发明实施例三提供的第三种存储数据的装置结构示意图;
图10是本发明实施例三提供的第四种存储数据的装置结构示意图;
图11是本发明实施例三提供的第五种存储数据的装置结构示意图;
图12是本发明实施例三提供的第六种存储数据的装置结构示意图;
图13是本发明实施例三提供的第七种存储数据的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
参见图1,本实施例提供了一种存储数据的方法,该方法流程具体如下:
101:根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;
102:根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中。
进一步地,根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列之后,还包括:
根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,数据状态为空闲状态、加载状态、正常状态、修改状态、释放状态和定时释放状态中的一种。
进一步地,根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中之后,还包括:
根据业务逻辑修改对应的子数据块中的数据,并将修改后的数据同步至网络存储设备。
进一步地,将修改后的数据同步至网络存储设备,包括:
定时轮询每个子数据块的数据状态,将数据状态为修改状态的子数据块中的数据同步至网络存储设备。
进一步地,将数据状态为修改状态的子数据块中的数据同步至网络存储设备之后,还包括:
将数据状态为修改状态的子数据块的数据状态修改为正常状态。
进一步地,根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中之后,还包括:
根据业务逻辑将对应的子数据块中的数据同步至网络存储设备,并释放对应的子数据块的共享内存。
进一步地,根据业务逻辑将对应的子数据块中的数据同步至网络存储设备,具体包括:
查询每个子数据块的数据状态,并将数据状态为定时释放状态的子数据块中的数据同步至网络存储设备。
进一步地,将数据状态为定时释放状态的子数据块中的数据同步至网络存储设备之后,还包括:
将数据状态为定时释放状态的子数据块的状态修改为空闲状态。
进一步地,根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中,包括:
在所有子数据块中选择数据状态为空闲状态的子数据块,根据业务逻辑需求,将网络存储设备上的数据加载至选择的子数据块中。
进一步地,将网络存储设备上的数据加载至选择的子数据块中之后,还包括:
将选择的子数据块的数据状态由空闲状态修改为加载状态,并在数据加载完毕后,将选择的子数据块的数据状态由加载状态修改为正常状态。
进一步地,根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列之后,还包括:
建立二维数据缓存阵列与网络存储设备的映射关系表,并根据二维数据缓存阵列的子数据块中的数据变化更新映射关系表,映射关系表存储在网络存储设备上,并记录了每个逻辑数据块中的各个子数据块的数据存储情况;
其中,二维数据缓存阵列中的每个逻辑数据块对应一个映射关系表,每个逻辑数据块中的子数据块对应映射关系表中的一条记录。
本实施例提供的方法,通过根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,并根据业务逻辑需求,将网络存储设备上的数据加载至二维数据缓存阵列的对应的子数据块中,实现本地存储数据,从而可以提高数据存储及交互的效率,且由于存储数据的二维数据缓存阵列为可扩展的,因而提高了数据结构的可扩展性,从而能够满足业务逻辑的需求;另外,在子数据块中的数据修改后,通过将修改后的数据同步至网络存储设备,进而实现本地共享内存与网络存储设备的数据同步,有效防止数据丢失。
实施例二
本实施例提供了一种存储数据的方法,该方法通过在本地共享内存中配置可扩展的二维数据缓存阵列,对于随系统运行变化而持续变化的数据,不仅由网络存储设备进行存储,还将其从网络存储设备上加载至该二维数据缓存阵列的子数据块中,从而实现数据的本地存储及调用。为了便于说明,结合上述实施例一的内容,本实施例以图2所示的数据存储系统为例,对本实施例提供的方法进行详细地举例说明。参见图3,本实施例提供的方法流程具体如下:
301:根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;
其中,预设的配置策略用于对二维数据缓存阵列中的逻辑数据块个数以及每个逻辑数据块中的子数据块个数和容量进行配置,从而实现对数据结构的横向扩展和纵向扩展进行控制。横向扩展即对二维数据缓存阵列中的逻辑数据块数量的增减变更,纵向扩展即对二维数据缓存阵列中每个逻辑数据块的子数据块个数和容量的增减变更。具体实现时,该配置策略可根据实际情况设置。例如,根据业务逻辑对数据结构的需求设置配置策略中配置的逻辑数据块个数以及子数据块的个数和容量,或采用其他设置方式进行配置,本实施例不对预设的配置策略中所配置的逻辑数据块个数以及子数据块个数和容量进行限定。本地共享内存是指在多任务处理器的计算机系统中,可以被不同中央处理器访问的大容量内存,且该共享内存可直接读写,以提高处理器的处理效率。
该步骤在根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列时,结合图2所示的数据存储系统的结构,可通过调用业务逻辑进程和数据同步代理进程中先启动的一个进程来实现配置操作。例如,如果业务逻辑进程较数据同步代理进程先启动,则由业务逻辑进程根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列;如果数据同步代理进程较业务逻辑进程先启动,则由数据同步代理进程根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列。无论哪个进程执行配置操作,都需要先根据预设的配置策略申请本地共享内存,之后再在申请的本地共享内存中配置二维数据缓存阵列。配置的二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块。为了区别不同的逻辑数据块中的子数据块,可采用坐标的形式对子数据块进行标识。如图2所示,本实施例以配置的二维数据缓存阵列中包括N个逻辑数据块、每个逻辑数据块中包括n个子数据块为例,则可用二维数据坐标(N,n)表示第N个逻辑数据块中的第n个子数据块。
进一步地,无论以何种方式标识子数据块,每个子数据块均可用于存储数据,且二维数据缓存阵列中的逻辑数据块按照逻辑功能可分为动态逻辑数据块和静态逻辑数据块,也就是说,如果逻辑数据块为动态逻辑数据块,则其中的子数据块用于存储动态数据,如果逻辑数据块为静态逻辑数据块,则其中的子数据块用于存储静态数据。其中,动态数据即为可动态加载、释放和同步的数据,用于存储该类数据的子数据块的共享内存空间可循环使用,比如业务逻辑中的游戏玩家角色数据,角色的上下线就涉及数据的同步拉取和存储。静态数据即为一次加载完成后始终不释放,常驻共享内存,因而用于存储该类数据的子数据块的共享内存空间无需释放,且这类数据采用定时机制与网络存储设备进行数据同步,比如游戏中的市场交易大厅数据。本实施例不对逻辑数据块为动态逻辑数据块还是静态逻辑数据块进行限定,实际应用中,也可通过配置策略进行配置。
另外,在配置得到二维数据缓存阵列后,由于二维数据缓存阵列配置在共享内存中,其中的逻辑数据块和子数据块的地址均为共享内存中的物理地址,而业务逻辑处理进程及数据同步代理进程中的地址为逻辑地址,为了后续能够通过业务逻辑处理进程及数据同步代理进程对配置的二维数据缓存阵列中的数据进行操作,配置该二维数据缓存阵列的进程在配置结束后,还需执行将二维数据缓存阵列的内存空间映射到自身进程内存空间的过程,即实现物理地址到逻辑地址的转化。对于未配置二维数据缓存阵列的那个进程,可在启动后执行将二维数据缓存阵列的内存空间映射到自身进程内存空间的过程。
需要说明的是,当二维数据缓存阵列被配置后,在系统不断电、内存不被手动清除或破坏的情况下,二维数据缓存阵列及其中的数据将保持连续性和独立性。也就是说,一旦二维数据缓存阵列配置完成,在系统不断电、内存仍然存在的情况下,该二维数据缓存阵列的数据结构以及其中的数据一直存在。但如果系统断电、内存被清除或是破坏,需要重新执行二维数据缓存阵列的配置过程。对于业务逻辑进程与数据同步代理进程,无论系统是否断电、内存是否被修改或破坏,如果业务逻辑进程或数据同步代理进程被重新启动,均需要重新执行将物理地址转换成逻辑地址的过程。
302:根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,数据状态为空闲状态、加载状态、正常状态、修改状态、释放状态和定时释放状态中的一种;
具体地,在上述步骤301配置得到二维数据缓存阵列之后,由于二维数据缓存阵列中的子数据块用于存储数据,为了明确每个子数据块中存储数据的情况,本实施例提供的方法在该步骤中根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,其中,每个子数据块的数据状态包括但不限于如下6种数据状态:
1、空闲(free):待分配数据;
2、加载(loading):数据加载中;
3、正常(normal):数据加载完毕;
4、修改(modify):数据被修改;
5、释放(remove):数据存储并释放中;
6、定时释放(tick_remove):数据释放失败后,将子数据块置为本状态,即可通过定时控制,定时释放该数据,直到数据释放成功。
在数据存储及更新的过程中,子数据块的数据状态可在上述6种状态之间进行转化,转化关系可如图4所示。对于二维数据缓存阵列中的子数据块而言,在二维数据缓存阵列初始配置完成时,由于子数据块中还未存储数据,则其数据状态为空闲状态,之后再根据数据存储的变化情况及时更改数据状态。
在对每个子数据块设置完数据状态后,完成了二维数据缓存阵列的所有配置,其中的每个逻辑数据块可由逻辑数据块总头及其中的子数据块结构组成。以图5所示的逻辑数据块的结构为例,逻辑数据块的总头为4个字节,用于存放该逻辑数据块中存储数据的长度,每个子数据块的结构由子数据块的头结构及数据组成,子数据块的头结构可如下所示:
其中,数据对应的键值key与该数据在网络存储设备中存储时的key是一致的,也就是说,无论数据是存储在本地共享内存中,还是存储在网络存储设备中,每个数据对应的key是不变的,由此便于一个数据在多个位置存储时的查找。且在配置完二维数据缓存阵列后,当一个子数据块被分配存储数据时,则相应修改该子数据块头结构的key,ver,time,status的值,且该子数据块不会被再次分配,除非该子数据块中的数据被释放并且为free状态;当一个子数据块中的数据被释放时,则相应清除该子数据块头结构的数据,并修改该子数据块头结构的key,ver,time,status的值。
进一步地,由于二维数据缓存阵列中的子数据块用于存储数据,为了保证本地共享内存中的数据与网络存储设备上的数据保持同步,本实施例提供的方法在建立二维数据缓存阵列后,还包括:
建立二维数据缓存阵列与网络存储设备的映射关系表,并根据二维数据缓存阵列的子数据块中的数据变化更新映射关系表,映射关系表存储在网络存储设备上,并记录了每个逻辑数据块中的各个子数据块的数据存储情况;
其中,二维数据缓存阵列中的每个逻辑数据块对应一个映射关系表,每个逻辑数据块中的子数据块对应映射关系表中的一条记录。
建立的映射关系表可如图6所示,二维数据缓存阵列中的一个逻辑数据块对应存储在数据库中的一个映射关系表,该映射关系表记录了该逻辑数据块的结构,每个逻辑数据块中的子数据块对应映射关系表中的一条记录,而且每条记录的大小是固定的,与逻辑数据块中的子数据块的结构大小对应。又由于子数据块中的数据有时会发生变化,因而与该子数据块对应的映射关系表中的记录也将对应更新,即在建立映射关系表之后,需要根据二维数据缓存阵列的子数据块中的数据变化更新映射关系表。
至此,通过上述步骤301至步骤302的配置操作,为数据本地存储以及交互提供了配置保障,根据本地共享内存中配置的二维数据缓存阵列存储数据,以及后续数据的交互过程详见如下步骤。
303:在所有子数据块中选择数据状态为空闲状态的子数据块,根据业务逻辑需求,将网络存储设备上的数据加载至选择出的子数据块中;
针对该步骤,为了避免每次都通过网络连接至网络存储设备来存储数据以及进行数据交互带来的效率低下的问题,本实施例提供的方法通过将网络存储设备上的数据转移存储至本地共享内存的二维数据缓存阵列中,从而实现数据的本地存储。且在将网络存储设备上的数据加载至本地共享内存时,需要先确定空闲的内存,由于每个子数据块中的数据存储情况可由数据状态来标识,因而在所有子数据块中选择数据状态为空闲状态的子数据块,再根据业务逻辑确定将网络存储设备上的哪些数据加载至选择出的空闲状态的子数据块中。接下来,结合图2所示的数据系统结构,对该步骤的具体加载过程进行详细描述。
图2中,由于业务逻辑进程和数据同步代理进程在二维数据缓存阵列配置阶段已实现了共享内存中的物理地址到各自空间逻辑地址的转化,因而业务逻辑进程和数据同步代理进程可以获知二维数据缓存阵列中的各个子数据块的地址,根据业务逻辑确定需要将网络存储设备上的数据加载至本地共享内存时,业务逻辑进程通过业务逻辑进程端的数据接口在二维数据缓存阵列的所有子数据块中选择数据状态为空闲状态的子数据块,即得到待加载数据的子数据块的坐标(N,n),之后再由业务逻辑进程端的数据接口通过消息队列向数据同步代理进程发送对应的数据加载消息,该消息体中除了携带选择出的子数据块的坐标,至少还携带操作类型以及待加载数据的标识,以使数据同步代理进程明确对哪个子数据块执行何种操作。由于该步骤是加载数据的操作,因此,消息体中携带的操作类型为加载;而待加载数据的标识用于明确该待加载数据为网络存储设备中的哪个数据,在本实施例中,无论数据在网络存储设备上存储,还是在本地共享内存中存储,均采用键值key作为每个数据的标识。
数据同步代理进程接收到数据加载消息后,在线程池中选择一个空闲线程,由该空闲线程根据数据加载消息中携带的待加载数据的键值key从网络存储设备获取待加载的数据。本实施例中,网络存储设备仍然以数据库来存储产生的所有数据,且为了提高数据存储及交互的效率,本实施例中预先对数据库中的数据调用频率进行统计,将数据按照调用频率从高到低的顺序排序,并预先将调用频率高的数据存储在缓存空间中,则使数据同步代理进程中的线程可直接从缓存空间中读取待加载的数据,进而提高数据的读取效率。当然,在系统性能允许的情况下,数据同步代理进程中的线程也可直接操作数据库,本实施例在此不作具体限定。
数据同步代理进程中的线程在获取待加载数据时,先根据数据加载消息中携带的待加载数据的键值key在缓存空间中查找待加载数据,如果缓存空间中存在待加载数据,则通过缓存空间与数据同步代理进程之间的数据同步接口将该待加载数据传送给数据同步代理进程,如果缓存空间中不存在待加载数据,则从数据库中查找该待加载数据,并将该待加载数据缓存在缓存空间中,之后再通过缓存空间与数据同步代理进程之间的数据同步接口将该待加载数据传送给数据同步代理进程。无论是从缓存空间中直接查找到待加载数据,还是从数据库中查找到待加载数据,数据同步代理进程在接收到待加载数据后,通过数据同步代理进程端的数据接口将该待加载数据写入对应的子数据块中,即数据加载消息中携带的坐标所对应的子数据块中。且在数据加载过程中,将该正在加载数据的子数据块的数据状态由空闲状态修改为加载状态,并在加载完成后,再将数据状态由加载状态修改为正常状态。至此,将网络存储设备上存储的数据加载到本地共享内存的操作结束,如果后续应用需要调用该数据或对该数据进行其他操作,即可在本地实现,而无需再通过网络连接至网络存储设备。对于加载在本地共享内存中的数据,如果由于业务逻辑需要修改,具体的修改流程详见如下步骤。
304:根据业务逻辑修改对应的子数据块中的数据;
针对该步骤,由于存储在本地共享内存中的数据本身即为随系统运行变化而持续变化的数据,因而在后续数据交互过程中,更新的可能性也比较大,也因为如此,子数据块中存储的数据被修改的情况也将时常发生,本实施例不对修改数据的触发条件进行限定。例如,业务逻辑中的游戏玩家角色数据,角色的上下线发生变化,均可触发根据业务逻辑修改对应的子数据块中已存储的数据。具体修改时,业务逻辑进程可通过业务逻辑进程端的数据接口将修改后的数据直接替换对应的子数据块中已存储的数据,并在修改完成后,将该子数据块的状态由正常状态修改为修改状态。
305:定时轮询每个子数据块的数据状态,将数据状态为修改状态的子数据块中的数据同步至网络存储设备;
具体地,在二维数据缓存阵列的子数据块中的数据被修改后,为了使本地共享内存与网络存储设备之间保持数据同步,进而有效防止数据丢失,本实施例采取了由数据同步代理进程定时轮询每个子数据块的数据状态,并将数据状态为修改状态的子数据块中的数据同步至网络存储设备的方式。该步骤在具体实现时,数据同步代理进程通过数据同步代理进程端的数据结构定时轮询每个子数据块的头结构中的数据状态,如果轮询到子数据块的数据状态为修改状态,即意味着该子数据块中的数据为修改后的数据,数据同步代理进程通过数据同步代理进程端的数据接口从该子数据块中获取修改后的数据及键值key,并在线程池中选择一个空闲的线程,由该空闲的线程将该修改后的数据替换缓存空间中与该修改后的数据具有相同键值key的数据,之后网络存储设备可将缓存空间中修改的数据即刻同步存储到数据库中,也可定时检查缓存空间的更新情况,将一段时间内修改的数据一次性同步存储到数据库中。
为了避免后续步骤将同一修改后的数据重复同步至网络存储设备,数据同步代理进程将数据状态为修改状态的子数据块中的数据同步至网络存储设备之后,还包括将该数据状态为修改状态的子数据块的数据状态修改为正常状态的操作。
进一步地,当二维数据缓存阵列的子数据块中的数据频繁修改,需要频繁将其同步至网络存储设备时,如果数据同步代理进程来不及响应,就会出现数据同步超时的现象,针对该种情况,本实施例提供的方法还包括:通过预设的配置策略来配置数据同步超时时间,并监控数据同步代理进程进行数据同步的时间,如果数据同步代理进程进行数据同步的时间超过配置的数据同步超时时间,则通过业务逻辑进程端的数据接口向业务逻辑进程返回数据业务超时状态码,由业务逻辑决定是否重新进行数据同步。
另外,除了由于子数据块中的数据被修改而触发执行数据同步操作外,根据业务逻辑,如果二维数据缓存阵列的子数据块中的数据不再随系统运行变化而持续变化了,但仍需持久化存储,针对该种情况,为了实现持久化存储,仍需要执行数据同步操作,该种情况下的同步操作过程详见如下步骤。
306:根据业务逻辑将对应的子数据块中的数据同步至网络存储设备,并释放对应的子数据块的共享内存。
针对该步骤,此处的同步操作与上述步骤305中的同步操作的不同点在于,上述步骤305中的同步操作是在二维数据缓存阵列的子数据块中的数据被修改后,为了保证本地共享内存与网络存储设备的数据一致性而触发的,而该步骤是在根据业务逻辑判断二维数据缓存阵列的某个子数据块中的数据不再随系统运行变化而持续变化,但仍需要将其持久化存储的情况下触发的。且由于该步骤针对的数据是不再随系统运行变化而持续变化的数据,因而可释放该类数据占用的共享内存。
具体实现时,如图2所示,在业务逻辑需要存储并释放内存空间时,通过业务逻辑进程调用业务逻辑进程端的数据接口修改待释放数据的子数据块的数据状态,即将待释放数据的子数据块的数据状态由正常状态修改为释放状态,之后再由该数据接口通过消息队列向数据同步代理进程发送数据同步释放消息,该消息体中除了携带待释放数据的子数据块的坐标,至少还携带操作类型以及待释放数据的标识,以使数据同步代理进程明确对哪个子数据块执行何种操作。由于该步骤是同步释放操作,因此,消息体中携带的操作类型为释放;而待释放数据的标识用于明确该待释放数据为二维数据缓存阵列的哪个子数据块中的数据,在本实施例中,无论数据在网络存储设备上存储,还是在本地共享内存中存储,均采用键值key作为每个数据的标识。
数据同步代理进程接收到数据同步释放消息后,通过调用数据同步代理进程端的数据接口将消息体中携带的坐标所对应的子数据块中的数据取出,并在线程池中选择一个空闲的线程,由该空闲的线程将取出的数据同步至网络存储设备的数据库中,由数据库持久化存储该数据。
进一步地,在数据同步代理进程执行数据同步释放的过程中,业务逻辑进程端的数据接口定时检测数据是否释放完毕,如果检测到数据同步释放消息体中携带的坐标所对应的子数据块中没有数据,则判断释放完毕,即该子数据块所占用的共享内存被释放,因而将该子数据块的数据状态由释放状态修改为空闲状态,则该子数据块可再次被分配加载数据;如果检测到数据同步释放消息体中携带的坐标所对应的子数据块中还有数据,则判断释放未结束,但如果预设时间后释放还未结束,则可判断释放失败,即该子数据块所占用的共享内存未被成功释放,因而将该子数据块的数据状态由释放状态修改为定时释放状态。其中,关于预设时间的大小,本实施例不做具体限定。
对于数据状态为定时释放的子数据块,为了成功释放该子数据块占用的共享内存,本实施例提供的方法采取由数据同步代理进程定时查询每个子数据块的数据状态的方式,如果查询到存在数据状态为定时释放状态的子数据块,则重新触发数据同步代理进程将其中的数据同步至网络存储设备的步骤,且在业务逻辑进程端的数据接口检测成功释放该数据状态为定时释放状态的子数据块中的数据之后,将该子数据块的数据状态由定时释放状态修改为空闲状态,从而使该子数据块可再次被分配加载数据。
本实施例提供的方法,通过根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,并根据业务逻辑需求,将网络存储设备上的数据加载至二维数据缓存阵列的对应的子数据块中,实现本地存储数据,从而可以提高数据存储及交互的效率,且由于存储数据的二维数据缓存阵列为可扩展的,因而提高了数据结构的可扩展性,从而能够满足业务逻辑的需求;另外,在子数据块中的数据修改后,通过将修改后的数据同步至网络存储设备,进而实现本地共享内存与网络存储设备的数据同步,有效防止数据丢失。
实施例三
参见图7,本实施例提供了一种存储数据的装置,该装置用于执行上述实施例一或实施例二所提供的存储数据的方法,该装置包括:
配置模块701,用于根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;
加载模块702,用于根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中。
其中,本地共享内存是指在多任务处理器的计算机系统中,可以被不同中央处理器访问的大容量内存,且该共享内存可直接读写,以提高处理器的处理效率。配置模块701在本地共享内存中配置可扩展的二维数据缓存阵列的具体实现过程详见上述实施例二中步骤301的相关描述,此处不再赘述。
参见图8,该装置还包括:
设置模块703,用于根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,数据状态为空闲状态、加载状态、正常状态、修改状态、释放状态和定时释放状态中的一种。
该设置模块703设置数据状态的具体方式详见上述实施例二中步骤302的相关描述,此处不再赘述。
进一步地,参见图9,该装置还包括:
修改模块704,用于根据业务逻辑修改对应的子数据块中的数据;
修改同步模块705,用于将修改模块704修改后的数据同步至网络存储设备。
进一步地,参见图10,修改同步模块705,包括:
轮询单元7051,用于定时轮询每个子数据块的数据状态;
修改同步单元7052,用于将轮询单元7051轮询到的数据状态为修改状态的子数据块中的数据同步至网络存储设备。
进一步地,参见图10,修改同步模块705,还包括:
状态修改单元7053,用于将数据状态为修改状态的子数据块的数据状态修改为正常状态。
其中,该修改同步模块705中的轮询单元7051轮询子数据块的数据状态的过程,以及修改同步单元7052修改数据的过程详见上述实施例二中步骤304的相关描述,此处不再赘述。
进一步地,参见图11,装置还包括:
释放同步模块706,用于根据业务逻辑将对应的子数据块中的数据同步至网络存储设备;
释放模块707,用于在释放同步模块706根据业务逻辑将对应的子数据块中的数据同步至网络存储设备之后,释放对应的子数据块的共享内存。
进一步地,参见图11,释放同步模块706,包括:
查询单元7061,用于查询每个子数据块的数据状态;
释放同步单元7062,用于将查询单元7061查询到的数据状态为定时释放状态的子数据块中的数据同步至网络存储设备。
进一步地,参见图11,释放同步模块706,还包括:
状态修改单元7063,用于将数据状态为定时释放状态的子数据块的状态修改为空闲状态。
释放同步模块706中的查询单元7061查询数据状态的过程,以及释放同步单元7062实现定时释放同步的过程详见上述实施例二中步骤305的相关描述,此处不再赘述。
进一步地,参见图12,加载模块702,包括:
选择单元7021,用于在所有子数据块中选择数据状态为空闲状态的子数据块;
加载单元7022,用于根据业务逻辑需求,将网络存储设备上的数据加载至选择单元选择出的子数据块中。
进一步地,参见图12,加载模块702,还包括:
状态修改单元7023,用于将选择出的子数据块的数据状态由空闲状态修改为加载状态,并在数据加载完毕后,将选择出的子数据块的数据状态由加载状态修改为正常状态。
其中,该加载模块702中的选择单元7021选择子数据块的方式,以及加载单元7022加载数据的过程详见上述实施例二中步骤303的相关描述,此处不再赘述。
进一步地,参见图13,该装置还包括:
建立模块708,用于建立二维数据缓存阵列与网络存储设备的映射关系表,映射关系表存储在网络存储设备上,并记录了每个逻辑数据块中的各个子数据块的数据存储情况;
更新模块709,用于根据二维数据缓存阵列的子数据块中的数据变化更新建立模块707建立的映射关系表;
其中,二维数据缓存阵列中的每个逻辑数据块对应一个映射关系表,每个逻辑数据块中的子数据块对应映射关系表中的一条记录。
本实施例提供的装置,通过根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,并根据业务逻辑需求,将网络存储设备上的数据加载至二维数据缓存阵列的对应的子数据块中,实现本地存储数据,从而可以提高数据存储及交互的效率,且由于存储数据的二维数据缓存阵列为可扩展的,因而提高了数据结构的可扩展性,从而能够满足业务逻辑的需求;另外,在子数据块中的数据修改后,通过将修改后的数据同步至网络存储设备,进而实现本地共享内存与网络存储设备的数据同步,有效防止数据丢失。
需要说明的是:上述实施例提供的存储数据的装置在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的存储数据的装置与存储数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本发明实施例中的全部或部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1.一种存储数据的方法,其特征在于,所述方法包括:
根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,所述二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;
根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中。
2.根据权利要求1所述的方法,其特征在于,所述根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列之后,还包括:
根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,所述数据状态为空闲状态、加载状态、正常状态、修改状态、释放状态和定时释放状态中的一种。
3.根据权利要求2所述的方法,其特征在于,所述根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中之后,还包括:
根据业务逻辑修改对应的子数据块中的数据,并将修改后的数据同步至所述网络存储设备。
4.如权利要求3所述的方法,其特征在于,所述将修改后的数据同步至所述网络存储设备,包括:
定时轮询每个子数据块的数据状态,将数据状态为修改状态的子数据块中的数据同步至所述网络存储设备。
5.根据权利要求4所述的方法,其特征在于,所述将数据状态为修改状态的子数据块中的数据同步至所述网络存储设备之后,还包括:
将所述数据状态为修改状态的子数据块的数据状态修改为正常状态。
6.根据权利要求2所述的方法,其特征在于,所述根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中之后,还包括:
根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备,并释放所述对应的子数据块的共享内存。
7.根据权利要求6所述的方法,其特征在于,所述根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备,具体包括:
查询每个子数据块的数据状态,并将数据状态为定时释放状态的子数据块中的数据同步至所述网络存储设备。
8.根据权利要求7所述的方法,其特征在于,所述将数据状态为定时释放状态的子数据块中的数据同步至所述网络存储设备之后,还包括:
将所述数据状态为定时释放状态的子数据块的状态修改为空闲状态。
9.根据权利要求2所述的方法,其特征在于,所述根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中,包括:
在所有子数据块中选择数据状态为空闲状态的子数据块,根据业务逻辑需求,将网络存储设备上的数据加载至选择的子数据块中。
10.根据权利要求9所述的方法,其特征在于,所述将网络存储设备上的数据加载至选择的子数据块中之后,还包括:
将所述选择的子数据块的数据状态由空闲状态修改为加载状态,并在数据加载完毕后,将所述选择的子数据块的数据状态由加载状态修改为正常状态。
11.根据权利要求1至10中任一权利要求所述的方法,其特征在于,所述根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列之后,还包括:
建立所述二维数据缓存阵列与所述网络存储设备的映射关系表,并根据所述二维数据缓存阵列的子数据块中的数据变化更新所述映射关系表,所述映射关系表存储在所述网络存储设备上,并记录了每个逻辑数据块中的各个子数据块的数据存储情况;
其中,所述二维数据缓存阵列中的每个逻辑数据块对应一个映射关系表,每个逻辑数据块中的子数据块对应映射关系表中的一条记录。
12.一种存储数据的装置,其特征在于,所述装置包括:
配置模块,用于根据预设的配置策略在本地共享内存中配置可扩展的二维数据缓存阵列,所述二维数据缓存阵列包括多个逻辑数据块,每个逻辑数据块包括多个用于存储数据的子数据块;
加载模块,用于根据业务逻辑需求,将网络存储设备上的数据加载至对应的子数据块中。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
设置模块,用于根据每个子数据块中存储数据的情况为每个子数据块设置对应的数据状态,所述数据状态为空闲状态、加载状态、正常状态、修改状态、释放状态和定时释放状态中的一种。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
修改模块,用于根据业务逻辑修改对应的子数据块中的数据;
修改同步模块,用于将所述修改模块修改后的数据同步至所述网络存储设备。
15.根据权利要求14所述的装置,其特征在于,所述修改同步模块,包括:
轮询单元,用于定时轮询每个子数据块的数据状态;
修改同步单元,用于将所述轮询单元轮询到的数据状态为修改状态的子数据块中的数据同步至所述网络存储设备。
16.根据权利要求15所述的装置,其特征在于,所述修改同步模块,还包括:
状态修改单元,用于将所述数据状态为修改状态的子数据块的数据状态修改为正常状态。
17.根据权利要求13所述的装置,其特征在于,所述装置还包括:
释放同步模块,用于根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备;
释放模块,用于在所述释放同步模块根据业务逻辑将对应的子数据块中的数据同步至所述网络存储设备之后,释放所述对应的子数据块的共享内存。
18.根据权利要求17所述的装置,其特征在于,所述释放同步模块,包括:
查询单元,用于查询每个子数据块的数据状态;
释放同步单元,用于将所述查询单元查询到的数据状态为定时释放状态的子数据块中的数据同步至所述网络存储设备。
19.根据权利要求18所述的装置,其特征在于,所述释放同步模块,还包括:
状态修改单元,用于将所述数据状态为定时释放状态的子数据块的状态修改为空闲状态。
20.根据权利要求13所述的装置,其特征在于,所述加载模块,包括:
选择单元,用于在所有子数据块中选择数据状态为空闲状态的子数据块;
加载单元,用于根据业务逻辑需求,将网络存储设备上的数据加载至所述选择单元选择出的子数据块中。
21.根据权利要求20所述的装置,其特征在于,所述加载模块,还包括:
状态修改单元,用于将所述选择出的子数据块的数据状态由空闲状态修改为加载状态,并在数据加载完毕后,将所述选择出的子数据块的数据状态由加载状态修改为正常状态。
22.根据权利要求12至20中任一权利要求所述的装置,其特征在于,所述装置还包括:
建立模块,用于建立所述二维数据缓存阵列与所述网络存储设备的映射关系表,所述映射关系表存储在所述网络存储设备上,并记录了每个逻辑数据块中的各个子数据块的数据存储情况;
更新模块,用于根据所述二维数据缓存阵列的子数据块中的数据变化更新所述建立模块建立的映射关系表;
其中,所述二维数据缓存阵列中的每个逻辑数据块对应一个映射关系表,每个逻辑数据块中的子数据块对应映射关系表中的一条记录。
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210061555.8A CN103309818B (zh) | 2012-03-09 | 2012-03-09 | 存储数据的方法及装置 |
PCT/CN2013/072042 WO2013131443A1 (zh) | 2012-03-09 | 2013-03-01 | 存储数据的方法及装置 |
JP2014560227A JP5851055B2 (ja) | 2012-03-09 | 2013-03-01 | データ格納方法および装置 |
EP13757716.9A EP2824893B1 (en) | 2012-03-09 | 2013-03-01 | Data storage method and device |
MX2014010780A MX352050B (es) | 2012-03-09 | 2013-03-01 | Método y dispositivo de almacenamiento de datos. |
BR112014021885-4A BR112014021885B1 (pt) | 2012-03-09 | 2013-03-01 | Método e dispositivo de armazenamento de dados |
KR1020147028190A KR101663215B1 (ko) | 2012-03-09 | 2013-03-01 | 데이터 저장 방법 및 장치 |
PH12014501932A PH12014501932A1 (en) | 2012-03-09 | 2014-08-27 | Data storage method and device |
US14/478,151 US20150006486A1 (en) | 2012-03-09 | 2014-09-05 | Method and apparatus for storing data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210061555.8A CN103309818B (zh) | 2012-03-09 | 2012-03-09 | 存储数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309818A true CN103309818A (zh) | 2013-09-18 |
CN103309818B CN103309818B (zh) | 2015-07-29 |
Family
ID=49115942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210061555.8A Active CN103309818B (zh) | 2012-03-09 | 2012-03-09 | 存储数据的方法及装置 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20150006486A1 (zh) |
EP (1) | EP2824893B1 (zh) |
JP (1) | JP5851055B2 (zh) |
KR (1) | KR101663215B1 (zh) |
CN (1) | CN103309818B (zh) |
BR (1) | BR112014021885B1 (zh) |
MX (1) | MX352050B (zh) |
PH (1) | PH12014501932A1 (zh) |
WO (1) | WO2013131443A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107040396A (zh) * | 2016-02-03 | 2017-08-11 | 博雅网络游戏开发(深圳)有限公司 | 配置信息获取方法和装置 |
CN107346307A (zh) * | 2016-05-04 | 2017-11-14 | 北京京东尚科信息技术有限公司 | 分布式缓存系统及方法 |
CN108566552A (zh) * | 2018-04-20 | 2018-09-21 | 四川长虹网络科技有限责任公司 | 适用于数字机顶盒的多媒体播放方法及系统 |
CN109284236A (zh) * | 2018-08-28 | 2019-01-29 | 北京三快在线科技有限公司 | 数据预热方法、装置、电子设备及存储介质 |
CN105607865B (zh) * | 2014-11-17 | 2019-04-23 | 华邦电子股份有限公司 | 安全数据储存装置、系统及其数据写入与读取方法 |
CN112448983A (zh) * | 2019-09-02 | 2021-03-05 | 广州彩熠灯光股份有限公司 | 一种将多个物理设备集群为一逻辑设备的方法 |
WO2022017458A1 (zh) * | 2020-07-23 | 2022-01-27 | 北京字节跳动网络技术有限公司 | 同步数据方法、装置、电子设备和介质 |
CN116107517A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
WO2024104219A1 (zh) * | 2022-11-17 | 2024-05-23 | 达芬骑动力科技(北京)有限公司 | 一种用于车辆状态信号数据存储的数据磁盘存储管理方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562775B (zh) | 2017-07-14 | 2020-04-24 | 创新先进技术有限公司 | 一种基于区块链的数据处理方法及设备 |
CN107608627B (zh) * | 2017-08-21 | 2020-10-02 | 云宏信息科技股份有限公司 | 一种远端数据分级存储方法、电子设备及存储介质 |
CN108073687B (zh) * | 2017-11-17 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 随机游走、基于集群的随机游走方法、装置以及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269608B2 (en) * | 2001-05-30 | 2007-09-11 | Sun Microsystems, Inc. | Apparatus and methods for caching objects using main memory and persistent memory |
CN101329657A (zh) * | 2007-06-19 | 2008-12-24 | 瑞达信息安全产业股份有限公司 | 一种用于多应用间的安全共享动态内存系统和方法 |
CN101431525A (zh) * | 2007-11-06 | 2009-05-13 | 陈明杰 | 网络内容加载的加速方法、系统及其服务器和终端 |
CN101495961A (zh) * | 2006-07-25 | 2009-07-29 | 高通股份有限公司 | 用于多个软件程序的瓦片式高速缓存器 |
CN101739357A (zh) * | 2008-11-21 | 2010-06-16 | 辉达公司 | 多类数据高速缓存策略 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005004282A (ja) * | 2003-06-09 | 2005-01-06 | Nec Corp | ディスクアレイ装置、ディスクアレイ装置の管理方法及び管理プログラム |
CN1279455C (zh) * | 2003-11-14 | 2006-10-11 | 清华大学 | 光纤通道-存储区域网络系统的逻辑单元号高速缓存方法 |
US7117310B2 (en) * | 2004-02-18 | 2006-10-03 | Lsi Logic Corporation | Systems and methods for cache synchronization between redundant storage controllers |
US7272687B2 (en) * | 2005-02-01 | 2007-09-18 | Lsi Corporation | Cache redundancy for LSI raid controllers |
JP4819369B2 (ja) * | 2005-02-15 | 2011-11-24 | 株式会社日立製作所 | ストレージシステム |
US20080091895A1 (en) * | 2006-10-11 | 2008-04-17 | Inventec Corporation | Cache data backup method and system for computer clustering systems |
JP4430092B2 (ja) * | 2007-08-28 | 2010-03-10 | 富士通株式会社 | Raid装置、raid装置の制御部およびraid装置のライトバック制御方法 |
CN101398821A (zh) * | 2007-09-26 | 2009-04-01 | 新奥特硅谷视频技术有限责任公司 | 基于本地缓存和虚拟文件系统技术的网络存储方法及系统 |
CN101330510A (zh) * | 2008-06-19 | 2008-12-24 | 腾讯数码(深圳)有限公司 | 下发目录树数据的方法、系统和服务器,以及一种客户端 |
WO2011149564A1 (en) * | 2010-05-28 | 2011-12-01 | Tetris Online, Inc. | Interactive hybrid asynchronous computer game infrastructure |
CN102035881B (zh) * | 2010-11-19 | 2013-01-16 | 清华大学 | 一种云端存储系统的数据缓存方法 |
CN103609117B (zh) * | 2011-06-16 | 2017-07-04 | 飞思卡尔半导体公司 | 编码和解码图像的方法及装置 |
-
2012
- 2012-03-09 CN CN201210061555.8A patent/CN103309818B/zh active Active
-
2013
- 2013-03-01 BR BR112014021885-4A patent/BR112014021885B1/pt active IP Right Grant
- 2013-03-01 KR KR1020147028190A patent/KR101663215B1/ko active IP Right Grant
- 2013-03-01 MX MX2014010780A patent/MX352050B/es active IP Right Grant
- 2013-03-01 WO PCT/CN2013/072042 patent/WO2013131443A1/zh active Application Filing
- 2013-03-01 JP JP2014560227A patent/JP5851055B2/ja active Active
- 2013-03-01 EP EP13757716.9A patent/EP2824893B1/en active Active
-
2014
- 2014-08-27 PH PH12014501932A patent/PH12014501932A1/en unknown
- 2014-09-05 US US14/478,151 patent/US20150006486A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269608B2 (en) * | 2001-05-30 | 2007-09-11 | Sun Microsystems, Inc. | Apparatus and methods for caching objects using main memory and persistent memory |
CN101495961A (zh) * | 2006-07-25 | 2009-07-29 | 高通股份有限公司 | 用于多个软件程序的瓦片式高速缓存器 |
CN101329657A (zh) * | 2007-06-19 | 2008-12-24 | 瑞达信息安全产业股份有限公司 | 一种用于多应用间的安全共享动态内存系统和方法 |
CN101431525A (zh) * | 2007-11-06 | 2009-05-13 | 陈明杰 | 网络内容加载的加速方法、系统及其服务器和终端 |
CN101739357A (zh) * | 2008-11-21 | 2010-06-16 | 辉达公司 | 多类数据高速缓存策略 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607865B (zh) * | 2014-11-17 | 2019-04-23 | 华邦电子股份有限公司 | 安全数据储存装置、系统及其数据写入与读取方法 |
CN107040396A (zh) * | 2016-02-03 | 2017-08-11 | 博雅网络游戏开发(深圳)有限公司 | 配置信息获取方法和装置 |
CN107346307A (zh) * | 2016-05-04 | 2017-11-14 | 北京京东尚科信息技术有限公司 | 分布式缓存系统及方法 |
CN108566552A (zh) * | 2018-04-20 | 2018-09-21 | 四川长虹网络科技有限责任公司 | 适用于数字机顶盒的多媒体播放方法及系统 |
CN108566552B (zh) * | 2018-04-20 | 2021-05-25 | 四川长虹网络科技有限责任公司 | 适用于数字机顶盒的多媒体播放方法及系统 |
CN109284236A (zh) * | 2018-08-28 | 2019-01-29 | 北京三快在线科技有限公司 | 数据预热方法、装置、电子设备及存储介质 |
CN112448983A (zh) * | 2019-09-02 | 2021-03-05 | 广州彩熠灯光股份有限公司 | 一种将多个物理设备集群为一逻辑设备的方法 |
CN112448983B (zh) * | 2019-09-02 | 2023-09-19 | 广州彩熠灯光股份有限公司 | 一种将多个物理设备集群为一逻辑设备的方法 |
WO2022017458A1 (zh) * | 2020-07-23 | 2022-01-27 | 北京字节跳动网络技术有限公司 | 同步数据方法、装置、电子设备和介质 |
WO2024104219A1 (zh) * | 2022-11-17 | 2024-05-23 | 达芬骑动力科技(北京)有限公司 | 一种用于车辆状态信号数据存储的数据磁盘存储管理方法 |
CN116107517A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN116107517B (zh) * | 2023-04-11 | 2023-06-09 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
BR112014021885A2 (zh) | 2017-06-20 |
US20150006486A1 (en) | 2015-01-01 |
JP5851055B2 (ja) | 2016-02-03 |
WO2013131443A1 (zh) | 2013-09-12 |
EP2824893A1 (en) | 2015-01-14 |
MX2014010780A (es) | 2014-10-14 |
PH12014501932B1 (en) | 2014-11-24 |
EP2824893B1 (en) | 2018-06-13 |
KR20140133603A (ko) | 2014-11-19 |
MX352050B (es) | 2017-11-06 |
EP2824893A4 (en) | 2015-05-27 |
KR101663215B1 (ko) | 2016-10-14 |
PH12014501932A1 (en) | 2014-11-24 |
BR112014021885B1 (pt) | 2022-05-17 |
JP2015509635A (ja) | 2015-03-30 |
CN103309818B (zh) | 2015-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309818A (zh) | 存储数据的方法及装置 | |
US11042311B2 (en) | Cluster system with calculation and storage converged | |
US10048865B2 (en) | Disk partition stitching and rebalancing using a partition table | |
US9792227B2 (en) | Heterogeneous unified memory | |
CN104407933A (zh) | 一种数据的备份方法及装置 | |
CN103544269A (zh) | 目录的存储方法、查询方法及节点控制器 | |
CN104202423A (zh) | 一种通过软件架构扩展缓存的系统 | |
CN103309737A (zh) | 一种切换操作系统的方法及设备 | |
CN104281528A (zh) | 一种数据存储方法及装置 | |
CN103995755A (zh) | 基于移动终端的服务器优化方法及服务器系统 | |
WO2020220971A1 (zh) | 一种文件加载方法、装置、电子设备及存储介质 | |
CN105874428A (zh) | 用于多个操作系统环境中的操作系统转变的技术 | |
JP2023045456A (ja) | コンピュテーショナルストレージドライブ | |
CN113392863A (zh) | 一种机器学习训练数据集的获取方法、获取装置及终端 | |
JP2017502539A (ja) | マルチユーザの省電力コードブックの最適化を実現するためのシステムおよび方法 | |
CN103019833A (zh) | 终端设备以及使终端设备支持操作系统快速切换的方法 | |
CN102375780B (zh) | 一种分布式文件系统中元数据缓存管理的方法 | |
CN102868739B (zh) | 应用于ip san集群存储系统的交换设备 | |
CN110109677B (zh) | 一种动态对象缓存池分配方法 | |
CN111078407B (zh) | 内存管理的方法、装置、存储介质及电子设备 | |
CN102541808A (zh) | Soc芯片系统及实现Soc芯片中可配置缓冲器的方法 | |
CN111628895B (zh) | 一种配置数据同步方法、装置、设备及可读存储介质 | |
US20220226735A1 (en) | Information processing device | |
CN113778688A (zh) | 内存管理系统、内存管理方法、内存管理装置 | |
JP5505195B2 (ja) | メモリの制御装置、及び制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151224 Address after: The South Road in Guangdong province Shenzhen city Fiyta building 518057 floor 5-10 Nanshan District high tech Zone Patentee after: Shenzhen Tencent Computer System Co., Ltd. Address before: 518000 Guangdong city of Shenzhen province Futian District SEG Science Park 2 East Room 403 Patentee before: Tencent Technology (Shenzhen) Co., Ltd. |