云计算的基本原则是采用一次性和可更换的多台机器,这对采用云计算技术以及在云中实施的数据库系统的功能有直接影响。
传统数据库大致可以分为并行优先(例如MongoDB或Teradata)或单存储系统优先(例如PostgreSQL或MySQL)。这两个类别都有其核心设计固有的局限性。这些限制的程度部分是成熟度的函数。但是,对于某些核心架构决策来说,可能无法有效支持特定功能。
例如,Greenplum有序列,但Redshift没有,尽管这两者都是PostgreSQL的衍生物。而BigQuery没有序列,但Teradata有序列,尽管在传统意义上它们并不是真正的序列。
云数据库属于相同的类别,而新系统明显倾向于并行优先。云计算系统的基本属性是机器的可扩展性和可替换性的并行性。
在单系统优先类别中,云计算实例化往往侧重于传统单机产品的管理成本、升级和可靠性(RPO/RTO),例如Heroku PostgreSQL、Amazon Aurora(PostgreSQL/MySQL)、Google cloud SQL(PostgreSQL/MySQL)和Azure SQL(SQL Server)。
在并行优先类别中,实际上有两个子类别:SQL/关系类别(BigQuery、Snowflake、Redshift、Spark、AzureSynapse)和DHT/NoSQL(BigTable、Dynamo、Cassandra、Redis)类别。这种区别与是否存在类似SQL的语言关系不大,而与系统中数据的物理布局是否经过调整以便通过散列快速查找键进行单行访问,或者使用排序合并和筛选操作进行批量访问有关。
并行优先关系数据库通常依赖于一个或多个原生云存储系统。这些存储系统总是并行优先构建,并公开一个非常有限的get-object/put-object API,它通常允许对数据进行分区,但不允许高性能随机访问。这限制了数据库实现高级持久数据结构(例如索引),在许多情况下,还限制了可变数据的能力。
因此,使用原生存储的云计算实现往往依赖于微分区的顺序读写而不是索引。根据对象名称,存储级对象往往只有一条物理访问路径。索引必须在底层存储的外部实现,即使这样做了,底层云存储API也可能使在存储级别对象中实际使用地址或字节偏移量变得困难。
(1) 云平台是为用户管理的基础设施。
在云中,部署、可靠性和管理是用户关注的问题。从电源、软件安装和硬件到操作系统管理和安全(从加固到入侵检测)的堆栈的所有层都由云计算供应商管理。
云计算供应商免费试用产品的便利性可以帮助用户启动并运行初始实验,然后在需要时扩展到大规模,这在传统的内部部署系统中是困难的。
另一个好处是云计算供应商提供了许多标准化流程来与第三方SaaS产品集成。其结果是云计算供应商让基础设施成为别人的问题,因此用户可以专注于其核心业务。
(2) 效率。
云计算可以最大化资源利用率。与非云系统相比,云计算系统向数据库应用程序公开资源利用控制要常见得多。云计算技术可以平滑负载,将其移动到低需求的时间段,并且可以优先考虑交互式和关键业务作业。
当然,云计算供应商可以利用大规模采购的效率、负载共享和极高的利用率。仅这些规模参数就可以成为迁移到云平台的理由。更不用说使用供应商的专业知识进行强化和入侵检测的好处了。
与规模密切相关的是云计算供应商能够以低廉的价格提供被动存储,这使得无论是出于实验或分析原因,还是出于备份或审计,更容易保留更长的历史数据窗口,并且更加经济高效地实施时间旅行等功能,可以从历史角度检查数据。
当然,繁重的数据处理负载可以通过使用云计算供应商的规模临时向外扩展来解决,当然用户会为此付出代价。
(3) 经济性。
除了规模和效率的经济性之外,云计算供应商的会计机制倾向于将存储和处理的成本数据暴露到单个查询级别。这允许用户对任何给定分析的成本收益做出合理的商业决策,并相应地做出优化决策。事实上,有时用户可能会决定通过扩展云计算规模来扩大和简化分析的结构,而不是花费时间和精力来塑造一个“稳健的分析”,这可能更便宜、更准确。
(1) 云平台是为用户管理的基础设施。
云计算具有一组与大型机截然不同的故障域。云平台上的分布式计算是共享的基础设施(计算、存储、网络),这可能会受到更多的干扰,其中任何一个故障都可能导致交互性失败或暂时性工作失败。在极少数情况下,即使是云计算供应商的自动化管理也会通过更改系统的属性或行为对客户体验产生负面影响。
(2) 效率。
与传统的内部部署系统相比,大多数云计算数据库仍然不成熟。云数据库缺乏更成熟产品的特性。有些功能可能永远不会被引入,因为完全分布式、易发生故障的平台的概念使它们不切实际。
许多基于云的并行关系系统对于特定的数据库变异(INSERT、UPDATE、DELETE)操作的效率显著降低,这在某些用例中可能会导致问题。
当然,云计算与内部部署系统或托管在其他云平台中的系统之间的额外延迟往往会迫使云计算基础设施整合。用户往往被迫首先选择地理位置和云计算供应商,然后实际上仅限于其云计算供应商提供的服务。
(3) 经济性。
云计算的成本遵循与内部部署截然不同的曲线:扩展容量非常容易。控制成本变得更加困难。另一方面,如果成本有上限的话,则在达到成本上限后提交的交互式作业可能会被拒绝。这增加了一层复杂性,传统数据库管理员需要学习这些知识才能创建成功的部署。
当然,被云计算供应商锁定对于企业来说很普遍。云平台之间的迁移并不比内部部署系统之间的迁移容易。
用户有如此多的产品可供选择,但并没有一种产品具有所有功能。最重要的第一步是确定所有必需工作流的基本属性或行为,并确保所选的云计算供应商有能力提供这些服务,而每个行为可能来自不同但至少弱集成的产品。因此不要期望像Oracle公司或Teradata公司提供的产品提供“一切”服务。