如何在mongoDB中加快将1百万个文档插入到4百万个文档中?

时间:2019-11-14 16:04:19

标签: database spring mongodb

我使用Spring作为框架,使用mongoDB作为DB。我注意到Mongo在查找文档时工作得很好,但是当它处理大量记录时,它会变得非常慢(大约需要6分钟才能保存一百万个文档)。 在我的数据库的其他表中,有很多数据(大约2000万条记录)。有问题吗?

如何加快这一过程?

我向您展示了如何在Spring中写入数据:

IdSMTP1.Host := 'email-smtp.us-west-2.amazonaws.com';
IdSMTP1.Username := 'myusername';
IdSMTP1.Password := 'mypassword';
IdSMTP1.Port := 587;
IdSMTP1.IOHandler := IdServerIOHandlerSSLOpenSSL1;
IdSMTP1.UseTLS := utUseExplicitTLS;
IdSMTP1.UseEhlo := True;

IdMessage1.Body.Text := 'This is a test é á ó ç';

IdMessage1.ContentType := 'text/plain';
IdMessage1.CharSet := 'utf-8';
//alternatively
// IdMessage1.ContentType := 'text/plain; charset=utf-8';

IdMessage1.ContentTransferEncoding := 'base64';

with IdServerIOHandlerSSLOpenSSL1 do
begin
  SSLOptions.Method := sslvTLSv1;
  SSLOptions.VerifyMode := [];
  SSLOptions.VerifyDepth := 0;
end;

IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);

为了保存数据,我尝试过:

第一次尝试:

<IonSlides
        onIonSlideDidChange={() => console.log("a")}
        pager={false}
        class="full-width"
      >

第二次尝试:

@Document
public class Message {  
    @Id
    private String id; 
    ...other 20 fields with getter and setter...
}

第三次尝试:

mongotemplate.insertAll(messages)

实际上,最后一个略胜于其他,但没有一个能让我真正满意。 如何减少写作时间? 使用其他类型的数据库(例如Cassandra或SQL数据库)是否方便?如果答案是肯定的,那么哪一个是最快的记录,它几乎可以在几乎空的表中写入多达4百万条Milion记录?

谢谢。

0 个答案:

没有答案