当前位置: 首页 > 编程日记 > 正文

云计算时代的数据库运行

云计算时代的高可用数据库是可扩展、容错且与任何私有云或公共云兼容的数据库实例。它们旨在提供业务连续性,而不会因任何类型的硬件或网络故障而导致用户体验的影响。其核心设计原则是消除任何单点故障,并提供平稳的故障转移体验。

公共云和私有云使企业能够摆脱容易出错的传统架构,并运行具有可靠性为5个9和6个9的应用程序。业务应用程序可以按需、即时且经济高效地进行调整。数据库应用程序一直是所有企业基础设施的主要组成部分,但这些应用程序(特别是关系数据库)在使用云计算能力方面仍有很长的路要走。它们被设计为大型单片应用程序,当组织尝试以可扩展的方式可靠地运行它们时,将面临着相当大的挑战。

传统的分布式环境数据库通常部署为多个独立的数据库实例,具有统一查询的能力。对于测试/开发环境,生成数据库的许多物理副本在后台创建,导致数据蔓延。云计算与这些解决方案的集成是有限的:重点是数据的位置,而不是使用分布式系统的强大功能。让我们考虑针对高可用性和测试/开发数据库的情况解决这些问题的不同选项。

高度可用的数据库

云计算时代的高可用数据库是可扩展、容错且与任何私有云或公共云兼容的数据库实例。它们旨在提供业务连续性,而不会因任何类型的硬件或网络故障而导致用户体验的影响。其核心设计原则是消除任何单点故障,并提供平稳的故障转移体验。

主动/被动数据库副本

第一种选择是在主/副本体系结构中部署数据库,以便在任何给定时间单个主服务器提供数据库请求。复制策略使用数据库供应商的复制特性或外部第三方复制工具从主服务器同步复制数据。一旦主服务器发生故障,副本服务器就会接管并使用复制的数据在故障发生之前重新启动数据库。

这种方法可能会遇到数据库性能和可靠性问题。数据库操作将与这两个位置的网络一样快。第三方复制工具可能无法提供稳定的数据复制,并且可能在故障转移后使数据库处于不一致的状态。

内置高可用性的数据库

第二种选择是寻找提供内置高可用性的数据库解决方案。此功能在Noss数据库(如Cassandra和MongoDB)中更常见。它们从数据库层创建一致的数据副本,并启用容错数据库。然而,这种方法可能对许多企业不起作用,因为传统的关系数据库管理系统缺乏这种能力。此外,混合和多云复制通常不是这些解决方案的选择。

测试/开发数据库

克隆数据库是测试、开发和分析的共同要求。生产数据库始终在隔离的基础设施中运行,并且为备份、大数据分析和质量保证创建此数据库的一个或多个副本。

快照和克隆

要将数据库复制到另一个站点或云平台,操作人员可以获取快照并将其物理克隆到其他位置。这样做涉及设置策略,该策略定期获取数据库的快照。并将其克隆到预定义位置。用户需要像Oracle RMAN这样的解决方案,它可以跟踪快照之间的变化,采取一致的备份,并在需要时进行恢复。但是对于所有数据库都不存在这样的解决方案,并且使用远程数据中心和云平台来创建这样的克隆仍然是复杂的(如果可行的话)过程。

适用于私有云、混合云和多云的高可用存储

解决这些问题的更好解决方案是从存储层完全抽象数据库层,并让存储解决方案处理应用程序的高可用性。软件定义存储(SDS)可以通过提供不同类型的硬件和软件故障的数据保护来提供此功能。软件定义存储(SDS)还可以灵活地在后端使用任何类型的存储硬件,其中包括物理服务器和虚拟云实例。

这种方法的唯一缺点是投资于正确的解决方案,这种解决方案很容易与客户选择的数据库应用程序集成,并且还与其他数据库兼容以实现转换。此外,此类解决方案应该能够在任何私有云或公共云上运行,并且应该模糊内部部署和公共云位置之间的界限。

以下是这样的解决方案:

数据库即服务

社交媒体、投资、游戏等需要5个9或6个9的可用性,并采用全球可访问性的应用程序,需要最适合云端的整个数据库系统。数据库即服务(DBaaS)提供了一种在云中运行数据库的简便方法,可以节省购买服务器、构建基础设施和构建大型团队来管理这些数据库的时间。供应商提供多种方式来使用数据库即服务(DBaaS)产品,例如安装了数据库的虚拟机,DB Schema即服务以及具有专用硬件的数据库,用于RDBMS以及NoSQL数据库。

在考虑任何基于云计算的数据库安装时,必须解决以下问题:

(1)供应商锁定:每个提供商都有自己的业务流程框架,这使得消费者更难从一个提供商转移到另一个提供商。

(2)数据同步:总是需要外部工具以一致的方式将数据从一个位置复制到另一个位置。这些工具通常具有破坏性,昂贵且复杂,并且它们构成了跨越多个位置和环境的巨大瓶颈。

(3)云计算成本分析:决定在云平台中应该使用哪些应用程序和数据之前,应该进行仔细的预算分析。如果不设计混合云,其预算很容易失控,同时要记住为了获得简单性和灵活性需要付出代价。

迄今为止,数据库已经存在了50多年,长期在传统的办公环境中成功运行。现在是企业通过采用云计算解决方案运行现代数据库来获得竞争优势的时候了。

转载于:https://www.cnblogs.com/syncnavigator/p/10189413.html

相关文章:

Java:在Bean中使用PropertyChangeSupport支持PropertyChangeListeners

本文主要介绍如何使用PropertyChangeSupport类来支持关联属性事件的触发。author: ZJ 2007-8-3Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]JavaBean的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是一个概念&#xff0…

【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串。现在,给出\(a,b\),定义一个"Fibonacci string"的权值为\(x^a y^b\),其中\(x\)为0的个数&…

scala定义抽象类与抽象字段

抽象类 和Java语言一样,scala中也可以定义抽象类 定义: 如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类 不完整定义有两种情况: 1.方法没有方法体(抽象方法) 2.变量没有初始化&#xf…

kuangbin专题16B(kmp模板)

题目链接: https://vjudge.net/contest/70325#problem/B 题意: 输出模式串在主串中出现的次数 思路: kmp模板 在 kmp 函数中匹配成功计数加一, 再令 j nxt[j] 即可. 感觉有点奇怪的就是我拿 A 题的模板写这题居然会 tle, 而拿这题的模板写 A 题又没有 A 题的模板跑的快...可能…

[转]C#日期格式化 文档

日期转化一 为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格式,要用到DateTime.ToString的方法(String, IFormatProvider),如下所示: usin…

探讨ASP.NET AJAX客户端开发技术

一、 简介 在ASP.NET AJAX组件开发中,存在许多环节有待我们深入挖掘。如何让ASP.NET AJAX服务端控件更有效地利用客户端脚本来为控件添加强大的客户端功能?如何更为方便地访问控件访问的资源,等等。实践证明,要实现最终的应用程序…

mfc 应用程序 语言进行本地化

在软件国际化的今天,资源从代码中独立出来,使在不同语言操作系统下能运行不同语言版本的程序,是很有意义的事. MFC 7.0 及更高版本提供对附属 DLL 的增强支持,该功能有助于创建针对多种语言进行本地化的应用程序。附属 DLL 是一个纯资源 DLL,它包含应用程…

前端优化系列之一:dns预获取 dns-prefetch 提升页面载入速度

问题:怎么做到dns域解析?用于优化网站页面的图片问题:怎么提升网站性能?dns域解析,是提升网站的一个办法。DNS Prefetch,即DNS预获取,是前端优化的一部分。 一般来说,在前端优化中与…

暑假集训D15总结

考试 日常爆炸 T1数据背锅,回天乏力 推了两个小时的T2竟然莫名RE,我也是服了 T3考试时就没读懂题,做个鬼啊 今天一直在写某奇怪的技术贴,竟然没有写题解(手动滑稽) 希望明天不要乱炸吧 博客 强行推荐一波自…

maven-assembly-plugin和maven-shade-plugin打包区别及弊端

使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包 maven-shade-pluginmaven-assembly-pluginmavenjar打包 现在基本上都是采用 maven 来进行开发管理,我有一个需求是需要把通过 maven 管理的 java 工程打成可执行的 jar 包&#x…

【Spark】Spark基础练习题(一)

题目: 1、创建一个1-10数组的RDD,将所有元素*2形成新的RDD 2、创建一个10-20数组的RDD,使用mapPartitions将所有元素*2形成新的RDD 3、创建一个元素为 1-5 的RDD,运用 flatMap创建一个新的 RDD,新的 RDD 为原 RDD 每…

Python(27)_字符串的常用的方法2

#-*-coding:utf-8-*-字符串操作s " bowen " # 从右边删 s1 s.rstrip() print(len(s1)) s2 s1.lstrip() print(len(s2)) 从右边删除元素,从左边删除元素,这个在以后项目中经常用到 二、计算个数 #-*-coding:utf-8-*-字符串操作s " bo…

tensorflow1

1、什么是tensorflow tensorflow是一个开源软件库,使用data flow graphs进行数值计算,最初由Google大脑团队开发,用于机器学习和深度卷积网络的研究,同样适用于其他广泛的领域。 2、访问tensorflow官网:在Windows的hos…

大型企业门户网站设计开发一般性原则和建议

[适用范围] 本文所述的原则、建议适用于大型企业信息门户网站的设计和开发,注意不是小型企业网站、一般企业电子商务网站、企业级Web应用系统。 [一般性原则] 一、网站设计原则 第一原则:内容丰富、明确 网站主要是为浏览着提供信息服务的,作…

8月第3周回顾:四巨头发三大新闻 一报告引多家争议

8月15日是51CTO.com成立两周年的日子,网站举办了多种活动进行了庆祝;凑巧的是,IT界在本周也热闹非凡:微软、甲骨文、IBM和Sun联手送上三份重要新闻;国内一份个人安全的报告引起一场小小的风波——这些都足以让关注IT技…

车辆匹配和平均车速计算

数据测试内容以及详情见 https://github.com/xueyeyu/avgsp /* 作者:雪夜羽 平均车速计算(sqlserver)基于电警 QQ:1412900482 */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement…

为何 Map接口不继承Collection接口

1.首先Map提供的是键值对映射(即Key和value的映射),而collection提供的是一组数据(并不是键值对映射)。 如果map继承了collection接口,那么所有实现了map接口的类到底是用map的键值对映射数据还是用collec…

Linux 开机网络无法自动连接配置、网络开机自动连接

第一步:查看开机后网络是否正常连接? 1、图形界面开机后直接看右上角的网络是否连接正常(如图一)。 图一(表示未正常连接↑↑↑↑↑↑↑↑↑) 2、如果是命令页面的,可以使用命令查看网络连接情况…

sql中将分隔字符串转为临时表的方法

问题: 要求将 一字符串 0,1,2,3,4,5 ;将,分隔后的每一内容转为一行记录到数据库表中declare table_串转数组 table( adapt_object int default 0) declare tmp_str varchar(100) declare tmp_index int select tmp_index 1 select tmp_str 0,1,12,03,4,5,a,…

每天学一点flash(15) xml的一些常见写法

今天下了大雨来了&#xff0c;什么地方去不了&#xff0c;只好将想写的东西都记载下来。 一些常见的一些xml写法&#xff0c;收集目的就是为了代码调试方便&#xff1a; 一&#xff0e;简单数组单值形 <?xml version"1.0" encoding"UTF-8"?> <i…

spark为什么比hive速度快?

spark是什么&#xff1f; spark是针对于大规模数据处理的统一分析引擎&#xff0c;通俗点说就是基于内存计算的框架 spark和hive的区别&#xff1f; spark的job输出结果可保存在内存中&#xff0c;而MapReduce的job输出结果只能保存在磁盘中&#xff0c;io读取速度要比内存中…

kotlin 练习

kotlin基础语法 samychen 关注 2017.05.28 17:07* 字数 1224 阅读 2434评论 0喜欢 6每种编程语言都有一定的语法、语义和执行顺序(同步)&#xff0c;学习一种新语言也都是从这三者出发&#xff0c;下面我们就只针对kotlin的语法来做简单的介绍。 Kotlin有自己的特性不该被Java的…

软件设计之 数据库设计

[按语&#xff1a;在软件设计或是动态网站开发中&#xff0c;数据库设计时很重要&#xff0c;我觉得可以说是开发工作的核心部分&#xff0c;所以学好数据库设计&#xff0c;是很重要的&#xff0c;也是大有前途的。。。]◆&#xff0e;概念首先要搞清楚容易混淆的两个概念&…

css结构思维导图

以下的图是根据css基础&#xff0c;样式&#xff0c;框模型&#xff0c;定位以及选择器这几个方面总结出来的思维导图&#xff0c;方便记忆以及查询。 转载于:https://www.cnblogs.com/yuexiuyi/p/7352516.html

C#类的修饰符

访问修饰符:public&#xff1a;访问不受限制。protected&#xff1a;访问仅限于包含类或从包含类派生的类型。只有包含该成员的类以及继承的类可以存取.Internal&#xff1a;访问仅限于当前程序集。只有当前工程可以存取.protected internal&#xff1a;访问仅限于当前程序集或…

Appium+Python 自动化测试一之:环境安装(Android篇)

目前网上有大量AppiumPython的APP自动化测试的资料&#xff0c;这里我只是记录一下自己安装的过程&#xff0c;好让自己以后忘记的时候再翻起来看看&#xff0c;快速上手&#xff0c;不想再像之前那样踩坑。 注&#xff1a;因为之前玩过Robot FrameworkSelenium2&#xff0c;所…

sql server 2005 T-SQL @@TOTAL_READ (Transact-SQL)

返回 SQL Server 自上次启动后由 SQL Server 读取&#xff08;非缓存读取&#xff09;的磁盘的数目。 Transact-SQL 语法约定 语法 TOTAL_READ 返回类型 integer 备注 若要显示包含多项 SQL Server 统计信息&#xff08;包括读写活动&#xff09;的报表&#xff0c;请运行 sp_m…

存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

存储结构分四类&#xff1a;顺序存储、链接存储、索引存储 和 散列存储。 顺序结构和链接结构适用在内存结构中。 顺序表每个单元都是按物理顺序排列的&#xff0c;如果你想访问那个单元你可以根据提供的指针等直接访问到需要的东西&#xff0c;但是链表是逻辑连续不是物理连续…

[luoguP2618] 数字工程(DP)

传送门 离线处理。。。 先线性筛一遍。 直接预处理出所有答案。 注意要用push&#xff0c;用乘法&#xff0c;常数小。 #include <cstdio> #include <cstring> #define N 1000001 #define min(x, y) ((x) < (y) ? (x) : (y))int n, cnt; int f[N], prime[N]; b…

QOS的qmtoken 1

在有拥塞的时候高层协议如TCP可能自己可以控制下拥塞&#xff0c;因此你的队列效果可能不明显了&#xff0c;这个时候TCP就是&#xff0c;网络拥塞丢包增加&#xff0c;重传增加。此时可以定义波特率修改接口带宽&#xff0c;从而从底层截掉带宽制作拥塞或使用LR&#xff0c;LR…