数据库分区

深入学习Redis(5):集群

匿名 (未验证) 提交于 2019-12-03 00:43:02
原文: 深入学习Redis(5):集群 前言 在前面的文章中,已经介绍了Redis的几种高可用技术:持久化、主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡。 Redis集群解决了上述问题,实现了较为完善的高可用方案。本文将详细介绍集群,主要内容包括: 集群的作用;集群的搭建方法及设计方案;集群的基本原理;客户端访问集群的方法;以及其他实践中需要的集群知识(集群扩容、故障转移、参数优化等) 。 系列文章 深入学习Redis(1):Redis内存模型 深入学习Redis(2):持久化 深入学习Redis(3):主从复制 深入学习Redis(4):哨兵 深入学习Redis(5):集群 Ŀ¼ 一、集群的作用 二、集群的搭建 1. 执行Redis命令搭建集群 2. 使用Ruby脚本搭建集群 3. 集群方案设计 三、集群的基本原理 1. 数据分区方案 2. 节点通信机制 3. 数据结构 4. 集群命令的实现 四、客户端访问集群 1. redis-cli 2. Smart客户端 五、实践须知 1. 集群伸缩 2. 故障转移 3. 集群的限制及应对方法 4. Hash Tag 5. 参数优化 6. redis-trib.rb 参考文献 一、集群的作用 集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。

CAP理论

匿名 (未验证) 提交于 2019-12-03 00:30:01
CAP理论 小结: Consistency 一致性 就是数据的一致性。一致性根据时间长短来达到一致性,又分为 强,弱,最终一致性 Availability 可用性 可用性是针对用户角度,发送一个请求,一定回复。保证这一点就是可用性 分区容错性 就是分布式节点中 某一个节点挂了,系统还能满足一致性和可用性 CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。 CP without A:如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。 AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。 因为 AP更为重要 所以一般都是C,使用最终以执行 版权 我仅对文章的排版和部分文字进行了润色 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy

AWS DynamoDB基础使用

匿名 (未验证) 提交于 2019-12-03 00:22:01
因AWS并没有提供mongodb的云服务。所以需要将数据库从mongodb切换到AWS 的dynamodb。 Dynamodb 提供了本地调试版本,本文主要介绍dynamodb本地调试使用。 PS:说句题外话,刚接触感觉很难用,文档感觉已经很久没有维护了。 数据库环境:Linux(Dynamodb环境) server环境:AWS SDK server端语言: nodejs(ubuntu) Amazon DynamoDB是一款完全托管的NoSQL数据库服务,可提供快速,可预测的性能和无缝可扩展性。 DynamoDB 几个概念:tables, items, and attributes。(表,项目和属性) Table是一个item集合, 每个item又是attributes集合。可以对应理解为mongodb中 集合 文档 属性。 例: People表中的某个项目包含名为PersonID,LastName, FirstName等的属性。 DynamoDB不像mongodb默认情况下会生成_id来唯一标识某条数据。所以在DynamoDB中就有了主键的概念。 指定表的主键。主键唯一标识表中的每个项目。(指定某个属性为主键) DynamoDB支持两种不同的主键: 1 分区键 DynamoDB使用分区键的值作为内部散列函数的输入。散列函数的输出确定项目将存储在其中的分区

Oracle入门(十二F)之表分区

匿名 (未验证) 提交于 2019-12-03 00:22:01
转载自 一、分区表基础知识 (1) 表空间及分区表的概念 表空间:   是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。 (2)表分区的具体作用 Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。 分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。 什么时候使用分区表: 1、表的大小超过2GB。 2、表中包含历史数据,新的数据被增加都新的分区中。 1、改善查询性能

FreeSql (三十)分区分表

匿名 (未验证) 提交于 2019-12-03 00:08:02
分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,数据库不同实现方式有所不同。 与分表不同,一张大表进行分区后,他还是一张表,不会变成二张表,但是他存放数据的区块变多了。分区的概念,我觉得就想突破磁盘I/O瓶颈,想提高磁盘的读写能力,来增加数据库的性能。 分区实现是比较简单的,建立分区表,根建平常的表没什么区别,并且对开发代码端来说是透明。 postgresql10以上的自动分区分表功能: 1、首先创建主分区表: create table fenbiao ( id int , year varchar ) partition by list ( year ) 这里设置的是根据year列进行数据分表;创建后使用navicat是看不到的; 2.创建分表: create table fenbiao_2017 partition of fenbiao for values in ( '2017' ); create table fenbiao_2018 partition of fenbiao for values in ( '2018' ); 这样这两天数据会依靠规则插入到不同分表中,如果插入一条不符合规则的数据,则会报错误:no partition of relation "fenbiao"

