gpt4 book ai didi

mysql - 用于客户端和事务管理的 NoSQL 数据库

转载 作者:行者123 更新时间:2023-11-29 10:55:11 25 4
gpt4 key购买 nike

我假装使用nodejs+express+angular构建一个内网门户,但是我想知道MongoDB是否是一个不错的数据库选择。

  • 用户必须报告其工作时间,以便稍后向客户提交发票

  • 必须管理客户(添加、编辑、删除)

  • 我必须显示包含发票金额、主要客户等的仪表板。 (通过执行算术函数)

例如,将小时记录中的客户 ID 与客户本身关联起来是否容易?

或者我应该使用 SQL 数据库,例如 MySQL?

我需要基于性能可扩展性等的事实。

当我的 NoSQL 数据库变得更大时会发生什么?会损失性能吗?

最佳答案

我的经验:过去 2 年零 5 个月我一直在使用 MongoDB 和 Mysql。

我在这里写的所有内容都来自我的个人观点和经验。

如今 MongoDB(一般来说是 NoSQL)是一个流行词,每个人都在谈论 mongoDB、couchDB、MEAN 堆栈等……这就是我们开始它的原因,这就是发生的事情:
我们找到了一个非常适合 mongodb 的项目:

  1. 我们拥有非常庞大的用户群

  2. 有很多相互依赖关系 我们的实体对象之间,即实体 A 不能没有实体 B 生存 因此我们决定嵌入依赖实体。

我们仍然在同一个项目中使用 MongoDB,但我们的数据库设计与我们最初的数据库设计(遵循 mongodb 原则设计)有很大不同:

  1. 我们的应用程序变得非常慢,因为有时我们想要获取数据来自多个集合,并且 mongodb 不允许我们(现在它从版本 >= 3.2 开始支持)。因此我们要加入我们的从语法上讲,服务层编程。
  2. 由于嵌入,加载数据库实体变得非常繁重文档,因此我们必须将所有嵌入文档移动到单独的文档中收藏。因此我们的数据库设计现在非常扁平(即看起来就像关系数据库设计)。

  3. 我们在数据库中发现了很多孤立数据;最初我们认为我们可以在我们的存储库/服务上实现数据完整性但很明显我们的实现并不完美并且有时我们直接在数据库控制台上运行 mongo 查询,所以当 mongodb 保持沉默时,我们实际上搞乱了数据 mock 我们:)

  4. 完成应用程序的大部分功能后,我们重点关注撰写报告并对我们的数据进行分析,我们发现了我们的mongodb 查询变得非常庞大且难以管理;我们相信使用像 mysql 这样的关系数据库可以缓解这个问题。

底线当我开始使用 MongoDB 时,我对它非常着迷,但在我知道如何使用它之后就不那么感兴趣了:

  1. 它不会提示数据完整性违规。事实上你如果需要,可以将 Car 实例插入 Employee 集合:D
  2. 如果你有很好的javascript的话,特别学习是很容易的背景;您不必学习 SQL 等数据库语言。全部mongo查询是js函数和对象的组合。
  3. 您可以在几周或几个月内完成一个应用程序;实际上我们在 3 个月内完成了我们的应用程序(非常复杂的应用程序)。

但是现在我们有一个类似的项目,我们选择Mysql而不是Mongodb;我们本可以复制旧项目并在几周内完成它,但我们吸取了教训。如果您真的关心您的应用程序(即您的数据),请选择 Mysql(任何关系数据库)。

我们仅将 MongoDB 用于旧项目和 Kibana (因为它是用于日志记录的,我们不太关心我们的日志数据)

谁说Mysql不可扩展? Facebook is using 1,800 mysql servers!

关于mysql - 用于客户端和事务管理的 NoSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43136437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com