分布式在线数据库学习 && 资料汇总

参考:

慕课网在线分布式数据库原理与实践

淘宝沈询博客

沈询微博

淘宝技术原理系列视频

在公司学习TDDL,无意间感觉这方面挺有意思的。

很多工程上的方案并不像论文上写的那样精准,要考虑的问你有很多,最后看到的方案比较粗暴、高效、精准性略低。

性能

易用

可运维、可监控

结果简单

组件化



内网上的课程笔记:

分布式存储原理与TDDL 地址

零、数据库提供功能

ACID中的事务(保证原子性),sql的查询、视图、存储过程。

数据库功能:K-V存储 关系代数和事务引擎 用户API

K-V存储关键

1. 范围查找

2. 处理更新

3. 读写性能

4. 面向磁盘

5. 并行指标

6. 内存占用

一、基本数据结构

数据库底层实现的角度来看问题。计算机中的大部分问题都是映射问题即K-V

查询分为两种:单值查询,范围查询。前者使用hash、后者使用树解决问题。

存储介质上,硬盘特性寻道和分块存储,内存是随机存储

跳表:解决链表不能二分查找的问题

B树 :解决二分查找且可插入。相对于二叉树,考虑到磁盘的特性读取块是性能瓶颈,因此树要矮,同时B树存在空间浪费情况,这在内存不可取。

LSM树:目前nosql中使用的数据结构,减少了随机性,但读取性能低于B-tree

二、关系代数即数据库如何使用映射

对于一条select * from table where id=? 处理

对于索引来说,主键建立索引支持范围

对于其他属性可以建立二级索引,对于项目少且常用的可以建立组合索引,或者单个索引,分步查找回表查找。

三、用户API即SQL引擎