4. Spark SQL数据源

匿名 (未验证) 提交于 2019-12-02 23:52:01
      Spark SQL的DataFrame接口支持多种数据源的操作。一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表。把DataFrame注册为临时表之后,就可以对该DataFrame执行SQL查询       Spark SQL的默认数据源为Parquet格式。数据源为Parquet文件时,Spark SQL可以方便的执行所有的操作。修改配置项spark.sql.sources.default,可修改默认数据源格式 val df = spark.read.load("examples/src/main/resources/users.parquet") df.select("name","favorite_color").write.save("namesAndFavColors.parquet")       当数据源格式不是parquet格式文件时,需要手动指定数据源的格式。数据源格式需要指定全名(例如:org.apache.spark.sql.parquet),如果数据源格式为内置格式,则只需要指定简称定json,parquet,jdbc,orc,libsvm,csv,text来指定数据的格式       可以通过SparkSession提供的read.load方法用于通用加载数据,使用write和save保存数据 val peopleDF =

hive动态分区与静态分区

匿名 (未验证) 提交于 2019-12-02 23:47:01
测试目的: 1.分区表的动态分区与静态分区 2.每层数据,数据流向,数据是否在每层都保留一份 测试结果: 1.动态分区/静态分区略 2.每层表的数据都会保留,因此在生产上odm层的数据是可以删除的(不管是内表还是外表) 数据源: 1,jack,shanghai,20190129 2,kevin,beijing,20190130 3,lucas,hangzhou,20190129 4,lily,hangzhou,20190130 1. 创建数据库 create database TestFenQu; 2. 创建源数据表(外表) create external table TestFenQu.dept( id int, name string, address string, day string ) row format delimited fields terminated by ','; 加载数据: load data local inpath '/home/kong/test.dat' into table TestFenQu.dept; 3. 创建分区表1(外表) create external table TestFenQu.dept_part( id int, name string, address string )partitioned by(day string)

分布式CAP定理

匿名 (未验证) 提交于 2019-12-02 23:42:01
根据百度百科的定义,CAP定理又称CAP 原则 ,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得。 一、CAP的定义 Consistency (一致性): “all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。 Availability (可用性): 可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。 Partition Tolerance (分区容错性): 即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。 分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了

Spark学习之路(十)―― Spark SQL 外部数据源

匿名 (未验证) 提交于 2019-12-02 23:38:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37809146/article/details/91281766 一、简介 1.1 多数据源支持 Spark支持以下六个核心数据源,同时Spark社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景。 CSV JSON Parquet ORC JDBC/ODBC connections Plain-text files 注:以下所有测试文件均可从本仓库的 resources 目录进行下载 1.2 读数据格式 所有读取API遵循以下调用格式: // 格式 DataFrameReader.format(...).option("key", "value").schema(...).load() // 示例 spark.read.format("csv") .option("mode", "FAILFAST") // 读取模式 .option("inferSchema", "true") // 是否自动推断schema .option("path", "path/to/file(s)") // 文件路径 .schema(someSchema) // 使用预定义的schema .load() 读取模式有以下三种可选项: 读模式 描述 permissive 当遇到损坏的记录时

hive元数据

匿名 (未验证) 提交于 2019-12-02 23:26:52
本文介绍Hive元数据库中一些重要的表结构及用途,方便Impala、SparkSQL、Hive等组件访问元数据库的理解。 1、存储Hive版本的元数据表(VERSION) 该表比较简单,但很重要。 VER_ID SCHEMA_VERSION VERSION_COMMENT ID主键 Hive版本 版本说明 1 1.1.0 如果该表出现问题,根本进入不了Hive-Cli。比如该表不存在,当启动Hive-Cli时候,就会报错”Table ‘hive.version’ doesn’t exist”。 2、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS) DBS:该表存储Hive中所有数据库的基本信息,字段如下: 表字段 说明 示例数据 DB_ID 数据库ID 1 DESC 数据库描述 DB_LOCATION_URI 数据HDFS路径 hdfs://193.168.1.75:9000/test-warehouse NAME 数据库名 default OWNER_NAME 数据库所有者用户名 public OWNER_TYPE 所有者角色 ROLE DATABASE_PARAMS:该表存储数据库的相关参数,在CREATE DATABASE时候用WITH DBPROPERTIES(property_name=property_value, …)指定的参数。 表字段 说明