儲存數億筆記錄

儲存數億筆記錄

我的公司將擁有一個包含大約 200-3 億筆記錄的資料集。來源材質為 csv,未壓縮時約 150GB。我們需要執行資料的初始加載,然後每天更新大約 1% 的記錄。我們也希望能夠保留每筆記錄的歷史。

我們目前使用 MySQL,似乎有些人正在將 MySQL 和 PostgreSQL 用於這種規模的資料庫,但我沒有看到太多關於他們的經驗的硬資訊。

我們絕對可以在不標準化資料的情況下逃脫,我可以想像將資訊分發到很多伺服器上。 MongoDB 或其他一些非傳統資料儲存怎麼樣?

有人對這種努力的可行性有什麼想法嗎?我感謝您能夠提供的任何幫助。

答案1

我在處理這種大小的資料集方面的經驗僅限於 MSSQL,但它絕對可以處理這種大小的資料。

我首先關心的是資料的大小。 150Gb 的 3 億筆記錄每行大約 500Kb - 這是一個很大的行。非常非常大的一排。如果您可以標準化為第三範式,那麼這可能會很有幫助(假設有可以標準化的數據)。如果您不打算標準化(並且只有一個龐大的表),那麼支援 ISAM 的引擎將比 RDBMS 更快,因此 ISAM 模式下的 MySQL 是優於 MSSQL 的明顯選擇(抱歉,我不知道)沒有任何使用Postgre 或Mongo 的經驗)

也就是說,MSSQL 可以處理這種大小的表,而無需擔心。它可以對資料進行分割,以便不同的部分位於不同的磁碟上,因此如果預算有限,您可以將 1% 的更新資料保留在快速磁碟上,並將其餘資料保留在較慢的磁碟上。如果您選擇的 DBMS 支援這一點,那麼這可能是個明智的選擇。

僅供參考,我曾經管理過一個資料庫,該資料庫的單一表中約有 2 億行(但該表的大小只有 20Gb),並且使用一些智慧索引,查詢時間仍然以毫秒為單位。這被標準化為第三範式,因此也有很多 LOJ 來檢索相關資料。

答案2

大多數資料庫都可以輕鬆管理如此大量的存儲,這實際上取決於加載資料後您想要對資料執行的操作。是事務性的,所以會經常查詢和更新嗎?或者更多的是用於報告每天從交易系統輸入的新資訊?

相關內容