我需要一个解决以下问题的架构意见和方法:
简介:
我们有一个
~4M行表,名为Purchases。 我们还有一个~5k行表,名为Categories。 此外,我们还有一个~4kSubCategories表。我们使用T来存储data.At用户的请求(在运行时),服务器接收到大约10-15 N的参数可能性的请求。根据这些参数,对采购进行分类和subCategories排序,并对“计算”过程中的“计算”过程进行computing.Some,包括过滤、排序、重新排列采购字段、互相减法、互相添加一些其他采购,找到节省,etc...This过程是特定于用户的,因此每个用户都会根据各自的角色获得不同的数据。
问题:
这个过程大约需要3-5分钟,我们想要削减它的down.Previously,这个过程是在内存中,通过网络工人(JS)浏览器上完成的。随着内存开始变得非常大,并且大多数浏览器开始在加载时出现故障,我们已经不再使用它了。然后,我们将服务移动到服务器(NodeJS),它通过子进程动态地处理请求。子进程的原因:计算过程经过一个关于5,000倍次数的for循环(对于每个类别),并执行上面提到的“计算”.Via子进程,我们能够将工作分配到子进程的#中,如果我们运行至少16核(16个子进程),这会给我们带来更好的结果。目前的处理时间已经降到了的1.5到2分钟,,但是我们想看看我们是否有更好的选择。
我理解在不看到任何代码的情况下,很难完全理解我们的目标,而是特别地提出问题。在运行时对半大数据进行计算的一些方法是什么?
我们有一些想法:
其他一些有用的事实:
如果有更多的信息,我们可以提供更好地理解我们的困境,请评论,我会提供尽可能多的信息。有太多的代码粘贴在这里,一个人要完全理解算法,因此,我想尝试把我们的问题,如果可能的话。
发布于 2017-09-12 10:10:48
决不要在确定工作流的关键路径之前决定技术
这将永远不会帮助你达到(一个未知的)目标。
不知道过程的关键-路径,没有人能计算出任何加速从任何一个人可以积极-“销售”你或just-"recommend“你跟随”怪人/书呆子/性感/流行“-任何一个人喜欢听到。
你会从这种早熟的决定中得到什么?
通常情况下,预算($t$)和项目管理(滑动时间尺度)都是噩梦的混合体:
如果你能用一个解决方案,你会怎么说,
如果“更好的选择”仍然是你的选择:
企业主对这种与投资回报率一致的战略会怎么说?
如果你让首席执行官+首席财务官“买”任何新的玩具,那么,这对今天的黑客来说是很酷的,明天也是如此,但这种方式绝不会比把钱投入尼罗河更让股东们开心。
如果你能展示最终有效的项目计划,其中大部分知识和技能都集中在与业务一致的目标上,同时保护投资回报率,这将使你的首席执行官+首席财务官和我都保证,你的所有股东也非常高兴,不是吗?
那么,你决定走哪条路?
发布于 2018-08-17 12:50:50
这个话题并不新鲜,只是以防万一.就我的经验而言,我认为您的tell可能是您的瓶颈。
您测量了SQL查询的性能吗?在SQL服务器端计算什么?在Node.js那边?
一个好的开端是度量SQL查询的响应时间,修改查询,编写索引,并在需要时深入了解DB查询引擎是如何工作的。有时候,在DB设置中进行一个小的调优就能做到这一点!
https://stackoverflow.com/questions/46167880
复制相似问题