2

我想将历史股票价格数据存储在SQL Azure数据库的表中。我将每 15 分钟获得大约 100000 个股票价格,其中一些可能会或可能不会改变它们的价值。所以我需要每天存储大约 (5000 * 32 (8 小时 * 4 次) = 160000) 160000 条记录。

目前,权益表具有以下结构,大约有 20 列。

Equity table
---------------
ID INT PK,
Name Varchar(20),
Value Money,
Currency Varchar(10),
.......

我想存储历史价格的新表 (HistoricalPrices) 包含以下结构。

HistoricalPrices
-------------------
ID INT PK,
EquityID INT FK,
[Date] DateTime,
Value Money

如果我每天存储这 160000 条记录,一个月内我的表将获得大约 500 万条记录。

我的问题是,这个表将如何处理数据,我是否会遇到任何性能问题,是否有任何其他方式来维护这些数据,我是否需要对表结构等进行任何更改?

4

2 回答 2

2

通过适当的索引和集群,性能不应该成为适当的选择性查询的问题。需要考虑传统的操作问题,如备份、重新索引作业和限制返回的数据量,尽管这不是 Azure 的问题。

请注意,Azure DB 大小限制可能会迫使您在某些时候水平分区(分片)(http://blogs.msdn.com/b/sqlazure/archive/2010/06/24/10029719.aspx)(Azure 没有t 支持 TABLE 分区。)

http://msdn.microsoft.com/en-us/library/ms345146(v=sql.90).aspx

另外要考虑的是您的 32 位 int PK 溢出 - 尽管按照目前的速度您有 50 多年的价值,但如果您以更高的频率进行跟踪(例如更多交易所或更多股票),您将需要考虑 64 位 INT。

于 2012-06-17T18:26:08.237 回答
0

由于您的容量要求,您应该考虑使用联合 (http://msdn.microsoft.com/en-us/library/windowsazure/hh597452.aspx)。如果您的记录在一个批次中被插入/更新,您可能需要将它们分解为特定的值范围。但一般来说,Federations 是 SQL Azure 的首选分片机制。在最终确定存储设计之前检查该功能。

如果有兴趣,请查看我的博客以获取与联邦设计相关的具体信息:http: //geekswithblogs.net/hroggero/archive/2011/07/23/preparing-for-data-federation-in-sql-azure.aspx

于 2012-06-18T14:59:35.417 回答