股票市場應用程序的數據庫(MySql 或 NoSQL)
我正在為股票市場篩选和實時圖表顯示重新創建一個應用程序。
我建議設計的數據庫線框圖如下:
1. Company master - 提供公司所有資訊的地方: Vendor Code|Company Full Name|Company Short name|Industry Code|Industry Full Name|Promoter Group Code|Promoter Group|EXCHANGE1 CODE|STOCK CATEGORY|EXCHANGE2 CODE|TYPE |ISIN 程式碼|庫存類型
**2.) 盤中數據 - 每分鐘儲存股票價格的位置:(**這將在下一個交易日被覆蓋)EXCHANGE1 程式碼 | 開盤價 | 最後價格 | 日高 | 白天 | 報價 | 報價數量 | VOLUME |VALUE |日期和時間戳
3. 歷史數據(按日計算): EXCHANGE1 程式碼 | 開盤價 | 收盤價 | 日高 | 白天 | 音量 | 日期
4. 基本數據(尚未充分考慮): 這將儲存所有基本數據,如最近 4 個季度報告、競爭對手、資產負債表、財務比率、損益表、促銷員詳細資訊等。
典型的查詢是:
股票報價頁面: 帶有使用者選擇的時間序列價格圖表、日內、1 週、1 個月、6 個月、1 年、5 年
以圖表形式呈現的基本數據(即利潤增長、銷售額增長)以及其他基本數據和新聞
**股票篩選:(**查詢範例)
- 顯示過去 3 年銷售額每年增長 20% 的公司股票
- 給我看看PE小於10的公司
- 給我看看過去 5 年季度利潤每年增長 15% 的公司
- 顯示最近 100 天平均價格低於目前價格的汽車行業的公司
- 顯示 50 天、100 天、200 天簡單移動平均線等。
現在我正處於一個階段,我必須決定使用哪個數據庫 MySQL 或 MongoDB(NoSQL 文件)或 Cassandra(NoSQL 列)。那麼在上述情況下,我應該使用哪個數據庫?為什麼?(優點/缺點)我想要快速執行、數據完整性、高並發、數據聚合和計算(分析)。
另外,我們必須考慮到數據表每分鐘都在更新,並且同時為來自同一數據庫的訪問者請求提供服務。因此,一致且無錯誤的讀/寫也很重要。
也歡迎對我的 DB 線框提出任何意見/批評。
問候桑尼
SQL 數據庫通常最適合結構化數據、即席查詢以及涉及將多個實體連接在一起以查找結果的查詢。它還將通過強制這種更結構化的設計來幫助您保持數據的一致性和完整性。現代數據庫引擎的最新記憶體功能提供了 NoSQL 的大部分剩餘性能優勢。
如果您的數據庫的基礎部分由非結構化數據(例如文件附件)組成,那麼 NoSQL 是一個不錯的選擇。但是帶有文件名引用的 SQL 表幾乎同樣有效。
我對您的項目的推薦是 PostgreSQL,但如果它必須是提到的其中之一,那麼 MySQL。
您將需要不同的數據庫來儲存不同的數據。例如,公司主數據、歷史數據和基礎數據可能都存在於標準 SQL 數據庫中(MySQL 或 Postgres 都是合理的選擇)。
如果日內數據的頻率相對較低(例如,1 分鐘柱線或更低),則可能也可以將其放入 SQL DB。如果它非常大(例如,來自多個交易所的逐筆數據),那麼 SQL 可能不是一個好的選擇。在這種情況下,您將需要使用 HDF5 文件之類的文件,甚至是自定義文件格式,具體取決於您想要執行的查詢類型。
當數據變得非常大時,重要的是要準確考慮您將在其上執行什麼樣的查詢,然後優化資料結構(後端、文件格式、列佈局等)以適應您的查詢。