繁体   English   中英

如何处理非常大的数据库,不要错过性能?

[英]How can I handle a very large database and do not miss the performance?

如果我想开发一个应用程序,我会担心在用户数量和存储数据增加后的性能 实际上我不知道实现一个程序的最佳方法是什么,它适用于非常大的数据,并做一些事情,如搜索,实时查找和接收用户信息,搜索文本等,没有任何延迟

让我来解释一下这个问题

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

Users.find({ username: entered_username })

然后获取用户信息,我们检查密码,但'find'方法应搜索 百万用户之间的用户名,这是一个很大的数字,如果任何人请求身份验证,应该为每个用户运行此方法,这会导致重处理系统

但遗憾的是,这个问题只适用于寻找用户之类的问题,如果我们决定搜索文本,当我们在数据库上有大量文本和帖子时问题就更大了

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

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

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

谢谢你,如果你帮我找到一个好方法,并了解我该怎么做。

当你谈到性能时,它通常归结为三件事:

  • 你的设计
  • 你对“快速”的定义,以及
  • 你愿意支付多少钱

你的设计

MongoDB非常棒,如果你想迭代数据模型,可以水平扩展,如果使用得当,速度非常快。 另一方面,Elasticsearch不是数据库。 但是,搜索速度非常快。 如果您确切地知道数据的外观,并且不希望它发生太大变化,或者本质上是关系型的,那么传统的关系数据库将非常有用。

例如,您可以使用关系数据库进行用户登录,将MongoDB用于其他所有内容,并将Elastic用于文本可搜索数据。 没有规则告诉您将所有内容保存在单个数据库中。

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

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

你对“快”的定义

“快速”如何快速适合您的应用程序? 100毫秒足够快? 10毫秒足够快吗? 请记住,您对机器的性能要求越高,它就会越贵。 您可以通过更好的设计获得更多性能,但设计只能到目前为止。

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

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

你愿意支付多少钱

当然,这一切都取决于你愿意为所有需要托管所有东西的硬件支付多少钱。 MongoDB可能是开源的,但你需要一些地方来托管它。 此外,你不能指望魔术。 您不能每秒丢弃数千个查询和更新,并且当您只给它1 GB的RAM时,它会非常快速。

结论:如果您希望您的应用程序成功,从不低于节省资金。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM