背景:项目中遇到的问题,需要二区两台数据库之间同步一些表,以及导出sql文件同步至三区数据库。
新建SQL文件生成的目录D:mptmsudataDNLTBDIR。
二区数据库中执行下列语句:
1)新建二区数据库服务器到二区数据库服务器的数据库DATABASE LINK文件。
二区数据库中执行下列语句:
2)二区数据库服务器新建表DNL_TBJL。
二区数据库中执行下列语句:
在二区数据库服务器说新建相关表的触发器,触发器实现的功能是东区2区向西区直接通过DBLINK直接执行;东区2区向东区3区通过生成SQL文件到D:mptmsudataDNLTBDIR目录下;触发器的每次 *** 作都记录到表格DNL_TBJL(id, tables,czlx, SQL, TIME, BAK)内。
通过Windows系统自带的计划任务执行下面批处理实现数据入库
1)三区区数据库服务器新建表DNL_SQLJL。
三区数据库中执行下列语句:
2)三区区数据库服务器新建计划任务定期执行DQ3QRK-ZXWJbat批处理。
3)DQ3QRK-ZXWJbat批处理调用DQ3QRK-ZXSQLbat来执行入库 *** 作。
DQ3QRK-ZXWJbat语句如下:
DQ3QRK-ZXSQLbat语句如下:
一、分库分表的必要性
分库分表技术的使用,主要是数据库产生了瓶颈,如单库的并发访问或单表的查询都超出了阈值。对系统使用造成一定的影响,不得已而产生的技术。
通过分库分表技术来解决此类问题,但正因为使用此技术,会产生ACID一系列的问题,各类中间件解决此类问题各有各的优势。
提示:如场景无必要,千万不要使用分库分表。
二、分库分表的思路
1、垂直区分
垂直分库:从业务角度,一个库分成多个库,如把订单和用户信息分成两个库来存储。这样的好处就是可以微服务了。每块的业务单独部署,互不影响,通过接口去调用。
垂直分表:把大表分成多个小表,如热点数据和非热点数据分开,提高查询速度。
2、水平区分
水平分表:同一业务如数据量大了以后,根据一定的规则分为不同的表进行存储。
水平分库:如订单分成多个库存储,分解服务器压力。
以上一般来说,垂直分库和水平分表用的会多些。
三、分库分表的原理分析
分库分表常用的方案:Hash取模方案和range范围方案;
路由算法为最主要的算法,指得是把路由的Key按照指定的算法进行存放;
1、Hash取模方案
根据取余分配到不同的表里。要根据实际情况确认模的大小。此方案由于平均分配,不存在热点问题,但数据迁移很复杂。
2、Range范围方案
range根据范围进行划分,如日期,大小。此方案不存在数据迁移,但存在热点问题。
四、分库分表的技术选型
1、技术选型
解决方案主要分为4种:MySQL的分区技术、NoSql、NewSQL、MySQL的分库分表。
(1)mysql分区技术:把一张表存放在不同存储文件。由于无法负载,使用较少。
(2)NoSQL(如MongoDB):如是订单等比较重要数据,强关联关系,需约束一致性,不太适应。
(3)NewSql(具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性):如TiDB可满足需求。
(4)MySQL的分库分表:如使用mysql,此种方案为主流方式。
2、中间件
解决此类问题的中间件主要为:Proxy模式、Client模式。
(1)Proxy模式
(2)Client模式
把分库分表相关逻辑存放在客户端,一版客户端的应用会引用一个jar,然后再jar中处理SQL组合、数据库路由、执行结果合并等相关功能。
(3)中间件的比较
由于Client模式少了一层,运维方便,相对来说容易些。
五、分库分表的实践
根据容量(当前容量和增长量)评估分库或分表个数 -> 选key(均匀)-> 分表规则(hash或range等)-> 执行(一般双写)-> 扩容问题(尽量减少数据的移动)。
在这里我们选用中间件share-jdbc。
1、引入maven依赖
2、spring boot规则配置
行表达式标识符可以使用${}或$->{},但前者与Spring本身的属性文件占位符冲突,因此在Spring环境中使用行表达式标识符建议使用$->{}。
3、创建DataSource
通过ShardingDataSourceFactory工厂和规则配置对象获取ShardingDataSource,ShardingDataSource实现自JDBC的标准接口DataSource。然后即可通过DataSource选择使用原生JDBC开发,或者使用JPA, MyBatis等ORM工具。
在mysql中,shema和数据库是一个意思,CREATE SCHEMA是CREATE DATABASE的同义词。但是其他数据库schema和database并不等同,需要具体看文档了解。
我认为第二个方案好点。你一张表的列太多了。这样子必然导致在执行 *** 作的时候非常的慢。分成多个表的话会分担数据库的压力,读写都很快。
百万数据级的我做过。第一种方案的列数太多,导致表态庞大,读写都会很慢。第二种方案将表拆分,一方面在业务上做分割,另一方面读写速度确实会加快。
5221 数据库
根据该系统的开发需求,按照数据库的功能和作用将其分为风险查询类、风险评价类、系统管理类三大类(萨师煊等,2000)。主要数据见表55。
表55 海外油气与金属矿产资源开发风险管理系统的主要数据表
续表
5222 数据仓库
油价数据来源于美国能源部(DOE)下属的能源信息署(EIA)网站、中石油(CNPC)网站和《华尔街日报》(WSJ)网站提供的油价数据,油价序列本身就是一个不规则的时间序列,油价数据具有以下几个特点。
(1)数据的一致性差
油价数据格式多样,存在数据冗余,主要体现在:使用的数据格式均不相同,并且各个子系统相对独立。在网站单独作用的情况下,一般都没有问题,但要将这些不同系统或不同时期的数据集中起来综合利用,就可能出现数据不齐全、不一致或重复的现象。
(2)数据存放的分散
油价数据来源多,缺乏统一管理,没有一种相应的网页数据自动化抓取 *** 作实现数据的本地化 *** 作过程。
(3)数据资源开发不充分
大容量数据导致对数据资源的开发利用不充分,缺乏对获取的数据如各分析机构制定的期货合约元数据进行各种深层次分析、综合、提炼、挖掘和展现的应用,因此很难对丰富的统计数据资源进行二次开发利用。
根据油价数据中所包含的油气产品种类、油气产品合约制定日期、油气产品的价格类型、不同市场下油气产品价格的差异等,能够加深对油价走势的了解。油价的这种与时间相关性、不可修改性,以及集成的性质,使得我们采用多种角度对原始数据进行理解,并真实反映其特性,也让我们发现使用一种整合的技术对油价进行精确预测十分必要。
数据仓库的构建流程如图513所示由下至上逐步实现。
图513 数据仓库构建流程
1)数据源。
A数据源的复杂性。数据分散在数据库管理系统、电子表格、电子邮件系统、电子文档甚至纸上。系统中要求采集的3个数据源中,EIA 网站存储在网页上的油价相关事件更新较慢,虽然提供了各市场日、周、月、年的油价数据下载,但是下载完成之后的表格字段格式时常发生变化,这为实现自动获取数据并下载到本地自动入库的要求增加了难度;中石油网站数据除上述只显示3条数据之外,网站上会将访问流量过大的IP地址列入黑名单使其不能继续下载到本地进行保存,为这些数据建立统一的模型将会耗费很大精力。
B数据的有效性。由于存在经验局限,如何处理数据的空值、不同时间间隔时间字段格式,入库时应注意的问题等,如果应用程序没有检验数据的有效性,会对数据多维显示产生极大影响,因此也归结为数据源数据质量问题。
C数据的完整性。数据源上的数据并不那么明显或者容易获得。油价是高度敏感的数据,因此各个网站虽然提供了各个油品交易市场的日、月或年数据,但是完整性并不能充分保证,根据企业政策的不同,有时对要获得的数据,需花费大量精力。为此,要对不同的数据源进行建库,以保证所获数据的完整性。
2)数据处理。
高效的多维数据集展示离不开底层数据源数据的精确获取,或者叫做数据理解和数据清洗。于是系统在基于元数据获取、加工、入库和多维数据集展示上实现预期的要求。
AETL。该功能是整个油价数据仓库的核心之一,主要功能是按照事先定义的数据表对应关系从相关系统表中抽取数据(Extraction),经过数据清洗和转换(Transform),最终把正确的数据装载到数据仓库的源数据中(Load),作为以后应用的基础。
B数据转换。该功能是在数据抽取过程中按照定义的规则转换数据,避免了数据在分析时的多样性,保证数据一致性。
C数据集成。该功能主要是把油价信息数据仓库系统的源数据,按照事先定义的计算逻辑以主题的方式重新整合数据,并以新的数据结构形式存储。
3)数据存储。
星型模型(星型架构)是数据仓库开发中多维展现重要的逻辑结构,构成星型模型的几个重要特征是:维、度和属性,在实际应用中表示为事实表和维度表。在油价数据中,各市场的期现货价格表为数据仓库的事实表,油品类型、合约规定日期等为维度表。
油价数据仓库星型模型的设计方案如下:
A事实表。数据库表中EIA的期现货价格表(包括日、周、月、年表)作为数据仓库中的事实表,根据不同时间维度构成多个星型模型,即星座模型。这些价格表中以市场编号、油气产品类型、期货合约日期、价格单位度量衡编号作为主键和外键与其他维度表相连,形成多维展示联动的基础,以油价数据和其他事实数据为记录数据,作为主要输出结果。
B维度表。根据市场、油品、价格数据、度量衡和事件类型作为油气数据仓库中多维分析的角度和目标。
图514以EIA的日期货数据表作事实表为例,构建星型模型,其他不同时间维度的模型结构图与此图基本相同。
图514 以EIA数据为例的日期货价格星型模型
以星型模型设计为基础,完善数据存储中 *** 作型数据存储(ODS)的原型设计,提供DB-DW之间中间层的数据环境,可实现 *** 作型数据整合和各个系统之间的数据交换。
在微软的大数据解决方案中,数据管理是最底层和最基础的一环。
灵活的数据管理层,可以支持所有数据类型,包括结构化、半结构化和非结构化的静态或动态数据。
在数据管理层中主要包括三款产品:SQL Server、SQL Server并行数据仓库和
Hadoop on Windows。
针对不同的数据类型,微软提供了不同的解决方案。
具体来说,针对结构化数据可以使用SQL Server和SQL Server并行数据仓库处理。
非结构化数据可以使用Windows Azure和WindowsServer上基于Hadoop的发行版本处理;而流数据可以使用SQL Server StreamInsight管理,并提供接近实时的分析。
1、SQL Server。去年发布的SQL Server 2012针对大数据做了很多改进,其中最重要的就是全面支持Hadoop,这也是SQL Server 2012与SQL Server 2008最重要的区别之一。今年年底即将正式发布的SQL Server 2014中,SQL Server进一步针对大数据加入内存数据库功能,从硬件角度加速数据的处理,也被看为是针对大数据的改进。
2、SQL Server并行数据仓库。并行数据仓库(Parallel Data Warehouse Appliance,简称PDW)是在SQL Server 2008 R2中推出的新产品,目前已经成为微软主要的数据仓库产品,并将于今年发布基于SQL Server 2012的新款并行数据仓库一体机。SQL Server并行数据仓库采取的是大规模并行处理(MPP)架构,与传统的单机版SQL Server存在着根本上的不同,它将多种先进的数据存储与处理技术结合为一体,是微软大数据战略的重要组成部分。
3、Hadoop on Windows。微软同时在Windows Azure平台和Windows Server上提供Hadoop,把Hadoop的高性能、高可扩展与微软产品易用、易部署的传统优势融合到一起,形成完整的大数据解决方案。微软大数据解决方案还通过简单的部署以及与Active Directory和System Center等组件的集成,为Hadoop提供了Windows的易用性和可管理性。凭借Windows Azure上基于Hadoop的服务,微软为其大数据解决方案在云端提供了灵活性。
以上就是关于Oracle不同数据库之间同步处理方案全部的内容,包括:Oracle不同数据库之间同步处理方案、分库分表技术及技术方案、mysql有库和表的概念,但是中间这个是啥意思哪位大神知道等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)