在20世纪70年代,甲骨文公司成为首家商业化的关系型数据库公司。当时,软件工程师在纸上编写代码,而甲骨文创建了提供巨大效率提升的软件。RDBMS成为标准,甲骨文也成为企业中最稳定、最根深蒂固的软件供应商之一。在过去十年中,像MongoDB这样的替代方案出现,以应对我们存储和管理数据方式的改变。
如今,现代企业正在考虑如何更好地利用他们的数据——无论是为了获得更好的客户洞察,适应不断变化的用户期望,还是以新的应用程序和商业模式击败竞争对手。因此,推动早期关系型数据库发展的许多假设已经发生了变化。
对更高开发生产力和更快上市时间的需求,传统的刚性关系型数据模型和单体应用程序的瀑布式开发让位于敏捷方法、微服务和DevOps,将发布周期从数月和数年压缩到数天和数周。
管理大量新的、快速变化的数据类型的需求——由新的网络、移动、社交和物联网应用程序生成的结构化、半结构化和多态数据。
向分布式系统和云计算的全面转型,使开发人员能够利用按需、高度可扩展的计算和存储基础设施,同时能够为全球任何地方工作的人提供服务,并满足对数据主权的新一轮监管需求。
因此,为了满足新应用的需求和现代化现有工作负载,非表格式数据库,如MongoDB,应运而生。从MongoDB 4.0开始,支持多文档ACID事务,这使得开发者更容易解决目前或未来可能面临Oracle挑战的使用案例。
本页概述了Oracle和MongoDB以及每个的适当使用案例。您可以通过访问我们的遗留系统现代化页面了解更多关于现代化遗留系统和开发流程的好处。
Oracle是一家专注于数据库管理系统的全球科技公司。其核心数据库产品是Oracle Database 12c企业版(以及即将推出的18c)。这是通过按处理许可证模型销售的,并需要特定功能的授权附加组件。在Oracle中,您根据自己的需求预先定义数据库模式。然后,您设置规则来管理表中字段之间的关系。相关信息可能存储在单独的表中。然后通过使用外键和连接来关联这些信息。任何模式的变化都需要迁移程序。这个程序可能会使数据库离线或显著降低应用性能。
MongoDB是由MongoDB公司开发的非关系型数据库。MongoDB将数据以BSON(二进制JSON)这种二进制表示形式存储为文档。相关信息存储在一起,以便通过MongoDB查询语言快速查询。字段可以从文档到文档不同;无需向系统声明文档的结构——文档是自描述的。如果需要向文档添加新字段,则可以在不影响集合中其他所有文档的情况下创建该字段,无需更新中央系统目录,也无需使系统离线。可选的,可以使用模式验证来对每个集合强制执行数据治理控制。
MongoDB的文档数据模型自然映射到应用程序代码中的对象。这使得开发者容易学习和使用。文档让您能够表示层次关系,轻松存储数组和其他更复杂结构。
为12+种语言提供了本地化、惯用型的驱动程序——社区已经构建了数十种更多——使即兴查询、实时聚合和丰富索引成为提供强大程序化访问和分析任何结构化数据的强大方式。
文档可以将相关数据集合起来,这些数据在关系型模式中可能分别存储在不同的父子表中。因此,MongoDB的原子单文档操作已经提供了满足大多数应用数据完整性需求的事务语义。一个或多个字段可以在单个操作中写入。这包括对多个子文档和数组元素的更新。MongoDB提供的保证确保在更新文档时完全隔离;任何错误都会导致操作回滚,使客户端收到文档的一致视图。
多文档事务使MongoDB成为唯一能够结合传统关系型数据库的ACID保证、文档模型的速度、灵活性和强大功能,以及智能分布式系统设计以扩展和将数据放置在所需位置的数据库。通过快照隔离,事务提供了一致的数据视图,并执行全部或无操作以维护数据完整性。MongoDB中的事务感觉就像开发者在Oracle中熟悉的交易一样。它们是多语句的,语法类似(例如start_transaction和commit_transaction),因此任何具有先前交易经验的人都可以轻松地将它们添加到任何应用程序中。
与Oracle和其他关系型数据库不同,MongoDB基于分布式系统架构,而不是单体、单节点设计。因此,MongoDB提供了开箱即用的扩展和数据本地化,包括自动分片和副本集以保持始终在线的可用性。
使用Atlas for the Edge将文档模型的力量带到您的移动和物联网设备上。通过本地访问您的数据以及完整的MongoDB查询语言,您的应用程序运行更快,并且可以持续运行 - 即使在网络断开时也是如此。Atlas设备同步保持MongoDB Atlas中的数据与所有设备的同步。没有本机的移动Oracle企业数据库。当开发人员需要与后端Oracle数据库同步时,他们被迫使用其他数据库技术(如SQLite或BerkeleyDB)并编写定制的、复杂的解决方案,或者支付昂贵的数据库选项,以与后端Oracle数据库同步。
Atlas App Services无服务器平台是与MongoDB协同工作的最佳方式。它通过处理诸如服务集成等日常后端工作,将开发时间减半,并将数据安全地传输到应用程序前端。Atlas App Services数据访问控制允许您直接从前端应用程序中执行任何MongoDB查询。Atlas App Services触发器允许您的应用程序实时响应对数据更改,无论更改来自何处。触发器代码在Atlas中编写和执行,这使得这些触发器比Oracle中的存储过程和触发器具有更大的灵活性,并且更容易维护。另一个好处是,Atlas App Services触发器不会消耗宝贵的数据库资源。Oracle没有提供等效的数据或服务工作方式。这迫使您浪费数月时间编写数千行无差别的模板代码,然后配置应用程序服务器来运行它。
所有规模的组织都在采用MongoDB,因为它使它们能够更快地构建应用程序,处理高度多样化的数据类型,并在规模上更有效地管理应用程序。
开发简化了,因为MongoDB文档自然映射到现代面向对象的编程语言。使用MongoDB消除了将代码中的对象转换为关系表中的单元格的复杂对象关系映射(ORM)层。
在评估数据库时,必须考虑每个解决方案的相对成本 - 不仅仅是软件的成本,还有硬件、开发和部署成本。通过提高开发人员生产力、减少许可费用和降低硬件需求,组织从Oracle切换到MongoDB可节省数百万美元的成本。
MongoDB 也可以在多个分布式数据中心内部和之间进行扩展。这提供了以前使用像 Oracle 这样的关系型数据库无法实现的新水平可用性和可伸缩性。随着您的部署在数据量和吞吐量方面增长,MongoDB 可以轻松扩展,无需停机时间,无需更改您的应用程序。相比之下,要实现 Oracle 的扩展,通常需要大量的定制工程工作或投资于昂贵的定制硬件。
如果您认为 MongoDB 是您合适的解决方案,并且您目前正在使用 Oracle,请查看我们的迁移指南和 MongoDB 的关系型迁移器 - 一款简化从关系型数据库迁移和转换数据到 MongoDB 的工具,降低您迁移到 MongoDB 的风险,同时帮助您充分利用文档模型。
以下示例表明,MongoDB 被选用的原因是对开发人员生产力、应用程序性能和可伸缩性的根本性改进,同时显著降低成本和锁定。
为了跟上业务需求,Travelers Insurance 使用由敏捷和 DevOps 方法支持的微服务架构现代化其开发过程。但其现有的 Oracle 和 SQL Server 数据库的僵化性限制了他们所需的快速移动。解决方案是 MongoDB 和其灵活的数据模型。他们消除了任何数据库更改需要等待 3 天的情况,创建了一个支持持续交付新业务功能的软件开发管道。
金融巨头 RBS 使用由 MongoDB 驱动的新数据架构来现代化其投资银行系统。通过停用数百台 Oracle 服务器,它提高了开发者构建新应用程序的效率,为数据扩展创建了一个简化的云原生基础设施,并避免了数百万美元的成本。
Telefonica 将其客户个性化服务从 Oracle 迁移到 MongoDB。使用 Oracle,7 名开发者、多次迭代和 14 个月的时间才构建了一个表现不佳的系统。使用 MongoDB,一个由 3 名开发者组成的小组在 3 个月内构建了其新的个性化服务,现在为全球的遗留和新产品提供动力。MongoDB 帮助 Telefonica 更加敏捷,节省资金并推动新的收入渠道。
东方航空将其旅行、搜索和应用程序从 Oracle 迁移到 MongoDB。使用 MongoDB 使公司项目和工程团队能够构建一个使用 Oracle 无法构建的应用程序,从而改变客户体验,并推动更多业务在线。文档数据模型的简单性、动态架构、惯用驱动器和索引灵活性意味着开发团队现在可以更快地推出新应用程序,同时还能实现显著的成本节约。