2014-06-26 17 views
5

Tôi đã được làm việc trên dc và crossfilter js và tôi hiện đang có một bộ dữ liệu lớn với 550.000 hàng và kích thước 60mb csv và đang phải đối mặt với rất nhiều vấn đề với nó như trình duyệt bị treo vvDC và crossfilter với các tập dữ liệu lớn

Vì vậy, , Tôi đang cố gắng để hiểu làm thế nào dc và crossfilter đề với datasets lớn. http://dc-js.github.io/dc.js/

Các mẫu trên trang web chính của họ chạy rất trơn tru và sau khi nhìn thấy timelines-> bộ nhớ (trong giao diện điều khiển) nó đi đến một tối đa của 34 mb và dần dần giảm theo thời gian

dự án của tôi là chiếm bộ nhớ trong khoảng 300-500mb mỗi lựa chọn thả xuống, khi nó tải tệp json và làm cho toàn bộ hình dung

vì vậy, 2 câu hỏi

  • phụ trợ cho các ví dụ trang web dc là gì? Có thể tìm ra tệp phụ trợ chính xác không?
  • Làm cách nào để giảm quá tải dữ liệu trên RAM của mình khỏi ứng dụng đang chạy rất chậm và cuối cùng bị lỗi?
+0

Bạn có thể chia sẻ một ví dụ không? Bạn đang nói về một lượng dữ liệu khá lớn, nhưng nó không nhất thiết nằm ngoài phạm vi của những gì có thể quản lý được. –

Trả lời

2

Xin chào, bạn có thể thử chạy tải dữ liệu và lọc dữ liệu trên máy chủ. Tôi đã gặp phải sự cố tương tự khi kích thước của tập dữ liệu của tôi quá lớn để trình duyệt xử lý. Tôi đã đăng câu hỏi một vài tuần trước để triển khai thực hiện tương tự. Using dc.js on the clientside with crossfilter on the server

Dưới đây là tổng quan về việc thực hiện nó.

Về phía khách hàng, bạn muốn tạo thứ nguyên giả và nhóm giả có chức năng cơ bản mà dc.js mong đợi (https://github.com/dc-js/dc.js/wiki/FAQ#filter-the-data-before-its-charted). Bạn tạo các biểu đồ dc.js của bạn ở phía máy khách và cắm vào các kích thước và nhóm giả bất cứ nơi nào cần thiết.

Bây giờ ở phía máy chủ, bạn có bộ lọc chéo chạy (https://www.npmjs.org/package/crossfilter). Bạn tạo các thứ nguyên và nhóm thực tế của mình tại đây.

Các quyền giả mạo có chức năng .filter() về cơ bản gửi yêu cầu ajax đến máy chủ để thực hiện lọc thực tế. Thông tin lọc có thể được mã hóa dưới dạng chuỗi truy vấn. Bạn cũng cần có chức năng .all() trên nhóm giả của mình để trả lại kết quả lọc.

+1

Cảm ơn bạn vì ý tưởng này, bạn có thể chia sẻ một ví dụ về cách thực hiện điều này không? Tôi đã đọc nó một lúc nhưng không thể hiểu được hoàn toàn. –

+0

Bạn có thể chia sẻ một ví dụ không? –

+1

Có xin vui lòng cho tôi một ngày. –

Các vấn đề liên quan