Database NxN数据聚合的数据存储设计
我试图为数据聚合和存储的NxN问题提出一个理论解决方案。作为一个例子,我有大量的数据通过流传入。流以点的形式发送数据。每个点有5个维度:Database NxN数据聚合的数据存储设计,database,database-design,architecture,scale,aggregation,Database,Database Design,Architecture,Scale,Aggregation,我试图为数据聚合和存储的NxN问题提出一个理论解决方案。作为一个例子,我有大量的数据通过流传入。流以点的形式发送数据。每个点有5个维度: 位置 日期 时间 名字 统计数字 然后需要对这些数据进行聚合和存储,以允许另一个用户来查询数据的位置和时间。用户应该能够进行如下查询(伪代码): 显示2011年1月1日至2011年3月1日上午11点至下午4点之间位置1,2,3,4,….N的汇总统计信息 不幸的是,由于数据的规模,不可能实时聚合所有这些数据,因此需要在此之前进行聚合。正如您所看到的,数据可以在多
- 今日第1个地点的记录
- 今日第1,2个地点的记录
- 今日第1,3个地点的记录
- 今天位置1、2、3的记录
- 等等。。。高达
在本例中,让我们假设遍历统计信息需要某种嵌套循环,并且不能很好地扩展,尤其是在运行时。您有很多数据。由于您试图解析的数据量很大,因此所有方法都需要花费大量时间。 我有两种方法。 第一个是残酷的,你可能会想:
id | location | date | time | name | statistics
0 | blablabl | blab | blbl | blab | blablablab
1 | blablabl | blab | blbl | blab | blablablab
ect.
有了这个,您可以轻松地解析和获取元素,它们都在同一个表中,但是解析很长,表很大
第二个更好,我认为:
Multiple tables:
id | location
0 | blablabl
id | date
0 | blab
id | time
0 | blab
id | name
0 | blab
id | statistics
0 | blablablab
有了这个,你可以更快地解析,获得ID,然后获取所有需要的信息。
它还允许您准备所有数据:
您可以将位置按位置排序,时间按时间排序,名称按字母表排序,等等,因为我们不关心ID的混合方式:
如果id是1 2 3或1 3 2,实际上没有人关心,如果您的数据已经在各自的表中进行了解析,那么解析速度会快得多
因此,如果使用我给出的第二种方法:在接收到一个数据点时,为他的每个列提供一个ID:
You receive:
London 12/12/12 02:23:32 donut verygoodstatsblablabla
You add the ID to each part of this and go parse them in their respective columns:
42 | London ==> goes with London location in the location table
42 | 12/12/12 ==> goes with 12/12/12 dates in the date table
42 | ...
有了这个,你想要得到所有的伦敦数据,它们是并排的,你只需要得到所有的ID,然后得到其他的数据。如果您想获取11/11/11和12/12/12之间的所有数据,它们都是并排的,您只需获取ID等
希望我能帮忙,抱歉我的英语不好。试试时间序列数据库!
根据您的描述,您的数据似乎是一个时间序列数据集。
用户似乎最关心查询时的时间,在选择时间范围后,用户将通过附加条件来优化结果
考虑到这一点,我建议您尝试使用时间序列数据库。
例如,Influx提供了一种能够处理如下查询的查询语言,它非常接近您要实现的目标:
从事件中选择计数(位置)
其中时间>'2013-08-12 22:32:01.232'和时间<'2013-08-13'
按时间分组(10m);
我不知道你所说的规模是什么意思,但时间序列DBs的设计是为了快速处理大量数据点。
我建议在推出自己的解决方案之前,一定要尝试一下 您应该查看ApacheFlume和Hadoop
flume代理可用于捕获数据并将其聚合到HDF中,您可以根据需要进行扩展。在HDFS中,有许多选项可以可视化,甚至可以使用map reduce或elastic search查看您在提供的示例中查找的数据集 我曾使用过一个销售点数据库,该数据库包含十万种产品和一万家店铺(通常为周级累计销售,但也包括用于购物篮分析、交叉销售等的收据级数据)。我建议您看看这些:
- ,高度可扩展,入门相对简单,经济高效
- ,压缩数据并具有熟悉的SQL接口,非常昂贵(AWS的1年保留实例r3.2xlarge约为37.000美元),没有在集群内扩展的经验
- 这是我个人的fa