我们在Azure表存储中存储了大量的数据实体,所有当前的读写访问都使用分区和行键。这对我们来说效果很好,但我们现在已经满足了在所有数据实体中进行一些查询、提取一些统计数据的要求。查询可能包括打开存储在表实体的列中的一些数据,因此我们可能需要为每个实体数据项提供一点处理逻辑。
运行此类查询的选项是什么?有没有一种方法可以做到这一点,而不需要通过网络将所有数据拉入执行查询的处理器的内存中?是否存在类似于";MapReduce";能够在所有实体中运行作业,或者至少不需要提取太多数据来避免一些成本?
需要明确的是,速度本身并不是一个问题,因为这是为了统计目的,所以直接的目标是低成本,其次是一个简单的编程模型。
不幸的是,Azure表存储不支持直接连接之类的功能,因此所有处理都需要在代码中进行。我们过去所做的是让计时器触发Azure函数来计算统计数据,并将其放入一个单独的表中。将Azure功能与您的存储帐户放在同一区域(甚至可能取决于该存储帐户(可以使您的延迟最小。
为了进一步减少带宽,您可以在每个查询中选择要处理的列,这样就不会加载整行。