使用Laravel和DataTable快速从Mongo数据库检索数据

时间:2019-12-03 06:25:59

标签: javascript php laravel mongodb datatable

我正在使用可处理大量数据(每天最少100万条记录)的系统,我决定使用mongo数据库,因为它适合大数据,一切正常,我可以检索并将数据插入其中数据库,但是我的问题是,即使我每次只检索10条记录,也要花很长时间从数据库中检索数据,所以每次花费30秒以上的时间只能得到10条记录,而且时间很长,所以我该如何改善程序性能,我正在使用服务器端数据表将数据显示为数据表, 这是我的控制器代码

 public function hlist(Request $request){
 $draw = intval( $request->input('draw'));
    $start = intval($request->input('start'));
    $length = intval($request->input('length'));
    $order = $request->input('order');
    $search=$request->input('search');
    $search = $search['value'];
    $col = 0;
    $dir = "";
    $limit = (int)$request->input('length');
    $total_logs= $this->totalLogs();
    $offset=$draw * $length;


    $data=Logs::offset($offset)->limit($limit)->get();
    // Execute the query

          $output = array(
        "draw" => $draw,
        "recordsTotal" => $total_logs,
        "recordsFiltered" => $total_logs,
        "data" => $data
    );
    echo json_encode($output);


}

这是我的数据表代码

var table=$('#product-table').DataTable({  select: true,
     dom: 'Brtip',
    processing: true,
    serverSide: true,"searching": true,
    ajax:    "hlist",
     buttons: [ 'colvis' ],
    order: [[1, 'asc']],
stateSave: true,

    columns: [

            { data: 'sys',  "defaultContent": "<i>Not set</i>" },
         { data:'time', "defaultContent": "<i>Not set</i>"  },
        { data: 'Protocol',  "defaultContent": "<i>Not set</i>" }   ,
         { data: 'SourceIP' ,  "defaultContent": "<i>Not set</i>" },
          { data:'DestinationIP',  "defaultContent": "<i>Not set</i>"},
           { data: 'SourcePort' ,  "defaultContent": "<i>Not set</i>"},
            { data: 'DestinationPort', "defaultContent": "<i>Not set</i>" }, { data:'BeginTime', "defaultContent": "<i>Not set</i>"}, { data: 'EndTime', "defaultContent": "<i>Not set</i>"}, { data: 'SendPkts' , "defaultContent": "<i>Not set</i>"}, { data: 'SendBytes' , "defaultContent": "<i>Not set</i>"},{ data: 'RcvPkts', "defaultContent": "<i>Not set</i>" },{ data: 'RcvBytes', "defaultContent": "<i>Not set</i>" },{ data: 'SourceVpnID' , "defaultContent": "<i>Not set</i>"},{ data: 'DestinationVpnID' , "defaultContent": "<i>Not set</i>"},{ data: 'SourceZone', "defaultContent": "<i>Not set</i>" },{ data: 'DestinationZone', "defaultContent": "<i>Not set</i>" },{ data: 'PolicyName' , "defaultContent": "<i>Not set</i>"},{ data: 'CloseReason', "defaultContent": "<i>Not set</i>" },{ data: 'ApplicationName' , "defaultContent": "<i>Not set</i>"},{ data: 'level' , "defaultContent": "<i>Not set</i>"}
   ]
});
  $('#product-table tfoot th').each( function () {
    var title = $(this).text();
    $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
} );
 table.columns().every( function () {
    var that = this;

    $( 'input', this.footer() ).on( 'keyup change clear', function () {
        if ( that.search() !== this.value ) {
            that
                .search( this.value )
                .draw();
        }
    } );
} );

});

即使我只是直接在laravel中运行查询,也要花很长时间才能检索数据,所以我认为延迟是来自查询而不是来自数据表

0 个答案:

没有答案