Kin*_*nus 6 azure azure-storage azure-table-storage
我有一些软件可以在很长一段时间内收集数据,每秒大约200个读数.它使用SQL数据库.我希望使用Azure将大量旧的"归档"数据移动到.
该软件使用多租户类型的体系结构,因此我计划为每个租户使用一个Azure表.每个租户可能正在监控10-20个不同的指标,因此我计划使用指标ID(int)作为分区键.
由于每个指标每分钟只有一个读数(最大值),我计划使用DateTime.Ticks.ToString("d19")作为我的RowKey.
我对这将如何扩展缺乏一点了解; 所以希望有人能够清除这一点:
为了提高性能,Azure将/可能会通过partitionkey拆分我的表,以保持良好和快速.在这种情况下,这将导致每个度量标准一个分区.
但是,我的rowkey可能代表大约5年的数据,所以我估计大约250万行.
Azure是否足够聪明,然后根据rowkey进行拆分,还是我在设计未来的瓶颈?我知道通常不会过早地进行优化,但是像Azure这样的东西看起来并不像平时那么明智!
寻找Azure专家,让我知道我是否在正确的位置,或者我是否应该将我的数据划分为更多的表.
Gau*_*tri 17
几条评论:
除了存储数据之外,您可能还想了解如何检索数据,因为这可能会大大改变您的设计.您可能想要问自己的一些问题:
(DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks).ToString("d19").此外,由于PartitionKey是一个字符串值,您可能希望将int值转换为string具有一些"0"预先添加的值,以便所有id按顺序显示,否则您将获得1,10,11,...,19,2,.... ..等等.
据我所知,Windows Azure PartitionKey仅基于而不是基于分区数据RowKey.在分区中,RowKey作为唯一键.Windows Azure将尝试PartitionKey在同一节点中使用相同的节点保存数据,但由于每个节点都是物理设备(因此具有大小限制),因此数据也可以流向另一个节点.
您可能希望从Windows Azure存储团队阅读此博客文章:http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows- azure-tables.aspx.
更新 根据您在下面的评论和上面的一些信息,让我们尝试做一些数学运算.这是基于此处发布的最新可扩展性目标:http://blogs.msdn.com/b/windowsazurestorage/archive/2012/11/04/windows-azure-s-flat-network-storage-and-2012-scalability -targets.aspx.文件指出:
单表分区 - 表分区是表中具有相同分区键值的所有实体,通常表具有许多分区.单个表分区的吞吐量目标是:
- 每秒最多2,000个实体
- 请注意,这适用于单个分区,而不是单个表.因此,具有良好分区的表可以处理多达20,000个实体/秒,这是上述的整体帐户目标.
现在你提到你有10到20个不同的度量点,对于每个度量点,你每分钟最多写入1条记录,这意味着你最多可以写出20个实体/分钟/表可扩展性目标为2000个实体/秒.
现在问题仍然是阅读.假设用户每个分区最多可读取24小时的数据(即24*60 = 1440点).现在假设用户获得所有20个指标的数据1天,那么每个用户(因此每个表)将获取最多28,800个数据点.我想这个问题就是你每秒可以获得多少这样的请求来达到这个阈值.如果你能以某种方式推断这些信息,我想你可以得出一些关于你的架构可扩展性的结论.
我还建议您观看此视频:http://channel9.msdn.com/Events/Build/2012/4-004.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
4646 次 |
| 最近记录: |