云上马可君 发表于 2021-9-2 15:36:25

怎样选择数据库?Google Cloud 数据库类型详解

https://p26.toutiaoimg.com/large/pgc-image/5735194aadbe4c58951d6c8bcd79f789
如何为应用选择精确的数据库?这在很大程度上取决于用例特点,例如事务处理、分析处理、内存数据库等等·····当然我们在选择时还需思量其他的因素。
本篇文章涵盖了 Google Cloud 跨关系数据库(SQL)和非关系数据库(NoSQL)的差别选项,并会解释哪些用例最得当哪个数据库类型。
关系型数据库
在关系型数据库中,数据储存在表、行和列中,通常适用于结构化数据。因此数据结构不常常发生变革的环境下多利用关系型数据库。在与大多数关系型数据库交互时每每会用到SQL,这会为数据提供 ACID 同等性模式。
主要特点包括:

[*]原子性:事务中的全部操作均成功或被回滚;
[*]同等性:事务完成后,数据库在结构上是健全的;
[*]隔离性:事务之间不相互竞争,对数据的争用访问由数据库控制,以便事务看起来是按顺序运行的;
[*]持久性:应用事务的结果是永久性的,即使出现故障。


由于这些特性,关系数据库常常被用于需要高精度的应用程序和交易查询,如金融和零售交易。例如:在银行业务中,当客户提出资金转账请求时,我们希望确保交易是可能的,并且交易实际上发生在最新的账户余额上,这种环境下,错误或重新提交请求可能没问题。


Google Cloud 中有三个关系型数据库选项可供选用:Cloud SQL、Cloud Spanner 和 Bare Metal Solution。
Cloud SQL
在 Google Cloud 上提供托管的 MySQL、PostgreSQL 和 SQL Server 数据库。它低落了维护成本,并自动化了数据库配置、存储容量管理、备份以及开箱即用的高可用性和灾难规复/故障转移。所以最得当通用 Web 框架、CRM、ERP、SaaS 和电子商务的应用程序。
Cloud Spanner
Cloud Spanner 是一个企业级的、全球分布的、强同等性的数据库,提供高达 99.999% 的可用性,专为结合关系数据库结构和非关系横向扩展的上风而构建。这是一个独特的数据库,它将 ACID 事务、SQL 查询和关系结构与通常和非关系或 NoSQL 数据库相关联的可扩展性相结合。因此,Spanner 最得当用于游戏、支付解决方案、全球金融分类账、零售银行和库存管理等需要具有强同等性和高可用性的无限扩展能力的应用程序。
Bare Metal Solution
该方案提供硬件以在 Google Cloud 上以低延迟运行专门的工作负载。假如想要将 Oracle 数据库提升并转移到 GCP,该方案会特别有帮助。可以说该方案让数据中心渐渐退出”历史舞台“,并为实现应用程序的现代化铺平了门路。


非关系型数据库
非关系数据库(或 NoSQL 数据库)以非表格(如文档)的形式存储复杂的非结构化数据。当需要组织大量复杂多样的数据时,常常利用非关系数据库。
与关系数据库差别,它非关系型数据库执行速度更快,因为查询不必访问多个表来提供答案,因此非常得当存储可能常常更改的数据或处理多种差别类型数据的应用程序。
例如,服装市肆可能有一个数据库,其中衬衫有自己的文档,包含全部信息。包括尺寸、品牌和颜色,并为以后添加更多参数(如袖子尺寸、领子等)留出空间。


主要特点包括:

[*]最终同等性,存储通常在稍后的某个时间点体现出同等性。例如,在读取时延迟;
[*]水平伸缩,通常适用散列分布;
[*]通常会针对特定的工作负载模式进行优化,如键值、图形、宽列等;
[*]每每不支持跨分片事务或灵活的隔离模式。
由于这些特点,非关系数据库被用于需要大规模、可靠性、可用性和频繁数据更改的应用程序中。它们可以通过添加更多的服务器轻松地横向扩展。而不像某些关系数据库那样,随着数据的增长,需要通过增长机器大小来纵向扩展。当然,一些关系型数据库,例如 Cloud Spanner 也支持向外扩展和强同等性。
非关系数据库可以存储各种非结构化数据,如文档、键值、图、宽列等。以下是谷歌云中的非关系型数据库可供选用:
文档数据库:将信息存储为文档(采用 JSON 和 XML 等格式)。例如:Firestore ;
键值存储:将聚集中的关联数据与利用唯一键标识的记录进行分组,以便于检索。键值存储的结构刚好足以反映关系数据库的价值,同时仍保存 NoSQL 的上风。例如:Datastore、Bigtable、Memorystore ;
内存数据库:主要依赖内存进行数据存储的专用数据库。这些旨在通过消除访问磁盘的需要来获得最短的响应时间。它们非常得当需要微秒响应时间并且可能有大量流量峰值的应用程序。例如:Memorystore ;
宽列数据库:利用表格格式,但即使在同一个表中,每行的数据命名和格式化方式也有很大的差别。它们具有一些基本结构,同时保存了很大的灵活性。例如:Bigtable
图数据库:利用图结构来定义存储数据点之间的关系,用于识别非结构化和半结构化信息中的模式。例如:JanusGraph 。
下面我们具体介绍一下 Google Cloud 中的三个非关系型数据库:
Firestore
这是一个无服务器文档数据库,可按需扩展并充当后端, DBaaS 提高了构建应用程序的速度。它非常得当全部通用用例,例如电子商务、游戏、物联网和及时仪表板。借助 Firestore,用户可以与及时或离线数据进行交互和协作,也就是说 Firestore 非常得当及时应用程序和移动应用程序。
Cloud Bigtable
Cloud Bigtable 是一个单索引的、系数表,可以扩展到数十亿行和数千列,可以或许存储 TB 甚至 PB 级的数据。非常得当以极低的延迟存储大量单键数据,其读写延迟是亚毫秒级的,并且支持高吞吐量,是 MapReduce 操作的理想数据源。它还支持开源 HBase API 标准,可轻松与 Apache 生态体系(包括 HBase、Beam、Hadoop 和 Spark 以及 Google Cloud 生态体系)集成。
应用场景包括金融(交易历史、股价、汇率)、广告营销(购买历史和用户行为)、能源/物联网(电表和家电数据)、生物医药和电信等行业的大数据分析,包括时间序列数据。标杆案例也是金融软件巨头SunGuard的一个审计原型体系,每秒能处理250万条交易信息。
Memorystore
这是一种完全托管的内存数据存储服务,适用于 Google Cloud 上的 Redis 和 Memcached。最得当内存和临时数据存储,并自动执行配置、复制、故障转移和修补等复杂任务,因此利用者可以花更多时间进行编码。因为其提供极低的延迟和高性能,所以 Memorystore 非常得当游戏、排行榜、社交、聊天和消息等应用程序。
总的来说,究竟是选择关系型数据库还是非关系型数据库在很大程度上取决于用例。假如您的应用程序需要 ACID 事务,而且数据结构不会发生太大的变革,那么就可以选择关系数据库。
在 Google Cloud 中,可以为任何通用 SQL 数据库利用 Cloud SQL,可以为大规模的、全局可伸缩的、高度同等的用例利用 Cloud Spanner ······
对于非关系型数据库,Google Cloud 当然也提供了很多选项,例如支持支持跨文档、键值和宽列数据库范围的各种用例的 Firestore、Memorystore、Cloud Bigtable 等等。
关于数据库更多的比力信息,可以查看下方链接。
:https://cloud.google.com/products/databases
页: [1]
查看完整版本: 怎样选择数据库?Google Cloud 数据库类型详解