Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何处理一个非常大的数据库而不错过性能?_Mongodb_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Full Text Search_Bigdata_Database - Fatal编程技术网 elasticsearch,full-text-search,bigdata,database,Mongodb,elasticsearch,Full Text Search,Bigdata,Database" /> elasticsearch,full-text-search,bigdata,database,Mongodb,elasticsearch,Full Text Search,Bigdata,Database" />

Mongodb 如何处理一个非常大的数据库而不错过性能?

Mongodb 如何处理一个非常大的数据库而不错过性能?,mongodb,elasticsearch,full-text-search,bigdata,database,Mongodb,elasticsearch,Full Text Search,Bigdata,Database,如果我想开发一个应用程序,我担心在用户数量和存储数据增加后它的性能。 实际上,我不知道实现一个程序的最佳方法是什么,该程序可以处理非常大的数据,并可以毫不延迟地实时执行诸如搜索、查找和接收用户信息、搜索文本等操作 让我进一步解释这个问题 例如我选择了“Mongodb”作为数据库,假设我们至少有500万用户,并且有一个用户想要登录到系统,该用户已经发送了用户名和密码 我们应该做的第一件事是找到具有该用户名的用户,然后检查密码。在mongodb中,我们应该使用类似“查找”的方法来获取用户信息,如下所

如果我想开发一个应用程序,我担心在用户数量和存储数据增加后它的性能。 实际上,我不知道实现一个程序的最佳方法是什么,该程序可以处理非常大的数据,并可以毫不延迟地实时执行诸如搜索、查找和接收用户信息、搜索文本等操作

让我进一步解释这个问题

例如我选择了“Mongodb”作为数据库,假设我们至少有500万用户,并且有一个用户想要登录到系统,该用户已经发送了用户名和密码
我们应该做的第一件事是找到具有该用户名的用户,然后检查密码。在mongodb中,我们应该使用类似“查找”的方法来获取用户信息,如下所示:

Users.find({ username: entered_username })
然后获取用户信息并检查密码 但是“查找”方法应搜索百万用户之间的用户名,这是一个很大的数字,如果有人请求身份验证,则应为每个用户运行此方法,这会导致系统上的大量处理

但不幸的是,这个问题只适用于查找用户,如果我们决定在数据库中有大量文本和帖子时搜索文本,问题就更大了

我不知道像facebook和linkedin这样的大公司是如何在如此短的时间内搜索数百万数据的。事实上,我不想创建类似facebook或更多的东西,但我有大量的数据,我正在寻找一个好方法来处理它

是否有任何框架或其他东西可以帮助我处理数据库中的大型数据,或者是否存在一种方法来实现数据库中的数据,以便我们快速搜索和查找数据?我应该使用特定的数据结构吗

我创建了一个开源项目,它可以帮助我们更快地搜索,但我不知道我是否发现了一些具有弹性的东西,我如何在mongodb上也找到它来更新数据,如果我使用弹性搜索,我也应该使用mongodb还是不使用!?我可以同时使用elastic作为数据库和搜索引擎吗
如果我同时使用elasticsearch和mongodb,那么我应该有两个数据副本,一个在mongodb,一个在elasticsearch!?这两个数据副本是分开的:(我希望在mongodb中的elasticsearch不必创建两个数据副本


如果您能帮我找到一个好方法并了解我应该做什么,谢谢您。

当您谈论性能时,通常归结为三件事:

  • 你的设计
  • 您对“快速”的定义,以及
  • 你愿意付多少钱
你的设计 如果您想在数据模型上进行迭代,MongoDB非常棒,可以水平扩展,如果使用得当,速度也非常快。另一方面,Elasticsearch不是一个数据库。但是,它搜索速度非常快。如果您确切地知道数据的外观,并且不希望数据有太大的变化,或者是不稳定的,那么传统的关系数据库将非常有用关系的本质

例如,您可以使用关系数据库进行用户登录,使用MongoDB进行其他操作,并使用Elastic进行文本、可搜索的数据

确保您了解索引,并知道如何充分利用它的潜力。如果您没有正确设计数据库,最快的硬件将无法帮助您

结论:使用您需要的任何工具,必要时进行组合,但要了解它们的优缺点

你对“快”的定义 对于您的应用程序,“快”有多快?100毫秒快吗?10毫秒快吗?请记住,您对机器的性能要求越高,其成本就越高。您可以通过更好的设计获得更高的性能,但设计只能做到这一点

通常这归结为您和您的客户可以接受的问题。并不是每个应用程序都需要低于10毫秒的响应时间。有很多应用程序可以容忍在几秒钟内返回的查询

结论:确定什么是可接受的,并进行相应的设计

你愿意付多少钱 当然,这一切都取决于你愿意为所有需要承载这些东西的硬件支付多少。MongoDB可能是开源的,但你需要一些地方来承载它。此外,你不能指望有魔力。你不能每秒抛出数千个查询和更新,当你只给它1GB的RAM时,它会燃烧得很快


结论:如果你想让你的应用程序成功,千万不要为省钱而预留资金。

首先,问题是主题。第二,elasticsearch不是一个数据库,它是一个搜索引擎。最后,5000000不是很多,用户都是中等规模的。我知道elasticsearch不是一个数据库,但我们也可以将其用作数据库,关于num对于用户,我只说一个示例elasticsearch不应该用作主数据库。LinkedIn使用elasticsearch提供搜索功能,Facebook使用Apache Cassandra,但5000000行并不是一个索引良好的SQL server无法处理的,特别是因为您正在按Id显示find,这在所有解决方案中都很快s、 但是关于这个话题有太多的内容,我认为问这个问题没有任何意义。这完全取决于你在It基础设施方面有多出色,或者你想支付AWS或Azure以获得你想要的性能。也许我不应该说5000000个数字,而只是说这是一个大数据,我想选择mongodb作为主要数据库并使用elasticsearch用于在mongodb中搜索…但我的问题是elasticsearch不能直接在mongodb中搜索,我想知道我应该在elastic和mongo中创建两个数据副本,还是有这样一个me