分布式数据库数据从属与client与server的数据同步

老实说,眼下市面上很多产品,的确是不成熟的产品。

用过一些,给人蛋痛的感觉。

导言

分布还是集总

今天我们来探讨一个非常重要的问题。

每一个程序猿都有其思想,我的思想之中的一个,就是分布式。

分布式,面对的一个问题,就数据的同步。

比方说。我们人类是分布式的,我们每一个细胞都在无时无刻与其他细脑交换数据。

而现实世界。我们的设计是什么样子?一般都是集总式。

首先来说,这样的方式,与现实世界并不一致。所以。带来的最严重的一个影响就是效率的问题。

自己这些年,一直在无线通信领域。

无线通信。有两个重要的特点:

1. 无线带宽有限,所以这些带宽就成为重要的国家资源,所以无线通信的费用,非常高。

2. 无线通信,信号不稳定。

当然,wifi是还有一回事。但不是哪里都能够用wifi接入。至少如今是这样(当然。wifi的存在,也是一个莫大的讽剌:国际电联占用了那么多带宽,可真正传的数据,可能根本不如开放给Wi-Fi的那么一点可怜的带宽。国际电联。有时真是应当反思)。

基于这两点,一个手机电的client应用程序,一定要在本地存数据。假设不能做到这样,其本上就是个垃圾产品。浪费生命的产品。

举个样例。比方腾讯新闻,事实上这是一个实时性非常强的产品,但腾讯,还是非常负责地实现了全面的离线和缓存功能。这是对用户的负责。

用户没有道理,在等你的软件在后台同步数据。这是在浪费用户 的生命。

同步与版本号兼容

可是同步并非件简单的工作,其实,相当复杂。并且是检查一个架构师的架构是否合理的关键要点。

网上有很多讨论同步的帖子。但都不是非常理想。

同步,作为一个架构人员。你首先要考虑同式的方式。进而思考版本号兼容的问题。

什么叫版本号兼容?这么说吧,你去理发。看一个理发师水平怎么看?过一个星期再看他给你理的发的效果,那才是真水平。

版本号兼容,其实。是真正能体现一个复杂软件的灵魂之处。

特别是对数据的兼容。

我为什么总是把这四个字放在嘴边?由于这不止是我缺的,更是我们整个民族所缺的。我们五千年文化的特点是什么?每300年大扫除一次!每一个朝代的书,都被下个朝代烧光。

所以,我们总是在原地踏步。

然后,美其名日:新的版本号全然抛弃了旧版本号的弊端。

我告诉你,这种软件,送我也不要——缺少一个程序猿的其本良知。

相同。一个公司,你怎么看他强不强?你就看他的产品升级的时候,是怎么处理用户数据的。

比方,眼下我维护的任务之中的一个就是Pre-E公司的windchill ,PDM系统,不论你告诉我这是一家多么强大的公司,当我听说,它的新版本号不能从旧版本号平兼容升级,须要全然重做。我就知道,这是个不能买的软件——windchill团队,也是个不怎么负责的团队——也可能是能力问题。

那么。版本号兼容、分布式、数据、同步,它们之间的联系是什么?

真的思考过的人,你自然会理解。、

你精心设计的CS系统(比方OA,流程平台,CRM,物流,等等)。如今数据库结构变了。

问题是,你的client那里。有一个本地数据库,存在属于他的数据。

那么,这两个数据库之间。怎样处理?

当然,最简单的办法就是通知全部用户:你的数据不能用了。请又一次同步。

这是一种浪费。对server的压力。也会添加非常多。

其实。我了解过的很多系统。server的压力,就是由于server承担了本不须要在服务端完毕的工作。

如今的手机、PC运算能力。全然是一个小型server。

有时的确搞不懂。人们为什么无克制地在服务端搞来搞去,而不是从分布式的思想上下功夫——事实上这也是一种民主暴政:搞服务端看起来非常专业,非常有型,工资自然高。

浪费所以总是有道理。

但。错误,总会有人来纠正的。

------------------------------------------

好了,我们来探讨,数据同步的一些细节。

数据同步,由几部分构成。

1. 信息的从属。这可能是最先须要思考的。

有属于个人的,有属于团队的,有公共的,有属于BI团队的。还有属于管理人员。或是財务这样的专业团队的。

所以,第一步,须要明白界面哪些须要同步每一个个体的终端(User Equment)上.

