分布式数据库

转载:全球级分布式数据库Google Spanner

强颜欢笑 提交于 2019-12-02 10:54:07
一.Spanner功能概要 Spanner具有 高扩展性 , 多版本 (multi-version)、 世界级分布 (globally-distributed)及 同步复制 (synchronously-replicated)等特性。 Spanner立足于高抽象层次,使用Paxos协议横跨多个数据集把数据分散到世界上不同数据中心的状态机中。世界范围内响应,出故障时客户副本之间的自动切换。当数据总量或服务器的数量发生改变时,为了平衡负载和处理故障,Spanner自动完成数据的重切片和跨机器(甚至跨数据中心)的数据迁移。 Spanner可以轻松的横跨数百个数据中心将万亿级数据库行扩展到数百万台机器中。高可靠性更是让应用程序如虎添翼,即使面对大范围的自然灾害,可靠性仍然能得到良好的保障(因为Spanner有着世界级的数据转移)。最初的用户来自F1 — 使用了美国境内的5个拷贝。多数其他应用程序都是在同一个地理区域将数据复制3到5份,使用相对独立的故障模式。也就是说多数的应用程序会选择低延迟超过高有效性,只用一两个数据中心来保障数据的可靠性。 Spanner的 主旨是数据中心的管理 ,但是在分布系统基础设施的特色上同样是下足了功夫。尽管Bigtable很讨一些项目欢心,我们还是收到了一些Bigtable在某些应用程序(复杂的、不断变化的架构或者需要在大区域响应中保持强一致性

Zookeeper简介与集群搭建

冷暖自知 提交于 2019-12-02 08:42:13
Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换等服务。它 不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC服务框架、分布式数据库同步系统,这些都是Zookeeper的应用场景。 Zookeeper集群中节点个数一般为奇数个(>=3),若集群中Master挂掉,剩余节点个数在半数以上时,就可以推举新的主节点,继续对外提供服务。 客户端发起事务请求,事务请求的结果在整个Zookeeper集群中所有机器上的应用情况是一致的。不会出现集群中部分机器应用了该事务,而存在另外一部分集群中机器没有应用该事务的情况。在Zookeeper集群中的任何一台机器,其看到的服务器的数据模型是一致的。Zookeeper能够保证客户端请求的顺序,每个请求分配一个全局唯一的递增编号,用来反映事务操作的先后顺序。Zookeeper将全量数据保存在内存中,并直接服务于所有的非事务请求,在以读操作为主的场景中性能非常突出。 Zookeeper使用的数据结构为树形结构,根节点为"/"。Zookeeper集群中的节点,根据其身份特性分为leader、follower、observer。leader负责客户端writer类型的请求

SequoiaDB 3.0 正式发布,分布式OLTP场景实现MySQL协议级兼容

别来无恙 提交于 2019-12-02 08:00:08
SequoiaDB 巨杉数据库 3.0 ,在产品GA发布后,经过近半年在金融级场景的测试、上线和稳定运行之后,于近期正式发布。 1. SequoiaDB 3.0 产品定位 SequoiaDB巨杉数据库是一款金融级分布式数据库,包括了分布式NewSQL、分布式文件系统与对象存储、与高性能NoSQL三种存储模式,分别对应分布式在线交易、非结构化数据和内容管理、以及海量数据管理和高性能访问场景。 根据Gartner的数据库报告,Multi-model多模是未来10年,下一代分布式数据库发展的最主要方向。从1.0的高性能分布式 NoSQL数据库,到2.0加入的分布式对象存储,再到3.0完整协议级兼容MySQL,SequoiaDB经过6年的不断迭代创新,全面支持企业级结构化、半结构化以及非结构化数据存储。 SequoiaDB 3.0 产品维度 2. MySQL 完整协议级兼容 SequoiaDB 3.0实现了100%的MySQL协议级兼容: · 全面兼容:全面支持MySQL协议与语法,用户可以直接使用MySQL客户端或任何管理、开发与监控工具对数据库进行操作; · MySQL语法:由于使用了MySQL原生的解析器,SequoiaDB 3.0 能够实现100%的MySQL语法兼容,支持语法包括基础CRUD操作,多表关联,跨节点事务操作,创建视图,存储过程,索引和访问计划等。 · 无缝切换:

【技术教程】SequoiaDB对接Kafka

白昼怎懂夜的黑 提交于 2019-12-02 04:36:33
1、 背景 当前互联网、金融、政府等行业,活动流数据几乎无处不在。对这种数据通常的处理方式是先把各种活动以日志的形式写入某种文件,然后周期性地对这些文件进行统计分析。活动流数据的这种处理方式对实时性要求越来越高的场景已经不在适用并且这种处理方式也增加了整个系统的复杂性,为了解决这种问题,分布式开源消息系统Kakfa已被 多家不同类型的公司 作为多种类型的数据管道和消息系统使用。 Kafka是一种分布式的,基于发布/订阅的消息系统。提供消息持久化能力,支持消息分区,分布式消费,同时保证每个分区内的消息顺序传输,支持在线水平扩展、高吞吐率,同时支持离线数据处理和实时数据处理。 巨杉数据库SequoiaDB支持海量分布式数据存储,并且支持垂直分区和水平分区,利用这些特性可以将Kafka中的消息存储到SequoiaDB中方便业务系统后续数据分析、数据应用。本文主要讲解巨杉数据库SequoiaDB如何消费Kafka中的消息以及将消息存储到SequoiaDB中。 2、 产品介绍 巨杉数据库SequoiaDB是一款分布式非关系型文档数据库,可以被用来存取海量非关系型的数据,其底层主要基于分布式,高可用,高性能与动态数据类型设计,它兼顾了关系型数据库中众多的优秀设计:如索引、动态查询和更新等,同时以文档记录为基础更好地处理了动态灵活的数据类型。PostgreSQL支持标准SQL

云技术下的分布式数据库系统

为君一笑 提交于 2019-12-02 03:35:45
https://docs.ucloud.cn/database/uddb/concepts/method 传统单机数据库面临的挑战 以电商网站为例,在网站创建之初,日均访问量可能只有几百到几千人,这时整个业务后台可能就一个数据库,所有业务表都放在这个数据库中,一台普通的服务器就可以支撑,而且这种架构对业务开发人员也非常友好,因为所有的表都在一个库中,这样查询语句就可以灵活关联了,使用起来很便捷。如图1所示,所有业务表都在一个数据库中。 但是随着业务的不断发展,每天访问网站的人越来越多,数据库的压力也越来越大。通过分析发现,所有的访问流量中,80%以上都是读流量,只有20%左右的写流量,这时可以通过读写分离来缓解数据库的访问压力。如图所示为读写分离, 什么是UDDB? 由于网站的访问量越来越大,尽管采取了读写分离的方式,但随着数据库的压力继续增加,数据库的瓶颈越来越突出。这时我们发现,我们的网站演进到现在,交易、商品、用户的数据都还在同一个数据库中。然而在这个巨大而且臃肿的数据库中,表和表之间的数据很多是没有关系的,也不需要JOIN操作,理论上就应该把它们分别放到不同的服务器,如图所示为垂直分库。 随着业务的不断增长,我们发现交易、商品、用户这些库都变得巨大无比,单机数据库已经无法满足业务的继续增长,这时可以考虑对这些表进行水平拆分,即同一个表中的数据拆分到两个甚至多个数据库中

【入门教程】PostgreSQL+SequoiaDB HA 实践

喜夏-厌秋 提交于 2019-11-29 17:23:14
前言 SequoiaDB作为分布式数据库,从设计之初就已经支持SQL访问。目前,SequoiaDB自研的SQL访问组件SequoiaSQL作为企业版的功能之一已经提供给上百家企业用户使用,并且已经实现分布式架构下的SQL 2003支持。 对于SequoiaDB社区版用户,我们可以通过SequoiaDB对接PostgreSQL 实现社区版的分布式SQL访问。这一应用方式基本也可以满足大部分的社区版需求。 本文就主要探讨如何使用PostgreSQL引擎对接SequoiaDB社区版实现HA高可用架构。 操作环境介绍 在一台机上分别安装centos 6.5、SequoiaDB 2.6、postgresql 9.3.4 、pgpool II 3.6.2,其中SequoiaDB为默认安装,PostgreSQL数据库则手动安装,安装在不同的目录中,使用不同的端口号。pgpool II 3.6.2则单独手动安装一个,并设好免密认证。 注:需要先配好PostgreSQL数据库之间免密登录及关闭防火墙。 安装部署PostgreSQL复制流 1. PostgreSQL的安装 Step1 ./configure --without-readline --without-zlib --prefix=/opt/postgresql/data02/pgpool/master 注:--prefix=path

数据库行存储和列存储的区别

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-29 16:03:07
1、什么是行存储和列存储?   传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在。   列存储(Column-based)是相对于行存储来说的,新兴的 Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。 2、OLTP和OLAP   在数据库中,数据处理可分为两类:联机事务处理OLTP(on-line transaction processing)和联机分析处理OLAP(On-Line Analytical Processing),OLTP是传统关系型数据库的主要应用,用来执行一些基本的、日常的事务处理,比如数据库增、删、改、查等等,而OLAP则是分布式数据库的主要应用,它对实时性要求不高,但处理的数据量大,通常应用于复杂的动态报表系统上。   OLTP和OLAP的主要区别: 3、行存储和列存储的应用场景   行存储的适用场景:     (1)适合随机的增、删、改、查操作;     (2)需要在行中选取所有属性的查询操作;     (3

华为云数据库亮相下一代数据技术发展论坛,助力“数字一带一路”

眉间皱痕 提交于 2019-11-28 05:59:36
2019 年11月15日,在河南省教育厅的指导下,由中国计算机行业协会与河南省大中专学生就业服务中心联合举办的“下一代数据技术发展论坛暨IT名企专场招聘会”在郑州隆重举行。华为云数位资深数据库专家出席大会,不仅带来了华为云数据库的创新与实践的诸多技术干货分享,而且还带来了众多热门高薪岗位,引起大会的强烈反响,得到河南省各高等院校师生的一致好评。 华为云数据库专家技术布道 “下一代数据技术发展论坛”将紧紧抓住先进计算、物联网、大数据、人工智能、5G、数据库等方向技术发展的契机,探索下一代数据技术发展的新方向,新模式,新业态。会议上,华为云数据库专家深入解读了华为云数据库在分布式数据库领域和数据迁移领域的技术创新,针对数据上云的核心诉求,如数据迁移、数据同步、数据灾备等场景的核心难题,给出了华为云数据库的应对思路和实践,对企业上云有着重要的指导意义和参考价值。 华为云数据库荣获“下一代数据技术最佳创新突破奖” 每年举办一届的“下一代数据技术发展论坛”中,组委会都会从先进计算、物联网、大数据、人工智能、5G、数据库等领域的会员单位中选出有突出贡献的企业进行表彰。在本次论坛中,华为云数据库荣获由组委会颁发的“ 下一代数据技术最佳创新突破奖”,表彰华为云在 GeminiDB 、TaurusDB等数据库上敢于创新,勇于突破。 本次论坛特别开辟了华为云专场,邀请了华为云数据库专家与会。会上

分布式数据库系统

余生颓废 提交于 2019-11-28 04:28:18
一、分布式数据库系统 分布式数据库系统 分布式数据库系统: 物理上分散 而 逻辑上集中 的数据库系统. 物理上分散:指各站点分散在不同的地方,大可为不同国家,小可为同一建筑物的不同位置。 逻辑上集中:指各站点之间不是互不相关的,它们是一个逻辑整体,并由一个统一的分布式数据库管理系统进行管理。 分布式数据库系统 =硬件+软件(OS,Compiler,App.) +DB(全局DB ,局部DB ) +DBMS(全局DBMS ,局部DBMS ) +DBA(全局DBA ,局部DBA ) +用户(全局用户,局部用户) 同构型:如果各个站点上的数据库的数据模型都是同一数据模型的(例如都是关系型)的,则称为同构型分布式数据库系统。 同质型: 如果是同一种DBMS(例如有Oracle,DB2等),则称为同质的,否称为异质的. 分布式数据库系统和分散的数据库系统的区别? 如果用户既可以通过客户机对本地服务器中的数据库执行局部应用,也可以对两个或两个以上结点中的数据库执行全局应用,这样的系统是 分布式数据库系统 。 不支持全局应用的系统不能称为分布式数据库系统,即只是分散的数据库系统。 分布式的特征 场地自治性(Local Autonomy) 非集中式管理(NoReliance On Central Site) 高可靠性(Contiuous Operation) (连续运行) 位置独立性

分布式数据库主键id生成策略

孤街浪徒 提交于 2019-11-27 23:51:23
分布式数据库部署主要分为两种,一种是 读写分离 。这个需要弄主从数据库。主要是写的时候写主数据库,读的时候读从数据库。分散读取压力,对于读多写少的系统有利于 提高其性能。还有一种是 分布式存储 ,这种主要是将一张表拆分成多张分表部署到各个服务器中,主要针对写操作频繁的系统,如微博,淘宝的订单系统。 这两种方案都会遇到主键类型及生成方式的问题,还有主从数据库不同步和主键冲突问题。 主键类型主要有GUID和数字类型,这里我们不讨论GUID; 数字主键主要存在 唯一性、可同步性 两个方面的不足 可同步性:可以不使用主键自增方案。 唯一性:可以单独使用存储过程生成ID,设置主键ID的初始值步长和最大值,及所对应的表,当然主从数据库的主表和分表初始值和最大值是不一样的,一样的话会造成主键重复。 存储过程: -- ---------------------------- -- Procedure structure for getId -- ---------------------------- DROP PROCEDURE IF EXISTS `getId`; DELIMITER ;; CREATE DEFINER=`sawyer`@`%` PROCEDURE `getId`(OUT aId INT, OUT aIdEnd INT, aType TINYINT) BEGIN DECLARE