企业全面云化的时代——云数据库的未来

数据库
容器
Docker
0
0
{"value":"### **前言**\n在数据库诞生之前,数据的存储和管理主要是依靠表格、卡片等方式进行,效率非常低,耗费时间也很容易出错。随着计算机相关技术的发展,数据管理技术也迅速发展。传统的文件系统难以应对数据增长的挑战,也无法满足多用户共享数据和快速检索数据的需求。在这样的发展背景下,数据库应运而生。数据库技术产生于20世纪60年代末,它的诞生和发展给计算机信息管理带来了一场巨大的革命,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域。\n数据库技术是信息系统的核心和基础,是计算机科学的重要分支。它的出现极大地促进了计算机应用向各行各业的渗透。因此,数据库是作为一名程序员必须掌握的一门技术。我在学习的过程中一直使用的是亚马逊云数据库,亚马逊云科技提供了100余种产品免费套餐。其中,计算资源 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)首年12个月免费,750小时/月;存储资源 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 首年12个月免费,5GB标准存储容量;数据库资源 [Amazon RDS](https://aws.amazon.com/cn/rds/?trk=cndc-detail) 首年12个月免费,750小时;Amazon Dynamo DB 25GB 存储容量 永久免费。[福利在这里](https://aws.amazon.com/cn/free/?nc2=h_ql_pr_ft&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all&trk=e0213267-9c8c-4534-bf9b-ecb1c06e4ac6&sc_channel=el)\n\n![image.png](https://dev-media.amazoncloud.cn/63a6e01fe2104d59a5d344f2272ae4e5_image.png)\n\n### **传统数据库的不足**\n数据库管理系统的主要目的就是提供一种可以方便、高效地存取数据库信息的途径。设计数据库系统的目的是为了管理大量信息。对数据的管理既涉及信息存储结构的定义,又涉及信息操作机制的提供。通俗的讲数据库是按照某种数据模型组织起来并存放二级存储器中的数据集合。传统数据库具有非常完备的关系理论基础,高效地查询优化机制。 此外数据库系统还必须提供所存储信息的安全性保证,即使在系统崩溃或有人企图越权访问时也应保障信息的安全性。如果数据将被多用户共享,那么系统还必须设法避免可能产生的异常结果。但是传统数据库在这些方面具有一定的缺点,无法满足高并发的需求,无法满足高扩展性和高可用性的需求。\n\n![image.png](https://dev-media.amazoncloud.cn/c7df3130362b441ea2d639906673ee3d_image.png)\n\n传统数据库虽然具有很多优势,但也有很多不足的地方,比如在高并发和安全等方面就存在不足。正好云原生数据库解决了这些问题,填补了传统数据库的不足,接下来就让我们学习一下云原生数据库。\n### **云原生数据库的优点**\n云数据库是适合云计算环境应用要求的、弹性的多用户分布式数据库平台。它是一个面向云计算的数据库资源管理平台,旨在通过云计算的方式整合现有的大量位于互联网后台的数据库资源,为云计算应用的基础结构级别的数据库资源访问、发现、整合等多方面问题提供通用的解决方案。\n传统的关系型数据库管理系统在锁机制、日志机制、缓冲区管理等方面一定程序上制约了系统性能。云数据库具有很大的优势,云数据库实现了可扩展性、高性能,并具备传统的数据库优良的特点。\n其主要特性体现在以下方面:\n#### **1.动态可扩展性**\n理论上,数据库云平台具有无限可扩展性,可以满足不断增加的数据存储需求。在面对不断变化的条件时,数据库云平台可以表现出很好的弹性。\n#### **2.高可用性**\n数据库云平台不存在单点失效问题,如果一个结点失效了,剩余的结点就会接管未完成的事务。而且在数据库云平台中,数据通常是复制的,在地理上也是分布的,诸如 Amazon 大型云计算供应商具有分布在世界范围内的数据中心,通过在不同地理区间内进行数据复制可以提供高水平的容错能力。例如,Amazon SimpleDB 会在不同的区间内进行数据复制,因此,即使整个区域内的云设施发生失效,也不影响数据的继续使用。\n#### **3.较低的建设成本**\n数据库云平台通常采用多租户的形式,其共享资源的形式对于用户而言可以有效节省开销;可以采用按需付费的方式,使用云计算环境中的各种软、硬件资源有效避免资源浪费。同时可以为企业提供相对经济的应用软件服务。云数据库的资费远远比自建数据库所需的成本要低很多,企业可按照自己的需求选择不同套餐,一般情况下只需要很低的价格即可得到一套专业的数据库支持服务,性价比超高。\n#### **4.轻松部署**\n企业可以在云数据库控制台轻松的完成数据库申请和创建,几分钟内即可准备就绪且投入使用。企业通过云数据库提供的功能完善的控制台,对所有实例进行统一管理,部署简单使用十分方便。\n#### **5.高可靠性**\n云数据库拥有完善的数据自动备份机制,高可靠性让您可以放心将数据放在云端,无需担心数据丢失。云数据库能够实现云端完全托管各类管理任务,比如硬件扩容、补丁升级、备份恢复等等。同样的,像亚马逊云科技能够快速帮助客户在数据安全上做大幅的提升,在高扩张性和效能提升的同时,也可以满足监控、合规的要求。以 [Amazon Aurora](https://aws.amazon.com/cn/rds/aurora/?trk=cndc-detail) 的服务为例,亚马逊可以针对静态的档案、传输中的档案、集群的副本、快照、备份进行加密,也可以在网络层的安全性上,进行VPC网络层级的隔离。\n### **云原生数据库容器化**\n“你不是不够好,你只是过时了”,这句话用在互联网行业特别合适,每隔一段时间就会有新的技术出现,技术发展非常迅速。随着时代的发展,传统的数据库不再满足人们的需求,所以应运而生产生了云数据库。云数据库也不是一上来就是完美的,它也在不断地发展不断地完善,越来越成熟的技术会慢慢出现。容器化就是云计算在发展的过程中出现的一门新技术,也是云数据库发展中的技术热点。\n\n![image.png](https://dev-media.amazoncloud.cn/17b5f3eb6a4e42479075c68f2c3576fc_image.png)\n\n#### **什么是容器化?**\n容器就是一个软件包,这个软件包提供应用程序的完整的运行环境,包括应用程序的代码、相关配置文件以及运行应用程序所需的依赖项等。容器化是指将软件代码和所需的所有组件打包在一起,让它们隔离在自己的“容器”中。这样,容器内的软件或应用就可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响。容器就像是一个气泡,把应用和周围环境隔离开。也相当于是一个功能全面、便于移植的计算环境。\n#### **为什么需要使用容器?**\n容器有着一个非常重要的作用就是保证代码运行环境的一致性。容器通过为应用程序打包和部署提供轻量级、不可变的基础结构来解决应用程序移动到其他环境就无法正常运行的问题,将应用程序或服务、其依赖项及其配置打包为容器映像。容器技术为开发人员和 IT 专业人员只需做出少量修改,甚至不需要进行任何修改,即可跨环境部署应用程序,使用非常方便。\n#### **数据库适合容器化吗?**\n虽然容器化的优点是非常突出的,很多开发者也体验到了。但是目前为止,将数据库容器化并不是很合理。主要原因为以下几点:\n##### **1.数据安全性**\n不要将数据存储在容器中,很重要的一点就是安全性问题。容器随时会停止、或者删除,当容器被删掉的时候容器里数据也就随之丢失。\n##### **2.性能问题**\nMySQL 属于关系型数据库,对 IO 要求较高。当一台物理机跑多个时,IO 就会累加,导致 IO 瓶颈,大大降低 MySQL 的读写性能。数据库的性能瓶颈一般出现在 IO 上面,如果按 Docker 的思路,那么多个 docker 最终 IO 请求又会出现在存储上面。现在互联网的数据库多是 share nothing 的架构,可能这也是不考虑迁移到 Docker 的一个因素吧。\n##### **3.资源隔离**\n资源隔离方面,Docker 确实不如虚拟机 KVM,Docker 是利用 Cgroup 实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。如果其他应用过渡占用物理机资源,将会影响容器里 MySQL 的读写效率。需要的隔离级别越多,获得的资源开销就越多。相比专用环境而言,容易水平伸缩是 Docker 的一大优势。然而在 Docker 中水平伸缩只能用于无状态计算服务,数据库并不适用。我们没有看到任何针对数据库的隔离功能,那为什么我们应该把它放在容器中呢?\n\n介绍了这么多云原生数据库的好处,也阐述了一些云原生相关的先进技术,光有理论知识是完全不够的,我们也需要付出实践。云原生数据库的选择,我的建议是原则亚马逊云原生数据库,亚马逊作为领先企业,在云方面具有很大的优势,接下来就让我们详细的了解和学习一下。\n### **亚马逊云原生数据库**\n#### **数据库服务**\n亚马逊提供齐全的专用数据库,数据库类型丰富。如下图我们看到的一共包括了八种:这些数据库服务都可以免费试用而且有详细的使用教程:[详细的使用教程](https://aws.amazon.com/cn/getting-started/databases/get-started/?nc=sn&loc=4&trk=fab55528-7c2e-4517-b90e-65b760ecfc1c&sc_channel=el)\n\n![image.png](https://dev-media.amazoncloud.cn/c75a3985376748a0996b06c77046ee68_image.png)\n\n##### **Relational**\n第一种就是关系数据库,关系数据库应该是我们现在使用最为广泛的的数据库了,我们平时经常使用的 mysql、SqlServer、oracle 都是关系型数据库,关系型数据库应用广泛。主要应用领域主要是在传统应用、企业资源规划、客户关系、电子商务等等。\n亚马逊产品主要有三种:\n\n![image.png](https://dev-media.amazoncloud.cn/0c4b36d4f9ec418db766df5fe74784ca_image.png)\n\n##### **Key-value**\n第二种就是键值数据库,键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以是从简单对象到复杂复合对象的任何内容。应用领域主要是高流量 Web 应用程序、电子商务系统、游戏应用程序,亚马逊的产品是 [Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail)。\n##### **In-memory**\n第三种是内存数据库,内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。使用案例包括缓存、会话管理、游戏排行榜、地理空间应用程序。\n亚马逊产品主要有两种:\n\n![image.png](https://dev-media.amazoncloud.cn/9c2a6fe12fca4a6daeb50d3e6b7e24a1_image.png)\n\n##### **Document**\n第四种是文档数据库,文档数据库用于将半结构化数据存储为文档,而不是像关系数据库那样在多个表之间对数据进行规范化,每个表都有唯一的固定结构。存储在文档数据库中的文档使用嵌套键值对来提供文档的结构或架构。不过,不同类型的文档可以存储在同一文档数据库中,从而满足了处理不同格式的类似数据的要求。例如,由于每个文档都是自描述的,主题文档数据库中的示例文档中所述的在线存储的 JSON 编码文档可以存储在同一个文档数据库中。亚马逊产品是 [Amazon DocumentDB](https://aws.amazon.com/cn/documentdb/?trk=cndc-detail)。\n##### **Wide column**\n第五种是宽列存储数据库,也称作可扩展记录存储 是一种兼具了广泛的可使用性、可拓展性、高性能和高可用性的分布式 NoSQL 数据库。主要使用案例是用于设备维护、队列管理和路线优化的大规模工业应用程序。\n##### **Graph**\n第六种是图数据库,图数据库是以点、边为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。图数据库属于非关系型数据库。图数据库对数据的存储、查询以及数据结构都和关系型数据库有很大的不同。图数据结构直接存储了节点之间的依赖关系,而关系型数据库和其他类型的非关系型数据库则以非直接的方式来表示数据之间的关系。图数据库把数据间的关联作为数据的一部分进行存储,关联上可添加标签、方向以及属性,而其他数据库针对关系的查询必须在运行时进行具体化操作,这也是图数据库在关系查询上相比其他类型数据库有巨大性能优势的原因。\n##### **Time series**\n第七种是时间序列数据库,时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据,是新型的非关系型数据库。应用领域包括物联网 (IoT) 应用程序、开发运维、工业遥测。\n亚马逊的产品是 [Amazon Timestream](https://aws.amazon.com/cn/timestream/?trk=cndc-detail)\n\n![image.png](https://dev-media.amazoncloud.cn/bed6813ab1ab4929805cec635552c251_image.png)\n\n##### **Ledger**\n最后一种是分类账数据库,[Amazon Quantum Ledger Database](https://aws.amazon.com/cn/qldb/?trk=cndc-detail) (QLDB) 是一种完全托管式分类账数据库,提供了一个透明、不可变、可以加密方式验证的事务日志。\n\n![image.png](https://dev-media.amazoncloud.cn/b5a601fb1db3413a9b31d85b27b32a9e_image.png)\n\n#### **产品优势**\n##### **专门构建**\n从超过 15 个专门构建的数据库引擎中进行选择,包括关系数据库、键值数据库、文档数据库、内存中数据库、图形数据库、时间序列数据库、宽列数据库和分类账数据库。\n##### **规模性能**\n获取速度为常见替代数据库 3-5 倍的关系数据库,非关系数据库延迟甚至是微秒至亚毫秒。\n##### **完全托管**\nAmazon 会持续监控您的集群以使用自我修复存储和自动扩展保证工作负载运行,使您可以专注于应用程序开发工作。\n##### **安全且高度可用**\nAmazon 数据库针对关键业务型企业工作负载构建,提供了高可用性、可靠性和安全性。\n### **总结**\n数据库技术是信息系统的核心和基础,是计算机科学的重要分支。传统数据库已经不能满足用户所有的需求,随着云服务的快速发展,近年来企业也在不断推动云计算等事业的发展,云数据库才是未来。相信在不久的将来,一个企业全面云化的时代即将来临。\n### **学习资料**\n亚马逊云科技专为开发者们打造了多种学习平台:\n1. 入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源。[入门资源中心](https://aws.amazon.com/cn/getting-started/?nc1=h_ls&trk=32540c74-46f0-46dc-940d-621a1efeedd0&sc_channel=el)\n2. [架构中心](https://aws.amazon.com/cn/architecture/?trk=cndc-detail):亚马逊云科技[架构中心](https://aws.amazon.com/cn/architecture/?trk=cndc-detail)提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。[架构中心](https://aws.amazon.com/cn/architecture/?intClick=dev-center-2021_main&trk=3fa608de-d954-4355-a20a-324daa58bbeb&sc_channel=el&cards-all.sort-by=item.additionalFields.sortDate&cards-all.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all&awsf.tech-category=*all&awsf.industries=*all)\n3. [构建者库](https://aws.amazon.com/cn/builders-library/?trk=cndc-detail):了解亚马逊云科技如何构建和运营软件。[构建者库](https://aws.amazon.com/cn/builders-library/?cards-body.sort-by=item.additionalFields.sortDate&cards-body.sort-order=desc&awsf.filter-content-category=*all&awsf.filter-content-type=*all&awsf.filter-content-level=*all)\n4. 用于在亚马逊云科技平台上开发和管理应用程序的工具包:[各种工具包](https://aws.amazon.com/cn/developer/tools/)","render":"<h3><a id=\\"_0\\"></a><strong>前言</strong></h3>\\n<p>在数据库诞生之前,数据的存储和管理主要是依靠表格、卡片等方式进行,效率非常低,耗费时间也很容易出错。随着计算机相关技术的发展,数据管理技术也迅速发展。传统的文件系统难以应对数据增长的挑战,也无法满足多用户共享数据和快速检索数据的需求。在这样的发展背景下,数据库应运而生。数据库技术产生于20世纪60年代末,它的诞生和发展给计算机信息管理带来了一场巨大的革命,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域。<br />\\n数据库技术是信息系统的核心和基础,是计算机科学的重要分支。它的出现极大地促进了计算机应用向各行各业的渗透。因此,数据库是作为一名程序员必须掌握的一门技术。我在学习的过程中一直使用的是亚马逊云数据库,亚马逊云科技提供了100余种产品免费套餐。其中,计算资源 Amazon EC2 首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB 存储容量 永久免费。<a href=\\"https://aws.amazon.com/cn/free/?nc2=h_ql_pr_ft&amp;all-free-tier.sort-by=item.additionalFields.SortRank&amp;all-free-tier.sort-order=asc&amp;awsf.Free%20Tier%20Types=*all&amp;awsf.Free%20Tier%20Categories=*all&amp;trk=e0213267-9c8c-4534-bf9b-ecb1c06e4ac6&amp;sc_channel=el\\" target=\\"_blank\\">福利在这里</a></p>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/63a6e01fe2104d59a5d344f2272ae4e5_image.png\\" alt=\\"image.png\\" /></p>\n<h3><a id=\\"_6\\"></a><strong>传统数据库的不足</strong></h3>\\n<p>数据库管理系统的主要目的就是提供一种可以方便、高效地存取数据库信息的途径。设计数据库系统的目的是为了管理大量信息。对数据的管理既涉及信息存储结构的定义,又涉及信息操作机制的提供。通俗的讲数据库是按照某种数据模型组织起来并存放二级存储器中的数据集合。传统数据库具有非常完备的关系理论基础,高效地查询优化机制。 此外数据库系统还必须提供所存储信息的安全性保证,即使在系统崩溃或有人企图越权访问时也应保障信息的安全性。如果数据将被多用户共享,那么系统还必须设法避免可能产生的异常结果。但是传统数据库在这些方面具有一定的缺点,无法满足高并发的需求,无法满足高扩展性和高可用性的需求。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/c7df3130362b441ea2d639906673ee3d_image.png\\" alt=\\"image.png\\" /></p>\n<p>传统数据库虽然具有很多优势,但也有很多不足的地方,比如在高并发和安全等方面就存在不足。正好云原生数据库解决了这些问题,填补了传统数据库的不足,接下来就让我们学习一下云原生数据库。</p>\n<h3><a id=\\"_12\\"></a><strong>云原生数据库的优点</strong></h3>\\n<p>云数据库是适合云计算环境应用要求的、弹性的多用户分布式数据库平台。它是一个面向云计算的数据库资源管理平台,旨在通过云计算的方式整合现有的大量位于互联网后台的数据库资源,为云计算应用的基础结构级别的数据库资源访问、发现、整合等多方面问题提供通用的解决方案。<br />\\n传统的关系型数据库管理系统在锁机制、日志机制、缓冲区管理等方面一定程序上制约了系统性能。云数据库具有很大的优势,云数据库实现了可扩展性、高性能,并具备传统的数据库优良的特点。<br />\\n其主要特性体现在以下方面:</p>\n<h4><a id=\\"1_16\\"></a><strong>1.动态可扩展性</strong></h4>\\n<p>理论上,数据库云平台具有无限可扩展性,可以满足不断增加的数据存储需求。在面对不断变化的条件时,数据库云平台可以表现出很好的弹性。</p>\n<h4><a id=\\"2_18\\"></a><strong>2.高可用性</strong></h4>\\n<p>数据库云平台不存在单点失效问题,如果一个结点失效了,剩余的结点就会接管未完成的事务。而且在数据库云平台中,数据通常是复制的,在地理上也是分布的,诸如 Amazon 大型云计算供应商具有分布在世界范围内的数据中心,通过在不同地理区间内进行数据复制可以提供高水平的容错能力。例如,Amazon SimpleDB 会在不同的区间内进行数据复制,因此,即使整个区域内的云设施发生失效,也不影响数据的继续使用。</p>\n<h4><a id=\\"3_20\\"></a><strong>3.较低的建设成本</strong></h4>\\n<p>数据库云平台通常采用多租户的形式,其共享资源的形式对于用户而言可以有效节省开销;可以采用按需付费的方式,使用云计算环境中的各种软、硬件资源有效避免资源浪费。同时可以为企业提供相对经济的应用软件服务。云数据库的资费远远比自建数据库所需的成本要低很多,企业可按照自己的需求选择不同套餐,一般情况下只需要很低的价格即可得到一套专业的数据库支持服务,性价比超高。</p>\n<h4><a id=\\"4_22\\"></a><strong>4.轻松部署</strong></h4>\\n<p>企业可以在云数据库控制台轻松的完成数据库申请和创建,几分钟内即可准备就绪且投入使用。企业通过云数据库提供的功能完善的控制台,对所有实例进行统一管理,部署简单使用十分方便。</p>\n<h4><a id=\\"5_24\\"></a><strong>5.高可靠性</strong></h4>\\n<p>云数据库拥有完善的数据自动备份机制,高可靠性让您可以放心将数据放在云端,无需担心数据丢失。云数据库能够实现云端完全托管各类管理任务,比如硬件扩容、补丁升级、备份恢复等等。同样的,像亚马逊云科技能够快速帮助客户在数据安全上做大幅的提升,在高扩张性和效能提升的同时,也可以满足监控、合规的要求。以 Amazon Aurora 的服务为例,亚马逊可以针对静态的档案、传输中的档案、集群的副本、快照、备份进行加密,也可以在网络层的安全性上,进行VPC网络层级的隔离。</p>\n<h3><a id=\\"_26\\"></a><strong>云原生数据库容器化</strong></h3>\\n<p>“你不是不够好,你只是过时了”,这句话用在互联网行业特别合适,每隔一段时间就会有新的技术出现,技术发展非常迅速。随着时代的发展,传统的数据库不再满足人们的需求,所以应运而生产生了云数据库。云数据库也不是一上来就是完美的,它也在不断地发展不断地完善,越来越成熟的技术会慢慢出现。容器化就是云计算在发展的过程中出现的一门新技术,也是云数据库发展中的技术热点。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/17b5f3eb6a4e42479075c68f2c3576fc_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"_31\\"></a><strong>什么是容器化?</strong></h4>\\n<p>容器就是一个软件包,这个软件包提供应用程序的完整的运行环境,包括应用程序的代码、相关配置文件以及运行应用程序所需的依赖项等。容器化是指将软件代码和所需的所有组件打包在一起,让它们隔离在自己的“容器”中。这样,容器内的软件或应用就可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响。容器就像是一个气泡,把应用和周围环境隔离开。也相当于是一个功能全面、便于移植的计算环境。</p>\n<h4><a id=\\"_33\\"></a><strong>为什么需要使用容器?</strong></h4>\\n<p>容器有着一个非常重要的作用就是保证代码运行环境的一致性。容器通过为应用程序打包和部署提供轻量级、不可变的基础结构来解决应用程序移动到其他环境就无法正常运行的问题,将应用程序或服务、其依赖项及其配置打包为容器映像。容器技术为开发人员和 IT 专业人员只需做出少量修改,甚至不需要进行任何修改,即可跨环境部署应用程序,使用非常方便。</p>\n<h4><a id=\\"_35\\"></a><strong>数据库适合容器化吗?</strong></h4>\\n<p>虽然容器化的优点是非常突出的,很多开发者也体验到了。但是目前为止,将数据库容器化并不是很合理。主要原因为以下几点:</p>\n<h5><a id=\\"1_37\\"></a><strong>1.数据安全性</strong></h5>\\n<p>不要将数据存储在容器中,很重要的一点就是安全性问题。容器随时会停止、或者删除,当容器被删掉的时候容器里数据也就随之丢失。</p>\n<h5><a id=\\"2_39\\"></a><strong>2.性能问题</strong></h5>\\n<p>MySQL 属于关系型数据库,对 IO 要求较高。当一台物理机跑多个时,IO 就会累加,导致 IO 瓶颈,大大降低 MySQL 的读写性能。数据库的性能瓶颈一般出现在 IO 上面,如果按 Docker 的思路,那么多个 docker 最终 IO 请求又会出现在存储上面。现在互联网的数据库多是 share nothing 的架构,可能这也是不考虑迁移到 Docker 的一个因素吧。</p>\n<h5><a id=\\"3_41\\"></a><strong>3.资源隔离</strong></h5>\\n<p>资源隔离方面,Docker 确实不如虚拟机 KVM,Docker 是利用 Cgroup 实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。如果其他应用过渡占用物理机资源,将会影响容器里 MySQL 的读写效率。需要的隔离级别越多,获得的资源开销就越多。相比专用环境而言,容易水平伸缩是 Docker 的一大优势。然而在 Docker 中水平伸缩只能用于无状态计算服务,数据库并不适用。我们没有看到任何针对数据库的隔离功能,那为什么我们应该把它放在容器中呢?</p>\n<p>介绍了这么多云原生数据库的好处,也阐述了一些云原生相关的先进技术,光有理论知识是完全不够的,我们也需要付出实践。云原生数据库的选择,我的建议是原则亚马逊云原生数据库,亚马逊作为领先企业,在云方面具有很大的优势,接下来就让我们详细的了解和学习一下。</p>\n<h3><a id=\\"_45\\"></a><strong>亚马逊云原生数据库</strong></h3>\\n<h4><a id=\\"_46\\"></a><strong>数据库服务</strong></h4>\\n<p>亚马逊提供齐全的专用数据库,数据库类型丰富。如下图我们看到的一共包括了八种:这些数据库服务都可以免费试用而且有详细的使用教程:<a href=\\"https://aws.amazon.com/cn/getting-started/databases/get-started/?nc=sn&amp;loc=4&amp;trk=fab55528-7c2e-4517-b90e-65b760ecfc1c&amp;sc_channel=el\\" target=\\"_blank\\">详细的使用教程</a></p>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/c75a3985376748a0996b06c77046ee68_image.png\\" alt=\\"image.png\\" /></p>\n<h5><a id=\\"Relational_51\\"></a><strong>Relational</strong></h5>\\n<p>第一种就是关系数据库,关系数据库应该是我们现在使用最为广泛的的数据库了,我们平时经常使用的 mysql、SqlServer、oracle 都是关系型数据库,关系型数据库应用广泛。主要应用领域主要是在传统应用、企业资源规划、客户关系、电子商务等等。<br />\\n亚马逊产品主要有三种:</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/0c4b36d4f9ec418db766df5fe74784ca_image.png\\" alt=\\"image.png\\" /></p>\n<h5><a id=\\"Keyvalue_57\\"></a><strong>Key-value</strong></h5>\\n<p>第二种就是键值数据库,键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以是从简单对象到复杂复合对象的任何内容。应用领域主要是高流量 Web 应用程序、电子商务系统、游戏应用程序,亚马逊的产品是 Amazon DynamoDB。</p>\n<h5><a id=\\"Inmemory_59\\"></a><strong>In-memory</strong></h5>\\n<p>第三种是内存数据库,内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。使用案例包括缓存、会话管理、游戏排行榜、地理空间应用程序。<br />\\n亚马逊产品主要有两种:</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/9c2a6fe12fca4a6daeb50d3e6b7e24a1_image.png\\" alt=\\"image.png\\" /></p>\n<h5><a id=\\"Document_65\\"></a><strong>Document</strong></h5>\\n<p>第四种是文档数据库,文档数据库用于将半结构化数据存储为文档,而不是像关系数据库那样在多个表之间对数据进行规范化,每个表都有唯一的固定结构。存储在文档数据库中的文档使用嵌套键值对来提供文档的结构或架构。不过,不同类型的文档可以存储在同一文档数据库中,从而满足了处理不同格式的类似数据的要求。例如,由于每个文档都是自描述的,主题文档数据库中的示例文档中所述的在线存储的 JSON 编码文档可以存储在同一个文档数据库中。亚马逊产品是 Amazon DocumentDB。</p>\n<h5><a id=\\"Wide_column_67\\"></a><strong>Wide column</strong></h5>\\n<p>第五种是宽列存储数据库,也称作可扩展记录存储 是一种兼具了广泛的可使用性、可拓展性、高性能和高可用性的分布式 NoSQL 数据库。主要使用案例是用于设备维护、队列管理和路线优化的大规模工业应用程序。</p>\n<h5><a id=\\"Graph_69\\"></a><strong>Graph</strong></h5>\\n<p>第六种是图数据库,图数据库是以点、边为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。图数据库属于非关系型数据库。图数据库对数据的存储、查询以及数据结构都和关系型数据库有很大的不同。图数据结构直接存储了节点之间的依赖关系,而关系型数据库和其他类型的非关系型数据库则以非直接的方式来表示数据之间的关系。图数据库把数据间的关联作为数据的一部分进行存储,关联上可添加标签、方向以及属性,而其他数据库针对关系的查询必须在运行时进行具体化操作,这也是图数据库在关系查询上相比其他类型数据库有巨大性能优势的原因。</p>\n<h5><a id=\\"Time_series_71\\"></a><strong>Time series</strong></h5>\\n<p>第七种是时间序列数据库,时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据,是新型的非关系型数据库。应用领域包括物联网 (IoT) 应用程序、开发运维、工业遥测。<br />\\n亚马逊的产品是 Amazon Timestream</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/bed6813ab1ab4929805cec635552c251_image.png\\" alt=\\"image.png\\" /></p>\n<h5><a id=\\"Ledger_77\\"></a><strong>Ledger</strong></h5>\\n<p>最后一种是分类账数据库,Amazon Quantum Ledger Database (QLDB) 是一种完全托管式分类账数据库,提供了一个透明、不可变、可以加密方式验证的事务日志。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/b5a601fb1db3413a9b31d85b27b32a9e_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"_82\\"></a><strong>产品优势</strong></h4>\\n<h5><a id=\\"_83\\"></a><strong>专门构建</strong></h5>\\n<p>从超过 15 个专门构建的数据库引擎中进行选择,包括关系数据库、键值数据库、文档数据库、内存中数据库、图形数据库、时间序列数据库、宽列数据库和分类账数据库。</p>\n<h5><a id=\\"_85\\"></a><strong>规模性能</strong></h5>\\n<p>获取速度为常见替代数据库 3-5 倍的关系数据库,非关系数据库延迟甚至是微秒至亚毫秒。</p>\n<h5><a id=\\"_87\\"></a><strong>完全托管</strong></h5>\\n<p>Amazon 会持续监控您的集群以使用自我修复存储和自动扩展保证工作负载运行,使您可以专注于应用程序开发工作。</p>\n<h5><a id=\\"_89\\"></a><strong>安全且高度可用</strong></h5>\\n<p>Amazon 数据库针对关键业务型企业工作负载构建,提供了高可用性、可靠性和安全性。</p>\n<h3><a id=\\"_91\\"></a><strong>总结</strong></h3>\\n<p>数据库技术是信息系统的核心和基础,是计算机科学的重要分支。传统数据库已经不能满足用户所有的需求,随着云服务的快速发展,近年来企业也在不断推动云计算等事业的发展,云数据库才是未来。相信在不久的将来,一个企业全面云化的时代即将来临。</p>\n<h3><a id=\\"_93\\"></a><strong>学习资料</strong></h3>\\n<p>亚马逊云科技专为开发者们打造了多种学习平台:</p>\n<ol>\\n<li>入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源。<a href=\\"https://aws.amazon.com/cn/getting-started/?nc1=h_ls&amp;trk=32540c74-46f0-46dc-940d-621a1efeedd0&amp;sc_channel=el\\" target=\\"_blank\\">入门资源中心</a></li>\\n<li>架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。<a href=\\"https://aws.amazon.com/cn/architecture/?intClick=dev-center-2021_main&amp;trk=3fa608de-d954-4355-a20a-324daa58bbeb&amp;sc_channel=el&amp;cards-all.sort-by=item.additionalFields.sortDate&amp;cards-all.sort-order=desc&amp;awsf.content-type=*all&amp;awsf.methodology=*all&amp;awsf.tech-category=*all&amp;awsf.industries=*all\\" target=\\"_blank\\">架构中心</a></li>\\n<li>构建者库:了解亚马逊云科技如何构建和运营软件。<a href=\\"https://aws.amazon.com/cn/builders-library/?cards-body.sort-by=item.additionalFields.sortDate&amp;cards-body.sort-order=desc&amp;awsf.filter-content-category=*all&amp;awsf.filter-content-type=*all&amp;awsf.filter-content-level=*all\\" target=\\"_blank\\">构建者库</a></li>\\n<li>用于在亚马逊云科技平台上开发和管理应用程序的工具包:<a href=\\"https://aws.amazon.com/cn/developer/tools/\\" target=\\"_blank\\">各种工具包</a></li>\\n</ol>\n"}
0
目录
关闭