【问题标题】:Database Design: When should I use multiple database? [closed]数据库设计:什么时候应该使用多个数据库? [关闭]
【发布时间】:2018-08-28 14:50:30
【问题描述】:

背景:

我正在尝试构建应用程序的后端服务。这个应用程序有用户可以加入的房间。当用户加入房间时,他/他可以通过套接字与其他用户交换一些数据。在房间外,用户可以查看他/她加入的房间内发生的交易的处理数据。房间列表、房间信息以及房间内的数据交易都应该存储在数据库中。

我的想法是用一个数据库创建一个项目,但是,一位经验丰富的开发人员建议将数据库分成两个:

  1. 使用 MongoDB 存储房间内发生的数据事务。
  2. 使用 MySQL 存储和返回房间列表、房间信息以及房间内发生的事情的分析。

我看到使用多个数据库的问题:

我做了一些研究,据我了解,不建议使用多个数据库,但如果数据不相关,则可以实施。显示分析需要处理房间内发生的数据交易,并显示房间的信息。如果我使用两个数据库的方法,我需要从两个数据库中检索数据才能实现这一点。

问题:

我个人认为使用单一数据库方法更容易,因为我不认为房间内外的数据是“不相关的”。我是否遗漏了关于何时使用多个数据库的重要信息?

提前致谢。祝你有美好的一天。

【问题讨论】:

  • 为什么不使用一个数据库?建议在应用中使用最少的移动部件。
  • 我实际上想使用一个数据库,但也想听听其他人对此的看法。我的朋友比我更有经验,所以我不想在不努力理解的情况下拒绝他的想法。
  • 您的朋友正在尝试解决一个可能不存在的问题。使用一个数据库构建它,如果以后需要第二个数据库技术,那就去吧。不要沉迷于它。从一开始就拥有 2 个 DB 技术会减慢和过度复杂化您尚未构建的应用程序的开发。过度工程是针对傻瓜的。
  • 是时候阅读一本介绍数据库管理的教科书了。数十个免费在线 PDF,还有免费的学术幻灯片和课程。 PS Plus 这是一个重复的问题。也跑题了,太笼统了。然而,一个常见问题解答,因为人们不努力(重新)搜索。 (请参阅向下投票箭头鼠标悬停文本和How to Ask 以及help center 上的其他链接。)
  • @philipxy 编辑了我的帖子。对困惑感到抱歉。是的,我现在正在尝试阅读有关 DBMS 的更多信息,同时等待我可以在这里获得的更多建议。谢谢你的建议:)

标签: mysql node.js mongodb transactional relational


【解决方案1】:

你可以从两个角度来看待这个问题;技术性和实用性。

从技术上讲,如果您的后端预计会变得非常复杂或规模化,建议将其分解为多个微服务,每个微服务负责一项小任务。理想情况下,这些小型服务应该可以帮助您实现关注点分离,因此每个服务只处理一个数据。如果其他服务需要读取和/或修改该数据,则必须通过负责的服务。

在这种情况下,根据每个服务处理的数据,您可以选择合适的数据库。例如,如果您有事务性数据,您可以使用 MySQL、MongoDB 来处理大型无模式内容,或者如果您想执行文本搜索,则可以使用 Elasticsearch。

实际上,建议从一个服务和数据库开始(如果您希望尽快开发应用程序),然后随着时间的推移将其分解为多个服务,因为您需要添加和/或改进功能。

要记住多点。首先,如果您希望拥有庞大的用户群,您应该从一开始就使用正确的架构开始开发,以避免出现扩展问题。其次,有时一个数据库无法执行您需要的任务。例如,在 MySQL 中进行文本搜索会非常低效。最后,没有绝对正确的做事方式。不管你做什么,明天可能会有另一位朋友出现,问你为什么不按他/她的方式做。最重要的是开始做,然后在此过程中学习和改进。 Facebook 是从 MySQL 开始的,最初运行良好。它今天能在一种数据库类型中存活下来吗?我怀疑答案是否定的,但是对他们来说添加他们当时拥有的所有 N 个数据库是否有意义?

祝你发展顺利!

【讨论】:

  • 我可能会听取您的建议,从一个开始,然后随着应用程序的发展将其分解为多个。感谢您的友好回答和鼓励:)
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 2014-04-13
  • 2023-03-24
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多