海量數(shù)據(jù)導出之優(yōu)化

????隨著公司的業(yè)務量越來越大,已經(jīng)達到了上百G的數(shù)據(jù)量,算是一般互聯(lián)網(wǎng)公司的小型數(shù)據(jù)量了,但也可以稱為海量數(shù)據(jù)。

? ? 由于不同公司需要導出自己公司的業(yè)務數(shù)據(jù),那么一般的做法是適用程序來解決:

? ? 1):瀏覽器發(fā)起導出事件的網(wǎng)絡請求到服務器

? ? 2):服務器連接數(shù)據(jù)庫,從數(shù)據(jù)庫查詢數(shù)據(jù)

? ? 3):通過返回的數(shù)據(jù)進行寫入到excel/csv等文件

? ? 4):寫入完成之后,將文件二進制流響應給瀏覽器

? ? 以上流程是最常見的處理方式,而且一般下載結束之后,會保留在服務器,但是這種情況卻有其他問題,因為一般情況下,服務器是分布式的,那么保留在其中一臺服務器,那么其他服務器是沒有數(shù)據(jù)文件的,就會導致請求分配到其他機器的時候會重新從數(shù)據(jù)庫進行查詢。當時最容易解決的方案是采用nfs,將文件存儲到nfs節(jié)點上。

? ? 但是隨著數(shù)據(jù)量的越來越大,這種方案就會存在著大量超時的問題,或者存在著內(nèi)存溢出,以及數(shù)據(jù)庫服務器的cpu的飆高。

? ? 對于這種情況下最基礎的解決方案是:適用數(shù)據(jù)庫的內(nèi)置命令進行數(shù)據(jù)導出,程序發(fā)起導出操作采用異步方式處理,而且處理的效率上會比通過程序的方式處理高的多,而且不容易出錯;但是對于導出的請求越來越多的時候,效率也會越來越低。

????? ??

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容