AWS关系型数据库的比较如何呢?
长期以来,关系数据库一直是解决大公司或小公司必须解决的各种(几乎所有)软件用例的标准解决方案。
如今,随着更广泛地使用内存、数据湖数据库或链接_0,可变性大大增加。但尽管如此,无论何时决定将当前的本地数据库迁移到云端,关系数据库作为目标仍然是这种过渡的最直接选择。
我们将对以下数据库进行详细了解:
- Oracle
- Aurora
- Microsoft SQL Server
- MySQL和PostgreSQL
- MariaDB
我将清楚地说明它们与其他数据库的区别和特点,包括它们的缺点。然后,我将通过在典型的实际用法示例上进行演示来将它们置于上下文中。最后,我将就如何在您的情况下选择不同的数据库提出我的观点。
AWS Oracle DB
在过去的几十年里,Oracle DB无疑是最广泛使用的商业数据库。每当公司需要强大和高性能的数据库解决方案时,Oracle DB都是首选。而且有很多很好的原因。
不同之处
Oracle是一个强大且功能丰富的平台,可以满足各种完全不同的设置和要求。随着时间的推移,这个数据库成为了在需要依赖于本地硬件基础架构的最先进的可靠性、可扩展性和可维护性的解决方案。
主要优点
以下是选择Oracle这样成熟的数据库系统时获得的一些主要优势:
✅ 良好的支持和有效的备份和恢复操作选项。
✅ 在系统内部调整DB解决方案性能的多种可能性。即使在解决方案已经投入生产后的很久之后,支持和维护活动在该平台内部真的非常容易设置,并且非常有效。
✅ DB解决方案的高度定制化。由于Oracle DB支持大量可供选择的功能,作为系统集成商,您有很多选项来构建一个由平台实际需要的那些功能组成的强大系统(例如链接_2、分区、子分区、自动主键序列、视图、快照、数据约束、唯一键、组合键、外键、复合索引等等)。它支持一切。
✅ 数据库活动和过程的简化管理。专用的管理控制台和仪表板,以及由Oracle创建的许多专门供管理员使用的工具。
✅ 支持多用户环境。如果需求是同时支持成千上万个不同的活动用户,Oracle就是答案。
主要缺点
对于性能的垂直扩展,Oracle DB非常灵活。但在需要强大的水平扩展时,它的灵活性较低。这意味着在集群数据库上升级到更强大的CPU、更多内存和存储空间很容易。
但是,如果您的数据在短时间内大幅增长(这是在云中发生的常见情况),性能瓶颈将变得更加明显且更难解决。将数据分散到多个集群中并期望它们动态增长将成为未来的主要要求。在这种情况下,您可能会发现Oracle DB开始限制而不是满足您的未来需求。
另一个可能的缺点可能是成本。Oracle DB支持许多功能,但其中许多功能也是有代价的。尤其是如果存在多个集群并且需要进行物理性能升级。这意味着仅对数据模型进行软件调整已经不足够了。为了获得更多的管理工具和功能,您需要购买企业许可证。这将进一步增加已经很高的成本。
最后,Oracle DB不是AWS的本地DB服务,这意味着您不能期望从AWS获得全面支持。而是要转向Oracle支持。但同时处理Oracle和AWS的问题,并拥有两套不同的支持团队。
何时选择
在您当前的本地解决方案已经使用Oracle DB时,选择Oracle DB的云端对应是最自然的决定。这还将使迁移和切换到基于云的解决方案变得非常简单。
因此,在以下情况下选择AWS Oracle DB:
- 您希望云端DB将来能够支持与本地变体相同的流程和功能。
- 您不计划快速将DB与太多AWS本地服务集成。
- 您不期望当前的数据量在短时间内显著增长。
- 您需要支持大量功能。也就是说,当切换到云端时,很难失去当前已有的一些功能。
- 您的系统必须同时支持数百个活跃用户(或更多)。
使用示例
- 用于计费、中间件数据等大型电信系统。
- 用于汽车数据库系统的定制DB实现,与多个定制或第三方供应商工具集成。
- 用于银行业的打包系统解决方案,其中Oracle已经是供应商提供的打包解决方案的固定部分,并最终将其他定制DB组件集成到一个复杂的实现中。
AWS Aurora DB
在许多方面,Aurora与Oracle完全相反,即使它仍然是一个关系数据库。
它的区别
Autora DB是AWS的本地数据库服务。AWS对其提供全面支持和持续开发,并与其余的AWS服务生态系统深度集成。
Aurora DB的功能多样化程度不及Oracle。但它是在云中诞生的(不同于Oracle)。由于AWS进一步开发Aurora,未来的功能差距可能比今天更小。
在许多方面,Aurora已经超过了Oracle,特别是在与其他AWS云服务的集成方面。而且由于Amazon创建Aurora时考虑到了云生态系统,所以Aurora已经做好了处理大量数据和随时间增长的准备,因此水平扩展是它的一个重要特性。
主要优点
我认为Aurora DB的主要优点是:
✅ 非常灵活的只读DB副本实例的扩展性。您可以在几秒钟内创建这些实例。只读实例与它们源自的主数据库共享相同的数据库日志。这意味着创建一个新的只读数据库不需要同步所有数据;它自动通过共享现有数据来实现。
✅ 大数据增长准备就绪 – Aurora DB具有横向扩展的重要特性。添加新的集群和在不同的可用区之间扩展可扩展性非常简单。然后,Aurora在非常快速地选择大量数据方面非常有效。
✅ 您可以选择使用Aurora DB的服务器模式或无服务器模式。在无服务器模式下,某些功能将被省略。但是,选择无服务器模式时,您将获得更多的灵活性和成本优化。
✅ 自动备份和简单的时间点还原。另一个亮点是Aurora DB可以轻松进行每日备份,并且将完整数据库恢复到任何时间点都更加简单。您可以在这里结合云环境的所有优势,如始终可用的免费空间,快速的AWS内部操作以及针对快速恢复时间和短时间停机的专用Aurora DB功能。
✅ 支持MySql或PostgreSQL数据库引擎,因此您可以选择适合您的引擎。
主要缺点
- 尽管Aurora可以说是您在AWS中可以选择的功能最丰富的本机关系型数据库,但在这方面它仍然落后于Oracle。可以理解的是,Oracle在过去有更多时间来开发这些功能。事实仍然是,Aurora DB在每个版本中都更加强大和接近。
- 在本地空间中没有与Aurora DB相当的等效物。您可以认为在MySQL或PostgreSQL数据库内构建的旧数据库是一个近似匹配 – 从兼容性的角度来看,它们肯定是。但它们不是严格的等效物。这意味着迁移将不那么直接。您将需要定制和实施迁移过程,以确保它们将从本地迁移到Aurora DB,并以正确的数据模型格式存储数据。
- 各种AWS限制,尤其是那些硬性限制,可能在某些情况下从选择此DB作为前进目标中分散注意力。您很可能能够解决所有这些问题,但对于某些问题,您将需要更多的投资来进行重构,这最终可能会增加与其他数据库目标相比的迁移总体成本。
何时选择
简而言之,在AWS平台上选择Aurora DB作为首选关系型数据库永远不会是一个错误的决定,但是,尤其是在以下情况下选择:
- 您将围绕关系型数据库从头构建云系统。
- 您希望与尽可能多的不同本机AWS服务进行最高级别的兼容性和完整性。
- 您预计数据量将在短时间内显着增长。
- 您计划启动几个概念验证(POC)项目,以利用关系型数据库的无服务器版本的所有优势。
使用示例
- 用于分析大量基础设施图片数据的无服务器平台。
- 利用模型处理数据湖信息并为您的业务生成业务预测。
- Netflix使用Aurora DB对其目录数据进行快速并行查询执行。
AWS Microsoft SQL DB
这个数据库在某些方面与Oracle相似。它也是在云成为事物之前创建的,目前有很多当前正在计划使用MS SQL DB作为源头迁移到云中的本地用户。
它的差异
尽管存在这些相似之处,与Oracle DB相比,MS SQL DB在过去的使用中仍然较少。
至少从我的个人经验来看。在过去的二十年中,我参与了多个Oracle项目,但只有在少数情况下涉及到MS SQL DB。而且坦率地说,我不喜欢与Oracle DB相比,处理MS SQL DB。
无论如何,我仍然认识到有很多公司使用MS SQL DB作为所有数据的真实性的主要数据库。
主要优点
MS SQL DB的主要优点:
✅ 与其他Microsoft服务和软件良好集成,如果这是您认为有价值的功能。
✅ 可以通过自定义代码扩展轻松定制,主要是通过JavaScript代码模块的形式。在处理更复杂的业务流程和要安排在数据库上执行的作业时,这可能会很有用。
✅ 从管理角度来看相当简单(至少与Oracle DB相比)。
✅ 在Azure云生态系统中可能更有意义,因为在那里它被视为本地关系数据库系统,更与其他云服务兼容。
主要缺点
- 与Oracle DB的情况类似,作为AWS云空间中的非本地数据库,所有支持和问题解决都必须通过单独的专用MS SQL支持团队进行。
- 与Oracle DB或Aurora DB相比,功能支持的多样化较少。
- 不适合大量活跃用户。
- 横向扩展是一个更大的问题,比Oracle DB的情况还要严重。
何时选择
如果您希望尽可能少地干扰,将现有的MS SQL DB迁移到云端,并且不希望太多与其他AWS云服务的集成,那么MS SQL DB最适合。
然后,MS SQL DB将作为完全托管的数据库存在于AWS云中,具有无限的存储空间和扩展能力,与本地替代方案相比,具有更多的水平可用性和扩展选项。
使用示例
- 作为各种数据库系统的自定义集成的中间平台(甚至可以是不同类型的数据库,例如Oracle DB)。
- 各种规模较小的项目,其中数据库解决方案的成本是需要考虑的问题,预算更有限(不允许使用完整的Oracle DB解决方案)。
AWS MySQL和PostgreSQL DB
这些数据库都是开源的(尽管现在已被较大的公司收购),这使它们既具有优点又具有缺点。
它们也不像其他替代方案那样功能丰富,特别是在其本地形式中。虽然您仍然可以在AWS基础架构中使用它们,但我怀疑这是否仍然具有太大的实际意义。
与众不同之处
当将本地数据库(无论是MySQL还是PostgreSQL)迁移到AWS云时,您可以直接使用Aurora与MySQL或PostgreSQL引擎作为目标,从而获得Aurora DB提供的所有附加优势。
当然,与选择本地替代方案相比,这将意味着在迁移阶段需要一些额外的工作。但这额外的工作只会很小。
它们的主要优势在于成本,它们最适合小型项目,其中鲁棒性并不是真正的问题。
主要缺点
- 两者在支持功能方面都相当有限,你需要为受限的可维护性和管理选项做好准备。
- 不适用于有许多活跃用户的大规模项目。
- 不适用于高性能解决方案,且对持续性能调优有强烈要求的场景。
何时选择
- 如果成本是主要问题,且预算非常有限。
- 如果项目规模相对较小。
- 如果数据量相对较小,并且没有扩展的计划。
使用示例
- 个人项目,基础设施费用应尽可能低。
- 证明所提出的概念可以实现的小型概念验证。
- 小型公司的项目,数据量较小。
- 适用于小型SaaS项目,只需要在关系数据模型中存储数据,无需大量数据库负载。
AWS MariaDB
MariaDB仍然是由前MySQL开发人员(在MySQL被Oracle收购后)创建的完全开源数据库。
在兼容性方面,任何MySQL数据库都可以在MariaDB中正常运行。
区别
在功能方面,不会有太多与MySQL不同的地方,但开源属性是其亮点。
从技术上讲,MariaDB有许多有用的特性在MySQL中是不可用的。
主要缺点
与MySQL情况相当相似。
何时选择
- 如果你非常喜欢当前的MariaDB本地部署实现,不想迁移到Aurora DB,无论出于何种原因。
- 如果你希望在AWS云生态系统中保持真正的开源数据库解决方案。
使用示例
与MySQL情况相当相似。
最后
类似于Oracle数据库是本地环境中的解决方案,Aurora DB似乎正在AWS云环境中占据这一位置。至少从功能集的角度来看,这是你可以得到的最接近的。
即使你对主要利益相关者并不感兴趣,了解如何将现有数据库迁移到AWS云中仍然有相当简单的选项。
更好的是-通过这个转换,你将自动获得你之前可能缺乏的功能。最重要的是,更好的存储扩展性、高可用性和水平扩展性都是云环境的本机特性。