mysql - 为证券交易所构建数据库的最佳方法是什么?

标签 mysql sql stock

我正在尝试制作一个股票市场模拟器,我希望尽可能真实。

我的问题是:纳斯达克有 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.

还是根据做市商提供的可供交易的股票和买卖需求来计算?例如:

我已经尝试过第一个示例,因为它在我的数据库中占用了大量空间,并且我担心所有这些交易的带宽,特别是当每分钟发出数百万个请求(交易)时。

我已经尝试过第一个示例,因为它在我的数据库中占用了大量空间,并且我担心所有这些交易的带宽,特别是当每分钟发出数百万个请求(交易)时。

最好的解决方案是什么?数据库还是数学?

提前致谢。

最佳答案

您可能还想在 Google 上搜索多对多关系。

这样想吧。一个人可能拥有很多股票。一支股票可能被很多人持有。这是一种多对多关系,通常使用物理数据库中的三个表进行建模。这通常写为 M:M

此外,人们可能会多次购买或出售一家公司,这可能会使用另一个表格进行建模。从人的角度来看,将会有很多交易,因此我们有一种新型的一对一(人)对多(交易)的关系。这通常被写为 1:M 关系。

至于存储什么,作为一般规则,最好存储原子数据片段。例如,对于一笔交易,至少存储客户 ID、交易日期/时间、买入或卖出的数量以及价格。

您可能还想阅读有关标准化的内容。通常,第三范式是一个值得努力的良好水平,但其中很多是“这取决于您的情况和您需要做什么”。通常人们会为了访问速度而进行非规范化,但代价是更多的存储空间和可能更复杂的更新......

您还提到了业绩,通常是纳斯达克这样的大公司。如果 IT 基础设施将使用多层。每层将具有不同的作用,从而具有不同的功能特征和性能特征。通常,它们是在集群中一起运行的多台服务器。例如,他们可能使用 NoSQL 系统来管理大量交易。从那里可能会有一个馈送(例如 kafka)进入其他系统以用于其他目的(例如欺诈预防、分析、报告等)。

您还提到了数据量。我不知道您所说的数据量是多少,但我工作过的一位金融客户在 300 多台服务器上运行了数 Peta 字节的存储(1 Peta 字节 = 1000 TB),仅用于他们的分析平台。就金融机构而言,它们的规模可能属于中型到大型。

我希望这有助于为您指明正确的方向。

关于mysql - 为证券交易所构建数据库的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623045/

相关文章:

wordpress - Woocommerce:更改 "# in stock"文本

mysql - 连接表 : case statement for no matches?

php - 如何从 PHP 快速制作多个略有不同的插入

java - 在 '?' 附近使用的正确语法

php - MySQL SELECT 或 SUBSELECT 与 PHP

c++ - 如何更新 map C++ 中元素的值

java - 使用 Eclipse 检索股票报价 - 错误 : The value of the local variable is not used

mysql - 代码 - 1248 - 每个派生表都必须有自己的别名?

sql - 为什么要从此查询中获取 9 行?

sql - Azure LogicApp 无法从 SQL Server 获取 rowid