2012-02-19 85 views
0

直接到Qeustion - >。异步批量(批量)通过Node.js插入到MySQL(或MongoDB?)

问题:要使用的Node.js做异步批量插入(不是必需的散装,如果MySQL可以处理它)(即将形式的.NET和PHP背景)

实施例: 假设我有40(可调)函数做一些工作(异步),并且每次迭代后在表中添加一条记录,现在很可能同时有多个函数进行插入调用。考虑到将会有一个自动更新字段,MySql能够直接处理这种方式吗? (.NET)我会用一个dataTable来包含来自每个函数的所有行,并最终将dataTable批量插入到数据库表中。并为每个功能启动多个线程。

,你会在这种情况下什么建议的做法,

应当在办法改变的情况下,我需要处理每桌10,000或400万行? ALso DB模式不会改变,MongoDB会是更好的选择吗?

我是Node,NoSql和目前noob学习阶段的新手。所以,如果你可以给你的答案提供一些解释,那就太棒了。

谢谢。

编辑: 答:无论是MySQL或MongoDB中支持任何形式的批量插入的,在引擎盖下,这只是一个foreach循环。他们都能够同时处理大量的连接,性能将很大程度上取决于您的需求和生产环境。

回答

1

1)在MySql查询中按顺序执行每个连接。如果您使用的是一个连接,那么您的40个函数将导致40个查询排队(通过mysql库中的显式队列,您的代码或基于同步原语的系统队列),而不一定与您启动40个函数的顺序相同。在这种情况下,MySQL不会有自动更新字段的任何竞态条件问题

2)如果你真的想要并行执行40个查​​询,你需要打开40个连接到MySQL(这不是一个好主意,从性能的观点,但同样,Mysql旨在为多个客户端正确处理自动增量)

3)在线层上的Mysql协议中没有特殊的批量插入命令,任何实际上暴露批量插入API的库只是做很长的'insert ... values'查询。

+0

感谢您的回复, 1)当我继续搜索时,我发现MongoDB可以比MySQL更好地处理大插入,你会同意吗?假设40个函数中的每一个将携带10,000个或更多数据记录,? 我正在学习这一切,所以我现在不担心时间或生产环境,但我仍然想知道优点/缺点。 – TarunG 2012-02-20 01:07:59

+0

尝试并做一些基准测试。我见过mysql和mongo每秒处理数十万个插入点 – 2012-02-20 01:44:49

+0

当然,这将很有趣:), Thnx为您的时间。 – TarunG 2012-02-20 03:07:00