MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chuyển mảng lớn sang tiến trình nút con

Với lượng dữ liệu khổng lồ như vậy, tôi sẽ xem xét việc sử dụng bộ nhớ dùng chung chứ không phải sao chép dữ liệu vào quy trình con (đó là những gì đang xảy ra khi bạn sử dụng đường dẫn hoặc chuyển thông báo). Điều này sẽ tiết kiệm bộ nhớ, tốn ít thời gian CPU hơn cho quy trình chính và không có khả năng đạt đến một số giới hạn.

shm-typed-array là một mô-đun rất đơn giản có vẻ phù hợp với ứng dụng của bạn. Ví dụ:

parent.js

"use strict";

const shm = require('shm-typed-array');
const fork = require('child_process').fork;

// Create shared memory
const SIZE = 20000000;
const data = shm.create(SIZE, 'Float64Array');

// Fill with dummy data
Array.prototype.fill.call(data, 1);

// Spawn child, set up communication, and give shared memory
const child = fork("child.js");
child.on('message', sum => {
    console.log(`Got answer: ${sum}`);

    // Demo only; ideally you'd re-use the same child
    child.kill();
});
child.send(data.key);

child.js

"use strict";

const shm = require('shm-typed-array');

process.on('message', key => {
    // Get access to shared memory
    const data = shm.get(key, 'Float64Array');

    // Perform processing
    const sum = Array.prototype.reduce.call(data, (a, b) => a + b, 0);

    // Return processed data
    process.send(sum);
});

Lưu ý rằng chúng tôi chỉ gửi một "khóa" nhỏ từ quy trình mẹ đến quy trình con thông qua IPC, không phải toàn bộ dữ liệu. Do đó, chúng tôi tiết kiệm được rất nhiều bộ nhớ và thời gian.

Tất nhiên, bạn có thể thay đổi 'Float64Array' (ví dụ:một double ) với bất kỳ mảng đã nhập ứng dụng của bạn yêu cầu. Lưu ý rằng thư viện này đặc biệt chỉ xử lý các mảng được đánh một chiều; nhưng đó chỉ là một trở ngại nhỏ.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dữ liệu mùa xuân thiết kế ứng dụng mongodb và tổng hợp dữ liệu

  2. Lỗi xác nhận:1 ==0 cho lệnh MongoDB deleteOne

  3. mongodb:tìm giá trị số cao nhất của một cột

  4. Trường hợp cho chỉ số băm MongoDB

  5. Giao dịch Mongo DB 4.0 với Mongoose &NodeJs, Express