2. 信息的唯一描写叙述。

有了从属,每一条信息,须要一个唯一ID。

以解决当一条信息发生改变时的记录。服务端与client。都须要此项工作。

3. 数据结构的描写叙述,与版本号。

为实现版本号兼容,每一个对象(或表。或树)须要有描写叙述(类似人类的DNA。类似数据库的Schema),这些描写叙述体系,相对而言,须要固定的模式。

比方,数据库,一定是非业务、非对象、非表的模式来存储。

比方,能够用OID + value的方式来存储。

4. 数据的同步,须要两步,第一步是检查数据结构是否有改变,第二步才是数据的同步。

5. 注意这里软件的版本号升级,与数据描写叙述的演进。是两回事。

6. 还有一个要选择的问题,何时同步。同步多少数据。比方。当用户用到一个功能时,再同步,还是用户每登上,就进行一次全同步。

这里。须要与详细的情况结合来考虑。最好是两种功能,都实现。不同的情况下。使用不同的同步方式。

7. 实时上报。当两个用户在进行协同一时候,最好须要有实时上报的功能。这里看以看出,为什么,信息的从属,和信息的唯一描写叙述。是这同步体系的基础。

8.容错,当体系出现故障时,有机缺能避免掉入升级陷阱。

9.区分wifi与电信网络的接入情况。当用户使用的是wifi时。能够在后台自己主动进行全同步。

假设能实现这些。其本上就比較理想了。

平滑升级,为什么如此重要?

几个方面。

一个是版本号的回溯。

版本号回溯的重要性是什么呢?

好比我们早晨醒来第一件事是什么?回顾。

不错,可能你没有意识到。

我们中国人学的英语为什么都是哑巴英语?一方面,我们没有注意到语言的核心是动词,还有一方面,也是根本原因。是由于我们没有形成英语记忆。

这是母语与后天习成语言的本质区别。

版本号回溯的重要,类似于此。

比方说,你的软件升级20个版本号后。你能够研究一下,整个演进的过程。

哪个能參数被删除了,哪些是一分为二的。哪些合并了。哪些,是你删除了又加上,然后又删除了的。

这样的情况,有没有?肯定有。

假设这个团队,就你一个人。这无所谓了。

但,假设在巨大的团队,非常可能有人在偷懒,也有可能是糊涂(但更可能是管理问题)。

这么说吧,大团队,有意和无意的这样的走转圈路的情况,层出不穷。早晨又听研发的同事在讨论。十年前的问题。相信,再过一百年,也会再出。

如今你懂了,这个版本号兼容有多重要了吧?及使不考虑client、server。也须要有这个功能。

去年维护物流的时想,开发了一个复杂的功能。须要修改很多表。把原有的数据进行处理后导入,后来。不得不开发了一个非常复杂的升级脚本来实现。

事实证明是明智的——手工升级,一个星期也能都升不上去。有了脚本,仅仅需几分钟。

时间: 2024-10-26 19:09:48

分布式数据库数据从属与client与server的数据同步的相关文章

分布式数据库数据从属与客户端与服务器的数据同步

老实说,目前市面上许多产品,的确是不成熟的产品. 用过一些,给人蛋痛的感觉. 导言 分布还是集总 今天我们来探讨一个很重要的问题. 每个程序员都有其思想,我的思想之一,就是分布式. 分布式,面对的一个问题,就数据的同步. 比如说,我们人类是分布式的,我们每个细胞都在无时无刻与其它细脑交换数据. 而现实世界,我们的设计是什么样子?一般都是集总式. 首先来说,这种方式,与现实世界并不一致.所以,带来的最严重的一个影响就是效率的问题. 自己这些年,一直在无线通信领域. 无线通信,有两个重要的特点: 1

SQL Server分布式数据库技术(LinkedServer,CT,SSB)

SQL Server自定义业务功能的数据同步 在不同业务需求的驱动下,数据库的模块化拆分将会面临一些比较特殊的业务逻辑处理需求.例如,在数据库层面的数据同步需求.同步过程中,可能会有一些比较复杂的业务逻辑判断.简单介绍几个SQL Server提供的数据同步功能. 已链接服务(Linked Server) 通过链接数据库可以实现不同实例间数据的访问和更新操作.通常会与OPENQUERY行集函数一起使用,以避免分布式事务的干涉.不建议直接使用已链接服务来做远程数据的更新操作,因为这需要使用到分布式数

