我正在构建一个使用 mongoDB 进行操作存储的 ETL 应用程序。ETL 过程从数据源执行频繁的增量转储,有时还会执行全表转储。
当我执行完全转储时,我想替换整个 mongoDB 集合 - 索引和所有。
PHP 教程建议使用这种方法插入多个文档:
<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;
for ( $i = 0; $i < 100; $i++ )
{
$collection->insert( array( 'i' => $i, "field{$i}" => $i * 2 ) );
}
?>
但是,如果我有数百万个文档,这会导致与 mongoDB 的数百万个连接——这显然是一个很大的瓶颈,尤其是在远程数据库上。更不用说我是否想等待来自数据库的回调确认插入成功。
PHP驱动程序支持的mongoDB中是否有一种方法可以用一个大数组替换整个集合,从而对数据库执行一次调用?我想这对于 mongoDB 也会更快,例如db.colleciton.drop()
vs. db.collection.remove()
.
如果这不可能,那么在运行 PHP 脚本的同一台服务器上拥有一个主数据库并远程复制它会更有效吗?通过这种方式,我可以从本地数据库获得更快的响应,并且复制时会有一些滞后,但我想这会使 PHP 脚本更早可用。
有什么建议么?
谢谢,
通用汽车