CN105975634B - 分布式数据存储系统中多维有序数据的存储方法 - Google Patents
分布式数据存储系统中多维有序数据的存储方法 Download PDFInfo
- Publication number
- CN105975634B CN105975634B CN201610459969.4A CN201610459969A CN105975634B CN 105975634 B CN105975634 B CN 105975634B CN 201610459969 A CN201610459969 A CN 201610459969A CN 105975634 B CN105975634 B CN 105975634B
- Authority
- CN
- China
- Prior art keywords
- mrow
- msub
- msubsup
- read
- dimension
- 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
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000013500 data storage Methods 0.000 title claims abstract description 14
- 238000004891 communication Methods 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 3
- 238000013523 data management Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 9
- 230000001550 time effect Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004451 qualitative analysis Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Classifications
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种分布式数据存储系统中多维有序数据的存储方法,属于计算机数据管理技术领域。该方法首先对待存储对象进行定义,得到由待存储对象组成的多维有序数据集合,并对基于该多维有序数据集合的操作进行定义;随后枚举所有的存储方案并计算相应的期望时间代价,最终选择期望时间代价最小的存储方案作为最终存储方案。本发明能够有效的找到一种高效的多维有序数据集合存储方案,方法直观有效、便于使用。
Description
技术领域
本发明属于计算机数据管理技术领域,特别涉及一种分布式数据存储系统中多维有序数据的存储方法。
背景技术
维度是组成现实世界事物的基本状态,随着对物理世界认知的加深,人们不再仅仅使用一个维度刻画事物,而是同时存储和使用多个维度对数据进行描述。多维有序数据是指某些维度具有顺序关系的数据集合,以这种数据为基础的应用广泛存在。例如,在气象预报中,用户需要使用预报模式、物理量类型、预报时刻、预报时效、地理高度等5个维度共同刻画一个气象预报数据,而在设备的传感监测中,至少需要设备ID、监测物理量类型、监测时刻等3个维度对监测数据进行描述。
新兴的分布式计算机数据存储系统(后文简称为分布式存储系统)在处理海量数据方面具有较强优势,以HBase、Cassandra为代表的基于Key-Value的分布式存储系统广泛应用于大数据场景。分布式存储系统实质是一个多维的分布式映射,一个分布式存储系统由n个节点组成,通过列族名(Column Family)、行键(Row Key)、列名(Column Name)唯一地映射到一个值(Value),数据会根据行键分布到不同的节点上。不同于传统数据库以严格的表结构存储数据,分布式存储系统的数据是以松散结构的多维哈希表存储在系统中,是一种面向行的存储;其弱化了表的结构,可以自由地向列族中添加数据。每一个列族都被设计为一组数据关联或排列。而且根据用户需求场景,还可以采用多种灵活的方式保存数据,而不必拘泥于早前定义的表结构。
面对新兴的分布式存储系统,多维有序数据的存储带来了新的问题:(1)多种维度如何存储在分布式存储系统中;(即进行合理的存储结构设计)(2)针对有序维度连续访问的特点,如何得到性能最优的存储方案。
目前工业界对分布式存储系统存储结构设计的讨论主要在于定性分析,而非定量计算,例如易趣(Ebay)的工程师在《Cassandra数据模型设计最佳实践》对存储结构设计提出了4项关键原则;《Cassandra:The Definitive Guide》一书也定性的分析了存储结构设计的原则。但这些原则都需要依赖于工程师的使用经验,不能通过定量计算来完成设计。
发明内容
本发明的目的是针对目前分布式存储系统,数据保存方式灵活,结构弱化,方案众多,但性能无法预先评测的问题,提出一种分布式数据存储系统中多维有序数据的存储方法。本发明基于对存储系统的原理分析,通过对有序数据的基本操作进行理论时间代价评估,最终得到一种期望性能最优的存储方案;该方案具备应对大数据的能力,且具有很强的适应性。
本发明提出一种分布式数据存储系统中多维有序数据的存储方法,包括以下步骤:
1)对待存储的由多个对象组成的多维数据进行定义,并将维度划分为有序维度集合与无序维度集合;
设O={o1,o2,...,os}为s个待存储对象组成的集合,Dim{D1,D2,...,Dk}为集合O中所有待存储对象维度集合,共有k个维度,s、k均为正整数;V为集合O中所有待存储对象数据值集合;
设M为有序维度集合,N为无序维度集合,M、N均为非负整数,则待存储对象组成的集合O表达为多维有序数据集合的形式,如式(1)所示:
SeqData(|o1,o2,...,os|,M,N,V) (1)
2)对基于步骤1)得到的多维有序数据集合的读取操作进行定义;
2-1)单元读取:对Di∈Dim,通过指定每一个维度的具体值Di=di,i=1,2,...k,进行数据读取的操作称为单元读取,定义单元读取操作为:Opread;
2-2)确定顺序近邻读取维度;对于有顺序近邻读取需求的维度Dtarget∈M,获取在该维度上的顺序近邻操作定义为:Opnext(Dtarget);
即对于维度Dtarget,取值为dtarget,通过指定Dtarget=l-1(l(dtarget)+1)实现顺序近邻操作,其中l为顺序函数,将维度取值映射为有序数据序号,l-1则将数据序号反映射为维度取值;
2-3)确定逆序近邻操作维度;对于有逆序近邻读取需求的维度Dtarget∈M,获取在该维度上的逆序近邻操作定义为:Oppre(Dtarget);
即对于维度Dtarget,通过指定Dtarget=l-1(l(dtarget)-1)实现逆序近邻操作;
2-4)确定序列读取操作;
一次序列读取操作包含一次单元读取操作以及q次连续的顺序或逆序近邻操作;一次序列读取操作定义为:Opseq(Dtarget,q);
根据具体数据访问需求,确定最终的序列读取操作需求,即确定SeqArray=[Opseq1,Opseq2,...,Opseqt],其中Opseq是Opseq(Dtarget,q)的简写,表示一种序列读取操作;SeqArray为针对具体数据访问需求的访问序列数组,共包括t个序列读取操作;
2-5)统计步骤2-4)中不同序列读取操作的使用频率,得到与会话数组对应的使用频率数组FreqArray=[fre1,fre2,...,fret],frei表示第i种序列读取操作的频率;
3)枚举存储方案,计算每种存储方案期望时间代价;
多维有序数据集合的存储方案,即求解函数func使得对于所有Di,func(Di)=DimArray[c],c=1,2;其中,函数func表示存储方案,c代表数据下标,1,2是数组下标的可能取值;
给定一种存储方案func,对系统读取时间代价进行评估,对于每一种操作,又分为两种情况,本地读取和异地读取;
3-1)测量当前系统的网络传输速度和磁盘读取速度;其中Ttrans为系统网络传输单个数据速度,Tread为磁盘读取速度;
3-2)计算单元读取时间代价;对于一次单元读取操作Opread,计算其本地读取时间代价如式(2)所示:
式中,|Di|为维度Di的不同值的个数;TrowLocate为行键在节点中定位和读取的时间,TcolLocate为列寻址和定位时间;
对应地,如果数据异地地读取,则增加协调者节点到数据拥有者节点的一次网络通信,定义异地读取时间代价如式(3)所示:
即增加一次数据网络通信消耗;
3-3)计算顺序近邻读取时间代价;
本地读取时间代价如式(4)所示:
式中,Tindex为设置性能消耗,定义Sign()为符号函数,Sign(true)=1;Sign(false)=0;
如果数据异地读取,则其异地读取时间代价如式(5)所示:
3-4)计算逆序近邻读取时间代价;
本地读取时间代价如式(6)所示:
如果数据异地读取,则其异地读取时间代价如式(7)所示:
3-5)对于t个序列读取操作,计算每一种序列读取的时间代价;
其中,n是集群节点个数,q是该种序列读取的连续次数;
3-6)计算给定存储方案的期望时间代价E;
4)重复步骤3),遍历所有枚举的存储方案并计算其相应的期望时间代价,选择期望时间代价最小的存储方案作为最终存储方案。
本发明提出的分布式数据存储系统中多维有序数据的存储方法,其特点和优点是:
1、本发明方法可以针对多维有序数据集合得到一种有效的分布式存储方案。借助分布式存储系统的优势,完成数据的基本操作。
2、本发明可以在真实数据未导入的情况下,对系统的性能进行评估,有效避免了系统性能在数据未导入前无法比较不同存储方案性能差异的问题。
3、本发明基于分布式存储系统,将多维有序数据的操作映射到分布式存储系统的操作,使其具备应对大数据的能力。
4、本发明方法具有很强的适应性,能够适用于多种分布式存储系统和各种多维有序数据集合。
附图说明
图1是本发明的分布式数据存储系统中多维有序数据存储方法的流程框图。
具体实施方式
本发明提出的一种分布式数据存储系统中多维有序数据的存储方法,下面结合附图和具体实施例进一步详细说明如下。
本发明提出的一种分布式数据存储系统中多维有序数据存储方法,其流程框图如图1所示,该方法包括以下步骤:
1)对待存储的由多个对象组成的多维数据进行定义,并将维度划分为有序维度集合与无序维度集合;
设O={o1,o2,...,os}为s个待存储对象组成的集合,Dim{D1,D2,...,Dk}为集合O中所有待存储对象维度集合,共有k个维度,s、k均为正整数;V为为集合O中所有待存储对象数据值集合;
多维数据的有些维度是存在顺序关系的,设M为有序维度集合,N为无序维度集合,M、N均为非负整数,则待存储对象组成的集合O表达为多维有序数据集合的形式,如式(1)所示:
SeqData(|o1,o2,...,os|,M,N,V) (1)
本实施例中,以包含5个维度气象预报数据的待存储的数据为例进行说明。在后文称该数据为:示例数据。5个维度的气象数据如表1所示:
表1 5个维度的气象数据表
表1中,第一行t1表示在t639模式下温度物理量在800pa层次上2015.2.18.08未来3小时的数据,这样的一行记为一个待存储对象o;模式、物理量、层次、起报时刻、预报时效为5个维度Dim;表1中的层次维度和预报时效维度为有序维度集合;
2)对基于步骤1)得到的多维有序数据集合的读取操作进行定义;
针对多维有序数据的访问包括三种基本读取操作:单元读取、顺序近邻读取和逆序近邻读取来描述。这三种基本读取操作又可以组成较为复杂的序列读取操作。本方法的评估最终是以序列读取操作为单位进行的。
2-1)单元读取;对于多维有序数据集合,最基本操作就是指定各个维度的值,随后读取数据,对Di∈Dim,通过指定每一个维度的具体值Di=di(i=1,2,...k),进行数据读取的操作称为单元读取,定义单元读取操作为:Opread;
例如在表1所示的数据中,可以通过指定模式=t639,物理量=temper,层次=800pa,起报时刻=2015.2.18.08,预报时效=3小时来读取对应的数据即13摄氏度。
2-2)确定顺序近邻读取维度;在多维有序数据集和中,往往存在沿着某个有序维度进行顺序访问的操作;对于有顺序近邻读取需求的维度Dtarget∈M,获取在该维度上的顺序近邻操作定义为:Opnext(Dtarget);
即对于维度Dtarget,取值为dtarget,通过指定Dtarget=l-1(l(dtarget)+1)实现顺序近邻操作,其中l为顺序函数,将维度取值映射为有序数据序号,l-1则将数据序号反映射为维度取值;
2-3)确定逆序近邻操作维度;在多维有序数据集和中,同样往往存在沿着某个有序维度进行逆序访问的操作;对于有逆序近邻读取需求的维度Dtarget∈M,获取在该维度上的逆序近邻操作定义为:Oppre(Dtarget);
即对于维度Dtarget,通过指定Dtarget=l-1(l(dtarget)-1)实现逆序近邻操作;
2-4)确定序列读取操作;
多维有序数据的访问往往是一组连续操作,将连续的操作称作一次序列读取。例如,在示例数据中,为了观测温度在未来24小时内的变化情况,就需要在预报时效维度上做连续多次近邻读取,通过观测连续的数据来了解温度的变化情况。对多维有序数据集合的操作最终是以多个序列读取来完成的。
具体地,一次序列读取操作包含一次单元读取操作(设其在Dtarget维度上进行),以及q次连续的顺序或逆序近邻操作;一次序列读取操作定义为:Opseq(Dtarget,q);
因此,在该步骤根据具体数据访问需求,确定最终的序列读取操作需求,即确定SeqArray=[Opseq1,Opseq2,...,Opseqt],其中Opseq是Opseq(Dtarget,q)的简写,表示一种序列读取操作。SeqArray为针对具体数据访问需求的访问序列数组,共包括t个序列读取操作;
2-5)统计步骤2-4)中不同序列读取操作的使用频率,得到与访问序列数组对应的使用频率数组FreqArray=[fre1,fre2,...,fret],frei表示第i种序列读取操作的频率;
3)枚举存储方案,计算每种存储方案期望时间代价;
分布式存储系统可以在行键(RowKey)和列名(ColumnKey)中保存数据维度信息;进一步,定义行键中包含的维度为集合RKSet,列名中包含的维度为集合CKSet;那么多维有序数据集合的存储方案即:将多维有序数据集合中的所有维度Di∈Dim划分到DimArray=[RKSet,CKSet]的划分问题,也即求解函数func使得对于所有Di,func(Di)=DimArray[c],c=1,2(其中c代表数据下标,1,2是数组下标的可能取值);这里将函数func称为存储方案。例如,在示例数据中,可以通过把模式、物理量、层次维度放在行健上(即加入RKSet),把起报时刻、预报时效维度放在列名上(即加入CKSet),则可以通过构造行键t639_temper_800pa,列名2015.2.18.08_003来将第一条数据存储在分布式存储系统中,即为一种存储方案。
给定一种存储方案func,对系统读取时间代价进行评估,对于每一种操作,又分为两种情况,1.本地读取,即数据恰巧在客户端连接的协调者节点(客户端连接的节点称作当前客户端的协调者节点)上,则可以在本地读取,直接发送给客户端。2.异地读取,即数据不再协调者节点上,则需要把请求转发给数据真正的拥有者节点,拥有者节点读取完毕后,再较数据传回给协调者节点,在有协调者节点发给送给客户端。
3-1)测量当前系统的网络传输速度和磁盘读取速度;其中Ttrans为系统网络传输单个数据速度,Tread为磁盘读取速度,以上数据均可通过实际测量获得;
3-2)计算单元读取时间代价;对于一次精确读取操作Opread,计算其本地读取时间代价如式(2)所示:
式中,Ttrans为系统网络传输单个数据速度,Tread为磁盘读取速度,在3-1)已经通过实际测量读出,|Di|为维度Di的不同值的个数;TrowLocate为行键在节点中定位和读取的时间,TcolLocate为列寻址和定位时间,这两项不需要测量,只需保留在计算式中即可。
如果数据异地读取,则增加协调者节点到数据拥有者节点的一次网络通信,定义异地读取时间代价如式(3)所示:
即增加一次数据网络通信消耗;
3-3)计算顺序近邻读取时间代价;
本地读取时间代价如式(4)所示:
如果顺序访问的维度不在列键集合中,则需要查找索引或者规则找到该维度下一个数值,设置性能消耗为Tindex,顺序遍历的维度如果不在列键上,则其必须是有序有限维,否则通过索引来找到其顺序近邻;定义Sign()为符号函数,Sign(true)=1;Sign(false)=0。
如果数据异地读取,则其异地读取时间代价如式(5)所示:
3-4)计算逆序近邻读取时间代价;本地读取时间代价如式(6)所示:
如果数据异地读取,则其异地读取时间代价如式(7)所示:
3-5)对于t个序列读取操作,计算每一种序列读取的时间代价;
其中n是集群节点个数,q是该种序列读取的连续次数;
3-6)计算给定存储方案的期望时间代价E;
(4)重复步骤3),遍历所有枚举的存储方案并计算其相应的期望时间代价,选择期望时间代价最小的存储方案作为最终存储方案。
Claims (1)
1.一种分布式数据存储系统中多维有序数据的存储方法,其特征在于,该方法包括以下步骤:
1)对待存储的由多个对象组成的多维数据进行定义,并将维度划分为有序维度集合与无序维度集合;
设O={o1,o2,...,os}为s个待存储对象组成的集合,Dim{D1,D2,...,Dk}为集合O中所有待存储对象维度集合,共有k个维度,s、k均为正整数;V为集合O中所有待存储对象数据值集合;
设M为有序维度集合,N为无序维度集合,M、N均为非负整数,则待存储对象组成的集合O表达为多维有序数据集合的形式,如式(1)所示:
SeqData(|o1,o2,...,os|,M,N,V) (1)
2)对基于步骤1)得到的多维有序数据集合的读取操作进行定义;
2-1)单元读取:对Di∈Dim,通过指定每一个维度的具体值Di=di,i=1,2,...k,进行数据读取的操作称为单元读取,定义单元读取操作为:Opread;
2-2)确定顺序近邻读取维度;对于有顺序近邻读取需求的维度Dtarget∈M,获取在该维度上的顺序近邻操作定义为:Opnext(Dtarget);
即对于维度Dtarget,取值为dtarget,通过指定Dtarget=l-1(l(dtarget)+1)实现顺序近邻操作,其中l为顺序函数,将维度取值映射为有序数据序号,l-1则将数据序号反映射为维度取值;
2-3)确定逆序近邻操作维度;对于有逆序近邻读取需求的维度Dtarget∈M,获取在该维度上的逆序近邻操作定义为:Oppre(Dtarget);
即对于维度Dtarget,通过指定Dtarget=l-1(l(dtarget)-1)实现逆序近邻操作;
2-4)确定序列读取操作;
一次序列读取操作包含一次单元读取操作以及q次连续的顺序或逆序近邻操作;一次序列读取操作定义为:Opseq(Dtarget,q);
根据具体数据访问需求,确定最终的序列读取操作需求,即确定SeqArray=[Opseq1,Opseq2,...,Opseqt],其中Opseq是Opseq(Dtarget,q)的简写,表示一种序列读取操作;SeqArray为针对具体数据访问需求的访问序列数组,共包括t个序列读取操作;
2-5)统计步骤2-4)中不同序列读取操作的使用频率,得到与会话数组对应的使用频率数组FreqArray=[fre1,fre2,...,fret],frei表示第i种序列读取操作的频率;
3)枚举存储方案,计算每种该存储方案期望时间代价;
多维有序数据集合的存储方案,即求解函数func使得对于所有Di,func(Di)=DimArray[c],c=1,2;其中,函数func表示存储方案,c代表数据下标,1,2是数组下标的可能取值;
给定一种存储方案func,对系统读取时间代价进行评估,对于每一种操作,又分为两种情况,本地读取和异地读取;
3-1)测量当前系统的网络传输速度和磁盘读取速度;其中Ttrans为系统网络传输单个数据速度,Tread为磁盘读取速度;
3-2)计算单元读取时间代价;对于一次精确读取操作Opread,计算其本地读取时间代价如式(2)所示:
<mrow>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>d</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>=</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>t</mi>
<mi>r</mi>
<mi>a</mi>
<mi>n</mi>
<mi>s</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>r</mi>
<mi>o</mi>
<mi>w</mi>
<mi>L</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>t</mi>
<mi>e</mi>
</mrow>
</msub>
<mo>+</mo>
<munder>
<mo>&Pi;</mo>
<mrow>
<msub>
<mi>D</mi>
<mi>i</mi>
</msub>
<mo>&Element;</mo>
<mi>C</mi>
<mi>K</mi>
<mi>S</mi>
<mi>e</mi>
<mi>t</mi>
</mrow>
</munder>
<mo>|</mo>
<msub>
<mi>D</mi>
<mi>i</mi>
</msub>
<mo>|</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>c</mi>
<mi>o</mi>
<mi>l</mi>
<mi>L</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>t</mi>
<mi>e</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>d</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,|Di|为维度Di的不同值的个数;TrowLocate为行键在节点中定位和读取的时间,TcolLocate为列寻址和定位时间;
对应地,如果数据异地地读取,则增加协调者节点到数据拥有者节点的一次网络通信,定义异地读取时间代价如式(3)所示:
<mrow>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>d</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>m</mi>
<mi>o</mi>
<mi>t</mi>
<mi>e</mi>
</mrow>
</msubsup>
<mo>=</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>r</mi>
<mi>a</mi>
<mi>n</mi>
<mi>s</mi>
</mrow>
</msub>
<mo>+</mo>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>d</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
</mrow>
即增加一次数据网络通信消耗;
3-3)计算顺序近邻读取时间代价;
本地读取时间代价如式(4)所示:
<mrow>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>n</mi>
<mi>e</mi>
<mi>x</mi>
<mi>t</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>d</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>+</mo>
<mi>s</mi>
<mi>i</mi>
<mi>g</mi>
<mi>n</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>D</mi>
<mrow>
<mi>t</mi>
<mi>arg</mi>
<mi>e</mi>
<mi>t</mi>
</mrow>
</msub>
<mo>&NotElement;</mo>
<mi>C</mi>
<mi>K</mi>
<mi>S</mi>
<mi>e</mi>
<mi>t</mi>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>i</mi>
<mi>n</mi>
<mi>d</mi>
<mi>e</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,Tindex为设置性能消耗,定义sign()为符号函数,sign(true)=1;sign(false)=0;
如果数据异地读取,则其异地读取时间代价如式(5)所示:
<mrow>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>n</mi>
<mi>e</mi>
<mi>x</mi>
<mi>t</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>m</mi>
<mi>o</mi>
<mi>t</mi>
<mi>e</mi>
</mrow>
</msubsup>
<mo>=</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>t</mi>
<mi>r</mi>
<mi>a</mi>
<mi>n</mi>
<mi>s</mi>
</mrow>
</msub>
<mo>+</mo>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>n</mi>
<mi>e</mi>
<mi>x</mi>
<mi>t</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
3-4)计算逆序近邻读取时间代价;
本地读取时间代价如式(6)所示:
<mrow>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>p</mi>
<mi>r</mi>
<mi>e</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>d</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>+</mo>
<mi>s</mi>
<mi>i</mi>
<mi>g</mi>
<mi>n</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>D</mi>
<mrow>
<mi>t</mi>
<mi>arg</mi>
<mi>e</mi>
<mi>t</mi>
</mrow>
</msub>
<mo>&NotElement;</mo>
<mi>C</mi>
<mi>K</mi>
<mi>S</mi>
<mi>e</mi>
<mi>t</mi>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>i</mi>
<mi>n</mi>
<mi>d</mi>
<mi>e</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
如果数据异地读取,则其异地读取时间代价如式(7)所示:
<mrow>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>p</mi>
<mi>r</mi>
<mi>e</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>m</mi>
<mi>o</mi>
<mi>t</mi>
<mi>e</mi>
</mrow>
</msubsup>
<mo>=</mo>
<msub>
<mi>T</mi>
<mrow>
<mi>r</mi>
<mi>a</mi>
<mi>n</mi>
<mi>s</mi>
</mrow>
</msub>
<mo>+</mo>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>n</mi>
<mi>e</mi>
<mi>x</mi>
<mi>t</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
3-5)对于t个序列读取操作,计算每一种序列读取的时间代价;
<mrow>
<msub>
<mi>T</mi>
<mrow>
<mi>S</mi>
<mi>e</mi>
<mi>q</mi>
</mrow>
</msub>
<mo>=</mo>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>d</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>+</mo>
<mi>s</mi>
<mi>i</mi>
<mi>g</mi>
<mi>n</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>D</mi>
<mrow>
<mi>t</mi>
<mi>arg</mi>
<mi>e</mi>
<mi>t</mi>
</mrow>
</msub>
<mo>&NotElement;</mo>
<mi>R</mi>
<mi>K</mi>
<mi>S</mi>
<mi>e</mi>
<mi>t</mi>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<mi>q</mi>
<mo>&times;</mo>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>n</mi>
<mi>e</mi>
<mi>x</mi>
<mi>t</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>+</mo>
<mi>s</mi>
<mi>i</mi>
<mi>g</mi>
<mi>n</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>D</mi>
<mrow>
<mi>t</mi>
<mi>arg</mi>
<mi>e</mi>
<mi>t</mi>
</mrow>
</msub>
<mo>&Element;</mo>
<mi>R</mi>
<mi>K</mi>
<mi>S</mi>
<mi>e</mi>
<mi>t</mi>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<mrow>
<mo>(</mo>
<mfrac>
<mi>q</mi>
<mi>n</mi>
</mfrac>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mi>max</mi>
</msub>
</mrow>
<mrow>
<mi>l</mi>
<mi>o</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>+</mo>
<mfrac>
<mrow>
<mi>q</mi>
<mrow>
<mo>(</mo>
<mi>n</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
<mi>n</mi>
</mfrac>
<msubsup>
<mi>T</mi>
<mrow>
<msub>
<mi>Op</mi>
<mrow>
<mi>n</mi>
<mi>e</mi>
<mi>x</mi>
<mi>t</mi>
</mrow>
</msub>
</mrow>
<mrow>
<mi>Re</mi>
<mi>m</mi>
<mi>o</mi>
<mi>t</mi>
<mi>e</mi>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,n是集群节点个数,q是该种序列读取的连续次数;
3-6)计算给定存储方案的期望时间代价E;
<mrow>
<mi>E</mi>
<mo>=</mo>
<mrow>
<mo>(</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>t</mi>
</munderover>
<msub>
<mi>T</mi>
<mrow>
<msub>
<mi>Seq</mi>
<mi>i</mi>
</msub>
</mrow>
</msub>
<mo>&times;</mo>
<msub>
<mi>fre</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
(4)重复步骤3),遍历所有枚举的存储方案并计算其相应的期望时间代价,选择期望时间代价最小的存储方案作为最终存储方案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610459969.4A CN105975634B (zh) | 2016-06-22 | 2016-06-22 | 分布式数据存储系统中多维有序数据的存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610459969.4A CN105975634B (zh) | 2016-06-22 | 2016-06-22 | 分布式数据存储系统中多维有序数据的存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105975634A CN105975634A (zh) | 2016-09-28 |
CN105975634B true CN105975634B (zh) | 2017-10-31 |
Family
ID=57022579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610459969.4A Active CN105975634B (zh) | 2016-06-22 | 2016-06-22 | 分布式数据存储系统中多维有序数据的存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105975634B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943927B (zh) * | 2017-11-21 | 2018-10-16 | 清华大学 | 一种分布式存储系统中多维数据的存储模式转换方法 |
CN115002105B (zh) * | 2022-04-20 | 2024-08-09 | 上海赛连信息科技有限公司 | 一种基于磁盘速率和网络速率的均衡分配方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100313198B1 (ko) * | 1999-03-05 | 2001-11-05 | 윤덕용 | 압축된 히스토그램 정보를 사용한 다차원 선택율 추정 방법 |
US9182913B2 (en) * | 2011-10-18 | 2015-11-10 | Ubiterra Corporation | Apparatus, system and method for the efficient storage and retrieval of 3-dimensionally organized data in cloud-based computing architectures |
CN105589951B (zh) * | 2015-12-18 | 2019-03-26 | 中国科学院计算机网络信息中心 | 一种海量遥感影像元数据分布式存储方法及并行查询方法 |
-
2016
- 2016-06-22 CN CN201610459969.4A patent/CN105975634B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105975634A (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cantidio et al. | Aridity, soil and biome stability influence plant ecoregions in the Atlantic Forest, a biodiversity hotspot in South America | |
Bring et al. | Pan‐Arctic river discharge: Prioritizing monitoring of future climate change hot spots | |
Cushman et al. | Elephants in space and time | |
CN103425772B (zh) | 一种具有多维信息的海量数据查询方法 | |
CN102915347B (zh) | 一种分布式数据流聚类方法及系统 | |
CN108256088A (zh) | 一种基于键值数据库的时序数据的存储方法及系统 | |
CN107529651A (zh) | 一种基于深度学习的城市交通客流预测方法和设备 | |
US11729066B2 (en) | Systems and methods for full history dynamic network analysis | |
CN102073732B (zh) | 基于相同结点链和哈希链的事件序列频繁情节挖掘方法 | |
CN110209686A (zh) | 数据的存储、查询方法及装置 | |
CN107480694A (zh) | 基于Spark平台采用两次评价的加权选择集成三支聚类方法 | |
CN103002061A (zh) | 一种长域名与短域名互相转化的方法及装置 | |
CN118012850B (zh) | 面向智慧灌溉多源信息的数据库构建系统、方法及设备 | |
CN105975634B (zh) | 分布式数据存储系统中多维有序数据的存储方法 | |
CN103714124B (zh) | 超大规模低压数据处理方法 | |
CN105787090A (zh) | 一种电力数据的olap系统的索引建立方法和系统 | |
CN111488420A (zh) | 去中心微服务化区域洪水预警水信息系统及其集成方法 | |
CN116993555A (zh) | 国土空间规划重点区域识别的分区方法、系统及存储介质 | |
CN116775661A (zh) | 基于北斗网格技术的空间大数据存储与管理方法 | |
Abbate et al. | Woody flora as a predictor of vascular plant richness: an insight in Italy | |
CN116703132B (zh) | 共享车辆动态调度的管理方法、装置及计算机设备 | |
CN112540987A (zh) | 一种基于数据集市的配用电大数据管理系统 | |
CN110232063A (zh) | 层级数据查询方法、装置、计算机设备和存储介质 | |
CN109408466A (zh) | 一种农业物联网用冗余数据处理方法及装置 | |
CN112446155A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |