Em node.js, como declarar uma variável compartilhada que pode ser inicializada pelo processo mestre e acessada por processos de trabalho?

Eu quero o seguinte

Durante a inicialização, o processo mestre carrega uma tabela grande do arquivo e a salva em uma variável compartilhada. A tabela tem 9 colunas e 12 milhões de linhas, 432 MB de tamanho.Os processos de trabalho executam o servidor HTTP, aceitando consultas em tempo real na tabela grande.

Aqui está o meu código, que obviamente não alcança meu objetivo.

var my_shared_var;
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Load a large table from file and save it into my_shared_var,
  // hoping the worker processes can access to this shared variable,
  // so that the worker processes do not need to reload the table from file.
  // The loading typically takes 15 seconds.
  my_shared_var = load('path_to_my_large_table');

  // Fork worker processes
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
} else {
  // The following line of code actually outputs "undefined".
  // It seems each process has its own copy of my_shared_var.
  console.log(my_shared_var);

  // Then perform query against my_shared_var.
  // The query should be performed by worker processes,
  // otherwise the master process will become bottleneck
  var result = query(my_shared_var);
}

Eu tentei salvar a tabela grande no MongoDB para que cada processo possa acessar facilmente os dados. Mas o tamanho da tabela é tão grande que leva o MongoDB cerca de 10 segundos para completar minha consulta, mesmo com um índice. Isso é muito lento e não é aceitável para meu aplicativo em tempo real. Eu também tentei Redis, que contém dados na memória. Mas o Redis é um armazenamento de valor-chave e meus dados são uma tabela. Eu também escrevi um programa C ++ para carregar os dados na memória, e a consulta levou menos de 1 segundo, então eu quero emular isso em node.js.

questionAnswers(5)

yourAnswerToTheQuestion