NodeJS-多线程应用程序数据库瓶颈

时间:2018-12-13 23:18:12

标签: node.js database multithreading sqlite

我想知道是否有人对如何最好地实现像sqlite3这样的嵌入式数据库有任何建议,以在多线程节点应用程序中获得最佳性能。我目前有工作,但sqlite似乎是瓶颈

我设置了辅助子进程来创建对象数组,这些对象的属性将1:1映射到sqlite数据库中的列。理想情况下,我希望能够为每个可用CPU创建尽可能多的这些工作程序,以便尽可能快地生成这些对象数组,以便在超级计算机上运行此应用程序时,速度会大大提高。

问题在于,一旦每个工作人员生成了其数组并将其传递给数据库写入线程,数据库写入部分就会成为巨大的瓶颈。即使在笔记本电脑上,生成线程也会将大量数据传递给db writer,使其无法跟上,从而有效地使多余的线程在减少总体运行时间方面毫无用处。

如预期的那样,最大的问题之一是sqlite写入的序列化性质。我不能有多个数据库工作者写入同一数据库。我曾考虑过可能要为每个线程创建一个sqlite数据库,然后在最后合并,尽管那将意味着每个线程数据库可能包含许多重复项,因为它将不会检查其他线程数据库中的键,否则我将不得不每个插入之前,线程会互相检查每个线程的dbs键以及它自己的键。似乎并不理想。我还尝试写入文件系统,但是还有很多其他问题

也许有比sqlite更好的解决方案?我看过hdf5和许多其他解决方案,但我真的不确定。任何建议最好的方式来写多个线程同时以最大速度生成的大量数据的最佳方法

0 个答案:

没有答案