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不必创建两个数据副本
如果您能帮我找到一个好方法并了解我应该做什么,谢谢您。当您谈论性能时,通常归结为三件事:
- 你的设计
- 您对“快速”的定义,以及
- 你愿意付多少钱
结论:如果你想让你的应用程序成功,千万不要为省钱而预留资金。首先,问题是主题。第二,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