NodeJS - узкое место в базе данных многопоточных приложений - PullRequest
0 голосов
/ 14 декабря 2018

Мне интересно, есть ли у кого-нибудь предложения о том, как лучше всего внедрить встроенную базу данных, такую ​​как sqlite3, для максимальной производительности в многопоточном приложении узла.У меня есть кое-что работающее в настоящее время, но sqlite является узким местом, кажется,

У меня есть рабочие дочерние процессы, настроенные для создания массивов объектов со свойствами, которые сопоставляют 1: 1 со столбцами в базе данных sqlite.в идеале я хочу иметь возможность создавать как можно больше таких рабочих на каждый доступный ЦП, чтобы генерировать эти массивы объектов как можно быстрее, и чтобы при запуске этого приложения на суперкомпьютере оно значительно возрастало.

проблема в том, что как только каждый работник генерирует свой массив и передает его потоку записи в базу данных, часть записи в базу данных является огромным узким местом.даже на ноутбуке генерирующие потоки передают так много данных записывающему устройству, что он не может его поддерживать, что делает лишние потоки бесполезными в плане сокращения общего времени работы.

Одна из самых больших проблем, как и ожидалось, заключается в том, чтопишет сериализованная природа sqlite.я не могу иметь несколько рабочих БД, пишущих в один и тот же БД.я подумал о том, чтобы, возможно, создать sqlite db для каждого потока, а затем объединить в конце, хотя это означало бы, что каждый db потоков, вероятно, будет содержать много дубликатов, так как он не будет проверять ключи в других dbs потоков, или мне придется сделать каждыйпроверяйте друг друга потоками ключей dbs, а также своими собственными перед вставкой.не кажется идеальным.Ive также пытался записать в файловую систему, но у этого есть множество других проблем

возможно, есть лучшее решение, чем sqlite?Я посмотрел на hdf5 и кучу других решений, но я действительно не уверен.Любые предложения о лучшем способе записи больших объемов данных, сгенерированных с максимальной скоростью одновременно несколькими потоками, будут очень благодарны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...