// упростим алгоритм, теперь в нем будет 1 токен по 10 цифр
function rand() {
return ('00000000000'+Math.floor(Math.random()*10000000000)).substr(-10);
}
// число экспериментов
var count = 10000000;
// вычисляем частоту повторения чисел в первой позиции
var summ = [0,0,0,0,0,0,0,0,0,0];
for(i=0;i<count; i++){
let test = rand();
let num = parseInt(test[0]);
summ[num]++;
}
console.log("частота повторения:\n");
summ.forEach((n,i)=>{
console.log(i," - ",n);
});
0 ' - ' 999089
1 ' - ' 999237
2 ' - ' 1000331
3 ' - ' 999494
4 ' - ' 1001380
5 ' - ' 1001016
6 ' - ' 999848
7 ' - ' 1000501
8 ' - ' 998291
9 ' - ' 1000813
на свалку истории монгу отправляйте
забудьте про эту поделку
все что умеет монга умеет и затюненная субд
монга это любая субд с запросами строго по pk и отрицанием 1НФ
В свою очередь это накладывает ряд ограничений на код приложений, предполагающих работу под нагрузкой. Об этих онраничениях упоминалось выше, но повторюсь:
1. не использовать синхронный ввод вывод;
2. не делать больших задач с тяжелыми вычислениями, выполняемыми за раз. Если же такие вычисления необходимы, то в процессе их выполнения давать им паузу, позволяя эвентлупу переключаться на другие задачи или же выполнять такие задачи в воркерах. Для приостановки выполнения задач в ноде есть разные средста, например генераторы с yield и др.
На мой взгляд этой и выше представленной информации достаточно для понимания.
Если же вам требуется более глубокое понимание, обратитесь к исходным кодам ноды а также поищите в нете результаты тестов под нагрузкой для различных приложений.