探析大数据需求下的分布式数据库

一.前言 大数据技术从诞生到现在,已经经历了十几个年头.市场上早已不断有公司或机构,给广大金融从业者"洗脑"大数据未来的美好前景与趋势.随着用户对大数据理念与技术的不断深入了解,人们已经开始从理论探索转向对场景落地的寻找,让大数据在企业中落地并开花结果. 从大数据的管理和应用方向集中在两个领域.第一,大数据分析相关,针对海量数据的挖掘.复杂的分析计算:第二,在线数据操作,包括传统交易型操作以及海量数据的实时访问.大数据高并发查询操作.用户根据业务场景以及对数据处理结果的期望选择不同的大

分布式数据库选型——数据水平拆分方案

概述 水平拆分的概念随着分布式数据库的推广已为大部分人熟知.分库分表.异构索引.小表广播.这些功能几乎是产品功能需求标配.然而有些客户使用分布式数据库后的体验不尽如意.本文尝试从数据的角度总结分布式数据的复制(replication)和分区(partition)技术原理和方案,其中分区也有称为分片(sharding),希望能引起读者一些思考,在分布式数据库选型中能注意这些细节的区别,选择适合业务的数据水平拆分方案. 分布式数据库架构 分布式数据库以集群形式存在,有多个节点.集群架构有共享磁盘架构

在大学时的分布式数据库读书笔记 拿出来分享

二章 一.分布式数据库系统的设计 1数据库设计概述 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据. 数据库设计的基本步骤(如图2.1): 需求分析 概念结构设计 逻辑结构设计 物理结构设计 数据库的建立和测试 数据库运行和维护. 图2.1 数据库各阶段设计描述,如图2.2 图2.2 2命名规范 2.1 命名总规则 1.  所有名称的字符范围为:A-Z, a-z, 0-9 和_(下划线).不允许使用其他字符作为名称. 2.  采用英文单

网络相关系列之四:数据解析之SAX方式解析XML数据

一.XML和Json数据的引入: 通常情况下.每一个须要訪问网络的应用程序都会有一个自己的server.我们能够向server提交数据,也能够从server获取数据.只是这个时候就有一个问题,这些数据是以什么格式在网络上传输的呢?一般我们都会在网络上传输一些格式化后的数据,这样的数据会有一定的结构规格和语言,当还有一方收到数据消息后就能够依照同样的结构规格进行解析.从而取出它想要的那部分内容. 在网络上数据传输最经常使用的格式:XML和Json.本文就来学习一下XML数据的解析,Json格式的数

大数据将促进分布式数据库发展及去Oracle

2015-09-13 张晓东 东方云洞察 点击上面的链接文字,可以快速关注"东方云洞察"公众号 分布式数据库简介 分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库, 通过网络互相连接共同组成一个完整的.全局的逻辑上集中.物理上分布的大型数据库. 分布式并行数据库通过并行使用多个CPU和磁盘来将诸如装载数据.建立索引.执行查询等操作并行化以提升性能的数据库系统.其中最重要的关键

SQL Server 创建水平分布式数据库尝试

创建水平分布式数据库,需要分两步实现:划分子集和对子集进行并集操作.分布式数据库的优势是:IO分散,便于快速读取数据,劣势是消耗大量的网络带宽资源. 划分子集是将原始表水平切分成若干个较小的成员表,每一个成员表都是全集的一个划分(各子集的并集是全集,其交集是空集).每个成员表包含与原始表相同数量的列,并且每一列具有与原始表中的相应列同样的特性(如数据类型.大小.排序规则),水平切分原始表,也叫做数据库水平分片,sharding.在查询时,为了实现SQLServer内部水平分片对用户透明,必须利用

大数据量下的SQL Server数据库自身优化 (转载)

1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情况下有一个主数据文件(MDF)就够了,但是有些大型的数据库,由于信息很多,而且查询频繁,所以为了提高查询速度,可以把一些表或者一些表中的部分记录分开存储在不同的数据文件里 由于CPU和内存的速度远大于硬盘的读写速度,所以可以把不同的数据文件放在不同的物理硬盘里,这样执行查询的时候,就可以让多个硬盘同时进行查询,以充分利用CPU和内存的性能,提高查询速度. 在这里详细介绍一下其写入的原理,数据文件(