nal*_*all 31 sql sqlite schema stocks
我正在创建一个用于存储历史股票数据的数据库模式.我目前有一个架构,如下所示.
我的要求是为多个股票代码存储"条形数据"(日期,开盘价,最高价,最低价,收盘价).每个符号也可能有多个时间范围(例如Google Weekly bars和Google Daily bar).
我当前的架构将大部分数据放在OHLCV表中.我远非数据库专家,如果这太天真,我很好奇.建设性的投入非常受欢迎.
CREATE TABLE Exchange (exchange TEXT UNIQUE NOT NULL);
CREATE TABLE Symbol (symbol TEXT UNIQUE NOT NULL, exchangeID INTEGER NOT NULL);
CREATE TABLE Timeframe (timeframe TEXT NOT NULL, symbolID INTEGER NOT NULL);
CREATE TABLE OHLCV (date TEXT NOT NULL CHECK (date LIKE '____-__-__ __:__:__'),
open REAL NOT NULL,
high REAL NOT NULL,
low REAL NOT NULL,
close REAL NOT NULL,
volume INTEGER NOT NULL,
timeframeID INTEGER NOT NULL);
Run Code Online (Sandbox Code Playgroud)
这意味着我的查询当前类似于:查找给定符号/时间范围的timeframeID,然后在timeframeID匹配的OHLCV表上执行选择.
boe*_*100 34
我们试图找到一个适当的数据库结构,用于长时间存储大量数据.以下解决方案是超过6年经验的结果.它现在可以完美地进行定量分析.
我们已经能够在SQL Server中使用此方案存储数百GB的日内和日常数据:
Symbol - char 6
Date - date
Time - time
Open - decimal 18, 4
High - decimal 18, 4
Low - decimal 18, 4
Close - decimal 18, 4
Volume - int
Run Code Online (Sandbox Code Playgroud)
所有交易工具都存储在一个表中.我们还在符号,日期和时间列上有一个聚簇索引.
对于每日数据,我们有一个单独的表,不使用时间列.卷数据类型也是bigint而不是int.
表现?我们可以在几毫秒内从服务器获取数据.请记住,数据库大小几乎是1太字节.
我们从Kibot网站购买了所有历史市场数据:http://www.kibot.com/
Mic*_*ngh 27
好吧,从积极的方面来说,你首先要求输入是有道理的.这使您领先于不熟悉数据库设计的90%的人.
timeframeID
相关symbolID
?TEXT
.从性能和可用性的角度来看,这是一个禁忌.open
,high
,low
,close
价格更好存储为小数或货币类型,或者,优选地,作为INTEGER
与单独的字段INTEGER
字段,其存储所述除数,作为最小价格分数(美分,一元等的八分)允许每交换而变化.如果所有这些看起来都不具有"建设性",我很抱歉,特别是因为我现在太困了,建议一个更有用的选择.我希望上面的内容足以让你顺利上路.
归档时间: |
|
查看次数: |
32825 次 |
最近记录: |