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

时间:2017-03-31 08:52:54

标签: mysql mongodb scalability database-performance

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

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

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

  • 我必须显示带有发票值,顶级客户等的仪表板。 (通过执行算术功能)

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

或者我应该使用MySQL等SQL数据库吗?

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

当我的NoSQL DB变大时会发生什么?它会失去性能吗?

1 个答案:

答案 0 :(得分:1)

我的经历:我一直在使用MongoDB& Mysql过去2年5个月。

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

现在MongoDB(一般来说是NoSQL)是一个热门话题,每个人都在谈论mongoDB,couchDB,MEAN堆栈等等......为什么我们开始它,这就是发生的事情:
我们找到了一个非常适合mongodb的项目:

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

  2. 有很多相互依赖关系     在我们的实体对象之间,即实体A不能在没有实体B的情况下生活     所以我们决定嵌入依赖实体。

  3. 我们仍在使用MongoDB进行同一个项目,但我们的数据库设计与我们最初的数据库设计(按照mongodb原则设计)非常不同:

    1. 我们的应用变得非常慢,因为有时我们想要获取数据 从多个集合和mongodb不允许我们(现在它 版本> = 3.2)支持。因此我们要加入我们的联盟 服务层以编程方式。
    2. 由于嵌入,加载数据库实体变得非常沉重 文档,所以我们必须将所有嵌入的文档分开 集合。因此,我们的数据库设计现在非常平坦(即外观 比如关系数据库设计)。

    3. 我们在数据库中发现了很多孤立的数据;我们最初 我们可以在repo / service上实现数据完整性 层,但很明显我们的实施并不完美 有时我们直接在数据库控制台上运行mongo查询 当mongodb保持沉默时,我们实际上搞乱了我们的数据 嘲笑我们:)

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

    5. 当我开始使用MongoDB时的底线我非常着迷它但不知道如何使用它:

      1. 它不会抱怨数据完整性违规。其实你 如果你愿意,可以将Car实例插入到Employee集合中:D
      2. 如果你有良好的javascript,这是非常容易学习 背景;你不必学习像SQL这样的数据库语言。所有 mongo查询是js函数和对象的组合。
      3. 您可以在几周或几个月内完成应用;事实上 我们在3个月内完成了我们的应用程序(非常复杂的应用程序)。
      4. 但现在我们有一个类似的项目,我们选择Mysql而不是Mongodb;我们本可以复制旧项目并在几周内完成它,但我们吸取了教训。如果您真的关心您的应用程序(即您的数据),请转到Mysql(任何关系数据库)。

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

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