我假装使用nodejs + express + angular构建一个Intranet门户,但是我想知道MongoDB是否是数据库的不错选择。
用户必须报告其工作时间,以便稍后向客户提交发票
必须管理(添加,编辑,删除)客户
我必须显示带有发票值,顶级客户等的仪表板。 (通过执行算术功能)
例如,将小时记录中的客户端ID与客户端本身关联起来是否容易?
或者我应该使用MySQL等SQL数据库吗?
我需要基于效果,可扩展性等的事实。
当我的NoSQL DB变大时会发生什么?它会失去性能吗?
答案 0 :(得分:1)
我的经历:我一直在使用MongoDB& Mysql过去2年5个月。
我在这里写的所有内容都来自 我的个人观点和体验。
现在MongoDB(一般来说是NoSQL)是一个热门话题,每个人都在谈论mongoDB,couchDB,MEAN堆栈等等......为什么我们开始它,这就是发生的事情:
我们找到了一个非常适合mongodb的项目:
我们的用户群非常庞大
有很多相互依赖关系 在我们的实体对象之间,即实体A不能在没有实体B的情况下生活 所以我们决定嵌入依赖实体。
我们仍在使用MongoDB进行同一个项目,但我们的数据库设计与我们最初的数据库设计(按照mongodb原则设计)非常不同:
由于嵌入,加载数据库实体变得非常沉重 文档,所以我们必须将所有嵌入的文档分开 集合。因此,我们的数据库设计现在非常平坦(即外观 比如关系数据库设计)。
我们在数据库中发现了很多孤立的数据;我们最初 我们可以在repo / service上实现数据完整性 层,但很明显我们的实施并不完美 有时我们直接在数据库控制台上运行mongo查询 当mongodb保持沉默时,我们实际上搞乱了我们的数据 嘲笑我们:)
在我们完成应用程序的大部分功能后,我们专注于此 我们发现我们的数据,撰写报告并对我们的数据进行分析 mongodb查询变得非常庞大且难以管理;我们相信 使用像mysql这样的关系数据库可以缓解这种情况。
当我开始使用MongoDB时的底线我非常着迷它但不知道如何使用它:
但现在我们有一个类似的项目,我们选择Mysql而不是Mongodb;我们本可以复制旧项目并在几周内完成它,但我们吸取了教训。如果您真的关心您的应用程序(即您的数据),请转到Mysql(任何关系数据库)。
我们只将MongoDB用于旧项目和Kibana(因为它用于日志记录,我们不太关心我们的日志数据)
是谁说Mysql不能扩展? Facebook is using 1,800 mysql servers!