2016-11-02 106 views
0

我們的項目處理大量的記錄,我們使用普通表,但只顯示更少數量的記錄給用戶。這意味着我們在後端有1500萬條記錄,但僅向用戶顯示1000條記錄。html表中的過濾器操作angularjs或服務器端

如果用戶想搜索特定的記錄,那麼他們可以使用過濾器操作。我們已經在angularjs中實現了過濾器功能,即創建了自定義服務來爲大型記錄執行過濾操作。問題是我們正在$ scope變量中保存巨大的記錄。

//$scope.filteredVldData is a array which contains 15 million records. 
var result = filterService.filter($scope.filteredVldData); 

//Filter Service 

var filterApp = angular.module('filterModule', []); 
filterApp.factory('filterService', function() { 
    return { 
     filter: function (filterData) { 

//For Equals logic 

//For not equals logic 

//For Contains logic 
      } 
}}); 

過濾器操作正常。它給出了預期的結果。我不確定是否在客戶端$ scope變量中保存1500萬條記錄以執行過濾器操作的好方法。

每個記錄有15列,所以我保持記錄在客戶端的巨大的大小。

由於記錄數量巨大,我計劃在服務器端移動過濾器邏輯,只要應用了過濾器,它就會進入後端並將結果綁定到表。

當考慮數百萬條記錄時,哪一個是在普通html表格中執行過濾操作的最佳方式?在客戶端還是服務器端?

回答

2

這取決於該記錄的大小以及客戶端將使用何種硬件。對於普通的個人電腦/筆記本電腦作爲客戶端來說,在服務器端完成過濾器/排序操作總是好的,並且只顯示需要顯示的可記錄的子集。另一點是 - 如果你的客戶端有一個本地存儲系統,並且你需要離線數據搜索/查看,那麼你最初可能會進行一次同步以將數據存儲在本地存儲上(同樣,如果這不是很大客戶端),然後過濾並僅檢索內存和顯示的子集。

+0

是的,你是對的!該記錄只有很大(每記錄15列),所以對於1500萬條記錄來說它將是巨大的。那麼在這種情況下,我們可以繼續做像存儲過程那樣的後端過濾操作嗎? – SivaRajini

+0

理想情況是的。你應該繼續。總存儲大小還取決於記錄每個字段的類型和大小,對於文本數據而言佔用的磁盤空間很小。當涉及到快速處理並返回結果時,問題更大。如果處理器和內存較少(如果服務器配置較低,則處理速度相同),所有這1500萬條記錄的處理將花費大量時間。 – Tushar