为证券交易所构建数据库的最佳方式是什么?
What is the best way to structure a database for a stock exchange?
我正在尝试制作一个股票市场模拟器,我希望尽可能真实。
我的问题是:纳斯达克有 3000 多家公司,并且在他们的股票数据库中,对吧?!但它是否像下面的示例一样,是 sql 数据库中每个符号的每一股的一个输入行?
Company Microsoft = MSFT
db `companies_shares`
ID symbol price owner_id* company_id last_trade_datetime
1 msft 58.99 54334 101 2019-06-15 13:09:32
2 msft 58.99 54334 101 2019-06-15 13:09:32
3 msft 58.91 2231 101 2019-06-15 13:32:32
4 msft 58.91 544 101 2019-06-15 13:32:32
*owner_id = user id of the person that last bought the share.
还是根据做市商提供的可交易股数和买卖需求计算?例如:
我已经尝试了第一个示例,因为它在我的数据库中占用了很多 space,我担心所有这些交易的带宽,尤其是当数百万个请求(交易)正在处理时每分钟制作一次。
我已经尝试了第一个示例,因为它在我的数据库中占用了很多 space,我担心所有这些交易的带宽,尤其是当数百万个请求(交易)正在处理时每分钟制作一次。
最好的解决方案是什么?数据库还是数学?
提前致谢。
您可能还想 Google 多对多关系。
这样想。一个人可能拥有多只股票。一只股票可能被很多人持有。这是多对多关系,通常在物理数据库中使用三个 table 进行建模。这通常写为 M:M
此外,人们可能会在多个场合买卖同一家公司,这很可能是使用另一家公司建模的 table。从人的角度来看,会有很多交易,所以我们有一种新型的一对一(人)对多(交易)的关系。这通常写成 1:M 关系。
至于要存储什么,作为一般规则,最好存储数据的原子片段。例如对于一笔交易,至少存储客户我,交易date/time,买入或卖出的数量和价格。
您可能还想阅读有关规范化的内容。通常第三范式是一个值得努力的好水平,但其中很多是 "it depends upon your circumstance and what you need to do"。人们通常会以更多的存储空间和可能更复杂的更新为代价来非规范化访问速度....
您还提到了性能,通常不是像纳斯达克这样的大公司。如果 IT 基础设施,将使用多层。每一层将具有不同的作用,因此具有不同的功能特性和性能特性。它们通常是在集群中一起运行的多台服务器。例如,他们可能使用 NoSQL 系统来管理大量交易。从那里可能会出于其他目的(例如欺诈预防、分析、报告等)向其他系统提供馈送(例如 kafka)。
您还提到了数据量。我不知道你在谈论多少数据,但我工作过的一个金融客户在 300 多台服务器上有几个 peta 字节的存储(1 peta 字节 = 1000 TB)运行 仅用于他们的分析平台.就金融机构而言,它们可能属于中型到大型。
我希望这能帮助您指明正确的方向。
我正在尝试制作一个股票市场模拟器,我希望尽可能真实。
我的问题是:纳斯达克有 3000 多家公司,并且在他们的股票数据库中,对吧?!但它是否像下面的示例一样,是 sql 数据库中每个符号的每一股的一个输入行?
Company Microsoft = MSFT
db `companies_shares`
ID symbol price owner_id* company_id last_trade_datetime
1 msft 58.99 54334 101 2019-06-15 13:09:32
2 msft 58.99 54334 101 2019-06-15 13:09:32
3 msft 58.91 2231 101 2019-06-15 13:32:32
4 msft 58.91 544 101 2019-06-15 13:32:32
*owner_id = user id of the person that last bought the share.
还是根据做市商提供的可交易股数和买卖需求计算?例如:
我已经尝试了第一个示例,因为它在我的数据库中占用了很多 space,我担心所有这些交易的带宽,尤其是当数百万个请求(交易)正在处理时每分钟制作一次。
我已经尝试了第一个示例,因为它在我的数据库中占用了很多 space,我担心所有这些交易的带宽,尤其是当数百万个请求(交易)正在处理时每分钟制作一次。
最好的解决方案是什么?数据库还是数学?
提前致谢。
您可能还想 Google 多对多关系。
这样想。一个人可能拥有多只股票。一只股票可能被很多人持有。这是多对多关系,通常在物理数据库中使用三个 table 进行建模。这通常写为 M:M
此外,人们可能会在多个场合买卖同一家公司,这很可能是使用另一家公司建模的 table。从人的角度来看,会有很多交易,所以我们有一种新型的一对一(人)对多(交易)的关系。这通常写成 1:M 关系。
至于要存储什么,作为一般规则,最好存储数据的原子片段。例如对于一笔交易,至少存储客户我,交易date/time,买入或卖出的数量和价格。
您可能还想阅读有关规范化的内容。通常第三范式是一个值得努力的好水平,但其中很多是 "it depends upon your circumstance and what you need to do"。人们通常会以更多的存储空间和可能更复杂的更新为代价来非规范化访问速度....
您还提到了性能,通常不是像纳斯达克这样的大公司。如果 IT 基础设施,将使用多层。每一层将具有不同的作用,因此具有不同的功能特性和性能特性。它们通常是在集群中一起运行的多台服务器。例如,他们可能使用 NoSQL 系统来管理大量交易。从那里可能会出于其他目的(例如欺诈预防、分析、报告等)向其他系统提供馈送(例如 kafka)。
您还提到了数据量。我不知道你在谈论多少数据,但我工作过的一个金融客户在 300 多台服务器上有几个 peta 字节的存储(1 peta 字节 = 1000 TB)运行 仅用于他们的分析平台.就金融机构而言,它们可能属于中型到大型。
我希望这能帮助您指明正确的方向。