将SQL语句转为AST,就可以做到有序分步执行。然后做执行计划(选取可以达到目标的最优方案,选取索引的顺序、步骤的顺序不唯一NP问题

利用SQL将数据库与应用业务隔离、降低耦合

eg:查找汽车轮子是name的轮子,如果仅仅是K-V就要查看所有的汽车然后再在其中查看轮子,若是关系代数模型就可以直接查找(name=xx)

四、分布式

核心问题:partion、replication。性能方面是网络和均衡

partion 如何路由:传统的就是K-V,一致性hash、路由hash

1. 传统K-V的扩容要成2倍的进行,这样就能保证只有一半的数据需要迁移,否则迁移数据会很多(机器数由3到4迁移60%)

2. 一致性hash

hashid=id%100;

if(hashid<25) return 0;

else if(hashid<50) return 1;

else if(hashid<75) return 2;

else return 3;

扩容的时候将字段范围拆分改变即可eg:<40 <50

3. 虚拟hash就是对应一张映射表,迁移的时候先将原先的对应关系放上去,这样平滑过渡,然后再修改

对于TDDL它的规则引擎就是简单hash,热点处理就是简单脚本判断。扩容过程:先将增量数据存储到本地,全量复制到新机器,数据校验,数据同步(可以选用原库停写等待追上)然后切换

replication中的一致性

1. 无主机模式R>N-W 读机器 总机器 写机器 。读几次能取到最新数据,适应于写多读少情况

eg:N=3,W=1,那么R>2 就要读3份。

eg:N=3,W=2,那么R>1 就要读2份。

2. 有主机模式,只有一台可写,Master管理多个slave。很好控制一致性。

实用:若主机挂掉就随机选响应的。

问题:

1. 读写不均衡

2. 单个节点死掉,导致雪崩

3. 突发情况的雪崩

TDDL

第一层Matrix 可以自动扩容,路径:SQL解析-规则引擎-执行-合并。路由到哪一组。

第二层group里面有主备,数据统一。读写分离,权重设置,读写切换,允许动态增加slave机器。

第三册Atom保护业务线程等等

数据增量复制:异构增量(买家分库卖家查询,评价被评价双维度)

使用:

1. 预估性能:数据从读取位置的时间预估到传输等等

2. 尽可能对一对多规则中的一进行数据切分

3. 使用数据增量复制的方式冗余数据进行查询,合理利用冗余减少网络

4. 尽可能在单机、内存、同一块中。

读取瓶颈:增加slave

写入瓶颈:用规则切分

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 09:59:44

分布式在线数据库学习 && 资料汇总的相关文章

[转]机器学习和深度学习资料汇总【01】

本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen

HBase全网最佳学习资料汇总

HBase全网最佳学习资料汇总 摘要: HBase这几年在国内使用的越来越广泛,在一定规模的企业中几乎是必备存储引擎,互联网企业阿里巴巴.百度.腾讯.京东.小米都有数千台的HBase集群,中国电信的话单.中国人寿的保单都是存储在HBase中. 前言 HBase这几年在国内使用的越来越广泛,在一定规模的企业中几乎是必备存储引擎,互联网企业阿里巴巴.京东.小米都有数千台的HBase集群,中国电信的话单.中国人寿的保单都是存储在HBase中.注意大公司有数十个数百个HBase集群,此点跟Hadoop集

Java 8 学习资料汇总【转载】

原文地址 2014年3月18日,Java SE 8 发布,而 Java 9 预期2016年发布: 2009年12月,Java EE 6发布: 2004年9月,J2SE 1.5发布: 2000年5月,JDK1.3.JDK1.4 相继发布: 1996年1月,JDK1.0发布: 1995年5月23日,Java 语言正式诞生. 本文首发于 jOOQ博客的 Java 8 Friday系列,经原作者 Data Geekery GmbH 授权由InfoQ中文站编译并分享. Java 8 发布已经有一段时间,它

前端学习资料汇总(转)

前端学习资料汇总(转) http://www.w3cfuns.com/blog-5402109-5400901.html 端工具: can i see :http://caniuse.com/  ——一个查看css及html5在各个浏览器及手机端的支持情况 前端视野:——平时可以多看看的网站了解下最新资讯前端观察站,腾讯的前端技术,挺有含金量:html5 中国:   http://www.html5cn.org/   ——有很多html及css小知识的网站,建议多浏览web前端开发   http

d3可视化实战00:d3的使用心得和学习资料汇总

最近以来,我使用d3进行我的可视化工具的开发已经3个月了,同时也兼用其他一些图表类库,自我感觉稍微有点心得.之前我也写过相关文章,我涉及的数据可视化的实现技术和工具,但是那篇文章对于项目开发而言太浅了.于是想写关于d3进行项目实战的系列文章,就像我之前的angularjs实战系列文章一样把整个开发过程中遇到的各种问题及解决办法梳理成章,以为留存.作为开篇,我还是想先把这段时间来我一直参考的资料做一个整理,并谈一些宏观的体会. 一.前方有坑,注意! ————————————————————————

Java 8学习资料汇总

Java 8发布已经有一段时间,它被认为是Java 5发布以来最大的一次版本升级.Java 8 为Java语言.编译器.类库.开发工具以及JVM(Java虚拟机)带来了大量新特性.Lambda表达式.默认方法.并行API等都受到了开发者的追捧,社区上关于Java 8的学习资料如雨后春笋般涌现.下面是一些优秀的学习资料汇总: Brian Goetz在Stack Overflow上的回答Brian是<Java并发编程实战>的作者之一,有20多年的软件咨询行业经验.Brian是JSR 335的带头者

Apple Swift学习资料汇总

[更新]Apple Swift学习资料汇总 1月16日厦门 OSC 源创会火热报名中,奖品多多哦 »   今年的苹果开发者大会(WWDC)上,公布了ios8的几个新特性,其中包括引入了群聊功能,支持第三方输入法等功能.但更让开发者感兴趣的莫过于Swift语言的发布了. Swift是apple自创的一门转为cocoa和cocoa touch设计的语言,意用来替换objc.Swift能使代码大量简化,并且开发者们可以在同一款软件中同事使用obj-c,Swift,c语言.方便 开发者来学习这么语言.这

【转】机器学习最佳入门学习资料汇总

机器学习最佳入门学习资料汇总 专为机器学习初学者推荐的优质学习资源,帮助初学者快速入门. 这篇文章的确很难写,因为我希望它真正地对初学者有帮助.面前放着一张空白的纸,我坐下来问自己一个难题:面对一个对机器学习领域完全陌生的初学者,我该推荐哪些最适合的库,教程,论文及书籍帮助他们入门? 资源的取舍很让人纠结,我不得不努力从一个机器学习的程序员和初学者的角度去思考哪些资源才是最适合他们的. 我为每种类型的资源选出了其中最佳的学习资料.如果你是一个真正的初学者,并且有兴趣开始机器学习领域的学习,我希望

【荐】Redis学习资料汇总

Redis学习手册(目录) - Stephen_Liu - 博客园 Redis 命令参考 - Redis 命令参考 Redis_php 学习 - 简单--生活 - 博客园 [荐]Redis学习资料汇总,布布扣,bubuko.com