数据模型驱动不仅可以建立有效的应用程序,也可以有效修改他们的特性。他们是“real-world”问题的解决和软件世界模仿现实世界的行为之间的桥梁。(是的,软件可以创造奇迹,但如果不是追求更简单生活没有人需要这些软件!)本文论述了NoSQL数据库在现代的应用软件发挥作用。
驱动力
在过去的几年中,有一个巨大的转变则是在栈的应用程序开发平台的选择上。传统的WAMP和LAMP堆栈被逐步被淘汰,像MEAN、CEAN等。这种转变是有很多原因的。最根本的原因是对现代Web的期望。最近的预期是从Web应用程序已经不仅仅是局限于信息的传递。今天我们在Web应用程序的交互中,信息处理和内容分析已成为了非常关键的部分。这也常被称为Web 2.0。未来预期增长的智能设备和传感器连接到互联网,继续利用越来越多的数据生成的应用程序用户提供智能化的增值作用(也称为Web 3.0)。
这种转变在Web应用程序范例中需要丰富的数据。同时,使数据可供消费是同样重要的,是怎样不可用数据阻碍了预期的用户体验和应用程序的开发成为了另一个主题!但是,值得一提的是,大多数面向用户的应用程序都需要从多个数据源(数据源)中消耗和处理数据。作为一个极端的例子,一个旅游预订网站可能需要依赖于多个航空公司的航班数据和票务,而信用卡处理来自另一个第三方,行程出版又从另一个地方…更不要说,他们还可能会导致用户在社交媒体上分享他们的预订经验,从他们自己的Web应用程序就像一个用户的端到端的体验的一部分。
NoSQL允许复杂的结构
SQL数据库的结构。在处理应用程序需求时,由于关键字段、外键关系、规范化技术等,他们会导致某种程度的刚性。例如,一个客户订单对象往往是分成头和细节类型的标准化表的结构。NoSQL,另一方面可以处理在一个单一的结构中的两头和细节。所以,尽管数据模型的结构可能是复杂的,它允许建立他们接近会像一个“真实世界”的实体。当然,这种能力的成本是数据完整性管理推到了程序应用层。
NoSQL与基于rest架构
如果您使用Web服务或API,那么你API的默认为JSON响应。NoSQL数据库,如MongoDB和CouchDB的JSON格式的存储数据(称为文档)。这使编码API响应接收他们的阵列比较容易得多。与更高的API主要采用高度集成的应用程序,NoSQL数据库很适合在存储方面,提供和消费信息。
NoSQL带来的可伸缩性
NoSQL数据库进行多节点数据库设计,从而提供了极大的可伸缩性功能。例如,MongoDB目前可以扩展到超过100个节点分布在不同的数据中心或位置。许多NoSQL数据库也已经开始支持多个节点数据分区,有助于选择规模更大的数据集的计算资源,同时也减少了不必要的复制,从而减少数据重复的可伸缩性。
因此,SQL还是NoSQL?
这取决于应用程序和用例。不,这是真实的,因为有许多因素,如:
- 开发工具和技术可能不支持NoSQL的;
- 首选供应商(首选战略伙伴关系等许多原因)在您的组织中可能仍然是一个传统的SQL数据库;
- 首选的数据库供应商可能会提供一些NoSQL-like功能在传统的数据库,可以满足当前应用程序的需求;
- 数据模型可能是这样的,真的没有什么区别的选择;
- 你支持开源代码(从一个企业支持的观点);
- 你的人(开发人员、测试人员等)可能还不熟练。
因此,它是一个为您的应用程序架构决策选择什么样的数据库所使用的。这篇文章绝不是来影响你选择的意图,但是它能提高了人们对NoSQL被广泛接受和突出NoSQL在现代应用程序中所起的作用。
结论
重要的是要了解如今的网络应用程序,如何适应现代技术的期望。平衡NoSQL的潮流需求、路线图和来自用户的期望这些方面都是非常重要的。最后,记住–需求驱动数据模型和数据模型驱动来自于SQL或NoSQL的选择。这是没有错误的答案每个人都可以尝试去实现!
原文链接:Role of NoSQL Databases in Modern Applications
编辑/孙思,关注数据库,欢迎加入CSDN 数据库讨论QQ群:123038767。寻求报道或投稿,请联系sunsi@csdn.net。