【发布时间】:2014-06-03 13:18:11
【问题描述】:
我需要存储股价历史。以下是要求,
- 前 30 天的每小时数据应该可用
- 必须保持 10 年的历史记录,其中应包含每日高点和低点
有多种视图类型,
- 按天显示 - 显示每小时数据(如果有),否则显示高和低
- 每周明智 - 显示 7 天的高点和低点
- 按月显示 - 显示 30 天的最高价和最低价
- 按年显示 - 显示 12 个月的高点和低点(每个月的高点和低点, 所以 12 个条目)
桌子设计是
HourlyStockPrice
symbol
datetime
price
DayStockPrice
symbol
date
high
low
MonthStockPrice
symbol
date
high
low
由于数据库将有数百万条记录,我决定将信息存储在单独的表中,这样检索会更快。这样好吗?或者我只需要使用单个表并根据需要,必须查询和处理数据。下面是单表架构,
StockPrice
symbol
datetime
high
low
请指教。
【问题讨论】:
-
“我决定将信息存储在单独的表中” 为什么?你不知道分区吗?对于存档,您当然可以有单独的表,但不能用于生产。您存储了多少个符号?如果您按小时存储,为什么不能从该数据中获取最高价和最低价?
-
他不知道分区。他还认为“数百万条记录”包含大量信息。他将每一行中的符号存储为字符串。
-
看起来更像是数据仓库设计,然后是数据库设计。 DW 经常被非规范化和扁平化。
-
这是一个数据仓库。历史股票数据没有任何可操作性。保留三个表以获得最大的选择性能。祝你好运,弄清楚如何在每日和每月股价表中添加行。您还应该有一个包含股票代码、公司名称和其他公司信息的表格。公司的股票代码可能会随着时间而变化。
-
会有一个插入当前股票价格的网络服务。工作线程将检索数据并更新所有这些表(每天、每月)。我想要最大的选择性能。
标签: sql-server database-design