我正在尝试为数据聚合和存储的NxN问题提出理论解决方案.作为一个例子,我有大量的数据通过流进入.流以点为单位发送数据.每个点有5个维度:
- 地点
- 日期
- 时间
- 名称
- 统计
然后需要聚合和存储该数据以允许另一个用户来查询位置和时间的数据.用户应该能够像下面这样查询(伪代码):
显示位于时间上午11点到下午4点之间的日期01/01/2011和01/03/2011之间位置1,2,3,4,.... N的汇总统计数据
不幸的是,由于数据的规模,不可能从动态点汇总所有这些数据,因此需要在此之前进行聚合.正如您所看到的,虽然有多个维度可以聚合数据.
他们可以查询任意天数或位置,因此找到所有组合将需要大量的预聚合:
- 记录地点1今天
- 记录地点1,2今天
- 记录地点1,3今天
- 记录地点1,2,3今天
- 等等......直到N.
在查询之前预处理所有这些组合可能导致一定数量的不可行的进动.如果我们有200个不同的位置,那么我们有2 ^ 200个组合,这几乎不可能在任何合理的时间内预先计算.
我确实考虑过在1维上创建记录,然后在请求时可以动态进行合并,但这也需要大量的时间.
问题:
感谢您的时间.
编辑1
当我说汇总数据时,我的意思是将统计数据和名称(维度4和5)结合起来用于其他维度.因此,例如,如果我为位置1,2,3,4..N请求数据,那么在将其提供给用户之前,我必须将这些N个位置的统计数据和名称计数合并在一起.
同样,如果我请求日期01/01/2015 - 01/12/2015的数据,那么我必须在这些期间之间汇总所有数据(通过添加汇总名称/统计数据).
最后,如果我要求日期01/01/2015 - 01/12/2015之间的位置1,2,3,4..N,那么我必须汇总这些日期之间所有这些位置的所有数据.
为了这个例子,我们可以说通过统计数据需要某种嵌套循环,并且不能很好地扩展.
我刚刚开始熟悉ServiceStack并且已经开始使用FluentValidation了.我已经按照介绍并创建了一个小型Hello应用程序.
我的问题是,当我尝试验证请求DTO时,没有返回错误消息来描述验证失败的方法,只有空白的Json对象{}.
我自己,我认为验证是自动连接到DTO所以我不需要编写任何额外的代码.
答案可能是公然但我看不到它.任何帮助将不胜感激.我的代码如下:
namespace SampleHello2
{
[Route("/hello")]
[Route("/hello/{Name}")]
public class Hello
{
public string Name { get; set; }
}
public class HelloResponse
{
public string Result { get; set; }
}
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
public class HelloValidator : AbstractValidator<Hello>
{
public HelloValidator()
{
//Validation rules for all requests
RuleFor(r => r.Name).NotNull().NotEmpty().Equal("Ian").WithErrorCode("ShouldNotBeEmpty"); …Run Code Online (Sandbox Code Playgroud)