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