以上介紹了鋪底數據的重要性。要知道準備的鋪底數據每張表要上億條,那么我們如何快速而真實的準備鋪底數據呢?這章將詳細展開講解。
2.1. 如果用簡單的 JDBC 程序插入鋪底數據 , 性能很差
用 JDBC 寫一個程序往數據庫里面插入數據的話,速度會很慢,大概是十萬條一張表需要 20 分鐘。那假設我們需要準備 1 億條數據一張表就是 10000/10*20/60=333 小時
,如果業務邏輯需要準備 20 張表,那我們準備這些數據將需要 333*20=6660 小時 =277.5 天
!這樣的速度慢得驚人,所以通過 JDBC 準備鋪底數據將不成立。
顯然,我們需要能更高效產生鋪底數據的方法。筆者所在團隊選擇了如下的方法:找出數據庫之間的表結構關系,并據此把數據翻倍利用 CPU 的運算能力高效率生成的數據導入到數據庫中,從而在數據庫中產生出所需的鋪底數據。通過這種方式即避免了采用編寫 JDBC 程序的方式,又能高效地生成鋪底數據。
2.2.1. 找到數據庫之間的表結構關系
要準備鋪底數據首先要找表與表之間的關系,也就是要清楚在數據庫里面的表之間的主表附表關系:一對多,多對多的關系。還有要知道實際情況中,一張主表的一條記錄大概對應附表的幾條數據。只需要一個大概的規律就可以了,或者取一個中間值的比例。我們可以通過 Rational Data Architect 生成的表結構圖找到表與表之間的關系: