分布式数据库集成解决方案

news2024/11/25 19:20:22

分布式数据库集成解决方案

  • 分析
  • 访问
  • 部署
  • 扩展
  • .1 以界面方式创建数据库(采用DBCA)

在这里插入图片描述# 背景

由于公司业务的发展,要求在其它三个城市设立货仓,处理发货业务。公司本部运行着一套用Sybase数据库的MIS系统可以实现发货,该系统用的是C/S结构。由于客户端连接服务器的网络采用电话拨号,所以直接把客户端软件直接安装在外地访问本部数据库,速度很慢。于是,公司成立了一个项目,专门解决这个问题。在这个项目中,我担任架构师。经过对现有系统的分析,我们决定利用Sybase提供的技术,采用分布式数据库集成的方法来改造目前的系统使之能适应新的需要。项目分三个阶段进行,一是进行需求分析,确定要增加的功能。二是进行系统设计,改变后数据分布如何,系统架构如何。最后是实现和测试,上线。整个项目历时从分析到实现历时三个月,最后于2019年6月份系统成功上线。

分析

在分析阶段时我发现由于客户端地域的分散,遍及三个省境内,连接服务器数据库的网络采用电话拨号方式,速度有限,在使用客户端应用程序时感觉界面速度很慢。我经过分析,认识到许多操作都要从服务器中取数据,速度慢就慢在数据访问上。服务器是没有瓶颈的,问题出在网络速度上。出于成本和业务量方面的考虑,公司不会用专线连接,只能是电话拨号。这时只能改变目前软件的实现方法,来适应这种低速网络的使用模式。 经和项目组的人员一起探讨,结合关系数据库的知识,我认识到,应用程序的每一次数据库操作,都要访问多个相联的表,其中,有销售订单表和物料基础数据表/客户资料表/货仓的基础数据等。销售订单表中存放着出销售的订单编号,成品编号等,数据量少。而基础数据表就则放着成品的相关信息,有大量的数据。如果考虑把销售订单放在服务器,基础数据放在客户端,当应用程序中访问数据时,总是从服务器上存取销售订单,从客户端提取成品/订单的详细信息。由于订单的数据量少,便减少了网络上传递的数据量,从而提高了界面的响应速度。

访问

把数据分散存放只是工作的第一步,接下来要考虑应用程序怎样访问这种分布式数据。开发应用时,如 果每一功能都针对两个数据库进行,就带来了很多麻烦。所以,我通过研究Sybase的分布式数据库技术,决定采用CIS(组件集成服务)部件,来合并两个数据库成一个统一的分布式数据库。应用程序只要连接一个数据库,就可以透明统一访问到两个数据库中的数据。 该技术具体实施方法是:在客户端数据库中建立一个对服务器数据库的远程访问服务名,包含访问地址,登录用户名,登录密码等关登录用户名,登录密码等关键的连接信息;前且对服务器中销售订单建立一个本地代理表。结构和服务器中远程表完全一样,它是访问服务器中会员资料的中转和代理。客户端应用程序访问本地代理销售资料表时,实际上是通过预先定义的远程访问服务名中包含的连接信息到服务器中对应的实际销售资料表中访问数据。这种访问对于客户端完全透明,感觉不到是从物理上独立的两个服务器中存服数据。所以,这种数据库结构是典型的分布式数据库。

部署

这种分布式数据库不是难事,只要在客户端和服务器上安装12.0版本以上的数据库服务器,在客户端服务器上建立远程服务名和代理表即可。由于Sybase数据库的安装支持脚本方式,在客户端应用程序的标准安装过程中,嵌入Sybase数据库的安装和配置脚本,就自动化地完成了所有工作。 在实际使用该分布式数据库系统的过程中,遇到了几个问题,第一,数据同步。客户端基础数据不是绝对静态的,也有变化,因此在服务器要设置一个统一的基准,称为主点数据。客户端总是要复制使用,称为复制点数据。如何及时感知到服务器端主点数据的变化,有效率地复制到客户端,是个难题。

Sybase针对这种应用场合,提供了复制服务器技术,但为了避免过于复杂,我们采用实际应用程序来管理同步。当服务器端主点数据有了更改时,保存一个相应的标识和时间戳,客户端应用在登录服务器时,检查这些标识,一检测到了数据有更新,就首先下载,然后再进入系统正常使用。这种方法实现起来,增加了额外的开发量,且不能判别绕过应用程序对数据的直接修改,但是,是最简单和有效的方法。 第二个问题是事务协调问题。物理上独立的两个数据库,在协同操作时,如果服务器正好停机或者网络故障,完整的一个事务没能完成,就会“事务崩溃”。虽然Sybase CIS内嵌了两阶段提交技术,能够自动恢复。但是应用程序在这种情况下,敏感性不够,操作界面会无端凝固,影响了使用的方便性。我针对PB对劲于连接的判断和感知,用了一个小小编程技巧,使应用程序能够及时感知到数据库连接故障,及时停止和恢复事务,使操作界面表现友好灵活。

扩展

如何通过Oracle 11g服务器组件以界面方式创建数据库。在Oracle 11g环境下,操作数据库有两种方式:一种是通过图形界面管理工具;另一种是通过命令方式。

.1 以界面方式创建数据库(采用DBCA)

在Oracle 11g中,以界面方式创建数据库主要使用数据库配置向导DBCA(Database Configuration Assistant)来完成。下面使用DBCA创建学生成绩管理数据库XSCJ,步骤如下。
(1)启动DBCA,出现“欢迎使用”界面,如图1所示,单击“下一步”按钮进入创建数据库的向导。
在这里插入图片描述

图3.1“欢迎使用”界面
(2)在“操作”窗口中,用户可以选择要执行的操作,这里选中“创建数据库”选项,如图3.2所示,单击“下一步”按钮

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多线程】线程池

目录 线程池是什么 标准库中的线程池 描述线程池工作原理 为什么不推荐使用系统自带的线程池 实现线程池 线程池是什么 线程池就是在池子里放的线程本身,当程序启动时就创建出若干个线程,如果有任务就处理,没有任务就阻塞等待。 想象这…

hive集成hbase Bytes.toByte处理字段 隐射为null乱码 加#b为0问题

解决hive集成hbase Bytes.toByte处理字段 隐射为null乱码 为0问题 错误例子(一) create external table bigdata_student(id string,name string,age int )stored by org.apache.hadoop.hive.hbase.HBaseStorageHandler with SERDEPROPERTIES ("h…

内网渗透(七十二)之域权限维持之伪造域控

伪造域控 2022年1月10日,国外安全研究员Kaido发文称发现了一种新的伪造域控方式,安全研究员只需要新建一个机器账户,然后修改机器账户的UserAccountControl属性为8192。活动目录就会认为这个机器账户就是域控,然后就可以使用这个新建的机器账户进行DCSync操作了。由于修改…

系统开发与运行

系统开发与运行 系统分析与设计 需求分析 需求工程 结构化分析与设计 测试基础知识 系统运行与维护 软件架构介绍 系统分析概述 系统分析是一种问题求解技术,它将一个系统分解成各个组成部分, 目的是研究各个部分如何工作、交互,以实现其系统目标…

Android系统启动全流程分析

当我们买了一个手机或者平板,按下电源键的那一刻,到进入Launcher,选择我们想要使用的某个App进入,这个过程中,系统到底在做了什么事,伙伴们有仔细的研究过吗?可能对于Framework这块晦涩难懂的专…

数据流畅驰骋:探秘Logstash在大数据领域的卓越表现【上进小菜猪大数据系列】

上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 摘要:Logstash是大数据领域中常用的数据处理引擎,能够高效地采集、转换和输出数据。本文将深入介绍Logstash的基本概念、工作原理和常见应用场景&#xff0…

科学计算库-Pandas随笔【及网络隐私的方法与策略闲谈】

文章目录 8.2、pandas8.2.1、为什么用 pandas ?8.2.2、pandas Series 类型8.2.3、pandas 自定义索引8.2.4、pandas 如何判断数据缺失?8.2.5、pandas DataFrame 类型8.2.6、pandas 筛选8.2.7、pandas 重新索引8.2.8、pandas 算数运算和数据对齐8.2.9、pan…

linux 内核开启调试选项

前言 嵌入式 linux 经常要编译 linux 内核,默认情况下编译出的内核镜像是不带调试信息的,这样,当内核 crash 打印 PC 指针和堆栈信息时,我们需要反汇编来确认出错位置,不直观。 如果内核开启了调试选项,我…

控制系统中的闭环带宽

控制系统中的闭环带宽是指反馈控制系统中控制器输出与被控对象输入之间的频率范围。具体来说,闭环带宽是在稳定性和响应速度之间做出的折衷,越高的闭环带宽通常意味着更快的响应速度,但也可能导致系统变得不稳定。 在实际应用中,…

HTML <base> 标签

实例 <head> <base href="http://www.w3school.com.cn/i/" /> <base target="_blank" /> </head><body> <img src="eg_smile.gif" /> <a href="http://www.w3school.com.cn">W3School<…

JAVA常用ApI - Object和Objects

文章目录 目录 文章目录 前言 一 .Object是什么&#xff1f; 二 .Object的常用方法 1.tostring 1.1 返回值 1.2 重写toString方法 3.clone(克隆) 1.克隆接口 三.Objects 总结 前言 大家好,我是最爱吃兽奶,今天给大家讲一下java中的object和object的工具类objects 那…

泰裤辣,可以利用AI测测Vue知识的掌握程度。

以下是一些常见的Vue面试题&#xff1a; 可以先试着回答&#xff0c;以下是参考答案。 1. 什么是Vue&#xff0c;它的优点是什么&#xff1f; Vue是一套用于构建用户界面的渐进式JavaScript框架&#xff0c;它以简洁的API和响应式数据绑定的特性来大大简化了前端开发过程。Vue…

Linux基本指令和操作(3)

目录 一. date指令 -- 显示时间 二. cal指令 -- 日历打印指令 三. find指令 -- 查找文件 四. grep指令 -- 行过滤指令 五. zip/unzip指令 -- 压缩和解压缩 六. tar指令 -- 解压/打包 或 查看压缩包内文件 七. bc指令 -- 计算器 八. uname指令 -- 获取电脑和操作系统相关…

webserver|4.23-4.24 TCP状态转换、半关闭、端口复用

4.23 TCP状态转换 四次挥手&#xff1a; 另一种状态图&#xff1a; 红色实线&#xff1a;客户端 绿色虚线&#xff1a;服务端状态转变 4.24 半关闭、端口复用 半关闭 基本就是一边closed&#xff0c;另一边还没有closed 一边一旦closed之后就不能再向另一方传数据&#xff08;A…

异常检测专栏(三)传统的异常检测算法——上

前言 在上一篇推文中&#xff0c;我们简要介绍了异常检测常用的几种数据集如ImageNet、CIFAR10/CIFAR100、MNIST等。接下来&#xff0c;我们将基于传统的异常检测算法分为上、下两部分&#xff0c;逐一介绍不同类别的方法。 本教程禁止转载。同时&#xff0c;本教程来自知识星球…

matlab将RGB图像在HSI空间去噪

思路与代码 RGB 转换为 HSI 的计算步骤如下&#xff1a; 首先归一化三通道值 &#xff1a; r R R G B r \frac{R}{RGB} rRGBR​ g G R G B g \frac{G}{RGB} gRGBG​ b B R G B b \frac{B}{RGB} bRGBB​ 接下来&#xff0c;计算 HSI 图像的亮度 I I I&#xf…

(转载)从0开始学matlab(第3天)—子数组

你可以选择和使用一个 MATLAB 函数的子集&#xff0c;好像他们是独立的数组一样。在数组名后面加括号&#xff0c;括号里面是所有要选择的元素的下标&#xff0c;这样就能选择这个函数的子集了。例如&#xff0c;假设定义了一个数组 arr1 如下 arr1[1.1 -2.2 3.3 -4.4 5.5] 那…

yolov5 实例分割 jason标注格式转换 训练自己的数据集

目录 一、coco128-seg数据集分析 1、配置文件 coco128-seg.yaml 2、coco128-seg数据集 二、自己用anylabeling标注获得的json文件 三、json文件转coco128-seg格式 四、实例分割训练 1、修改数据配置文件 coco128-seg.yaml 2、训练 一、coco128-seg数据集分析 这个博客中有…

5。STM32裸机开发(3)

嵌入式软件开发学习过程记录&#xff0c;本部分结合本人的学习经验撰写&#xff0c;系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维&#xff0c;为RTOS做铺垫&#xff08;本部分基于库函数版实现&#xff09;&#xff0c;如有不足之处&#xff0c;敬请批评指正。 &…

【探索SpringCloud】服务发现

前言 今天&#xff0c;我们来聊聊SpringCloud服务发现。主要有如下几个议题&#xff1a; 一、服务发现的概念与方案&#xff1b;二、SpringCloud是如何与各个服务注册厂商进行集成的。 服务发现 在微服务架构中&#xff0c;我们不可避免的需要通过服务间的调用来完成系统功能…