数据库排名:https://db-engines.com/en/ranking
| RDBMS | NoSQL |
|---|---|
| 关系数据库管理系统 | 非关系型数据库。Not only SQL不仅仅是SQL 。 |
| 结构化查询语言 | 没有声明性查询语言 |
| 数据和关系都存储在单独的表中 | 键 - 值对存储,列存储,文档存储,图形数据库 |
| ACID | CAP定理 |
| 严格的一致性 | 最终一致性,而非ACID属性 |
问题1:网络带宽越来越大,怎么提升系统的处理能力?
采用分布式计算,解决单机性能不足问题。(Spark streaming)
问题2:用户对上网日志、原始数据的存储查找需求越来越高,合适的大数据存储方案。
大数据存储技术(HDFS、Hbase、Elasticsearch、Mycat)
问题3:需加强基于海量数据的价值信息提取、深入分析。
加强离线计算、分析能力。(Mapreduce、)Spark
http://www.360doc.com/content/16/1012/21/35463447_597955136.shtml
CAP定理CAP定理它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
一致性(Consistency) :所有节点在同一时间具有相同的数据
可用性(Availability) :保证每个请求不管成功或者失败都有响应
分区容错性(Partition tolerance) :系统中任意信息的丢失或失败不会影响系统的继续运作
CAP理论的核心是,一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
| C | A | P | |
|---|---|---|---|
| ✅ | ✅ | CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。 | |
| ✅ | ✅ | CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。 | |
| ✅ | ✅ | AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。 |
base:Basically Available, Soft-state, Eventually Consistent。
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
base是NoSQL数据库通常对可用性及一致性的弱要求原则:
- Basically Available --基本可用
- Soft-state --软状态/柔性事务。 “Soft state” 可以理解为"无连接"的, 而 “Hard state” 是"面向连接"的
- Eventually Consistency – 最终一致性, 也是 ACID 的最终目的。
ACID vs base
| ACID | base |
|---|---|
| 原子性(Atomicity) | 基本可用(Basically Available) |
| 一致性(Consistency) | 软状态/柔性事务(Soft state) |
| 隔离性(Isolation) | 最终一致性 (Eventual consistency) |
| 持久性 (Durable) |
| 实例 | 应用场景 | 数据模型 | 优点 | 缺点 | |
|---|---|---|---|---|---|
| k-v模型 | Radis Memcached | 内容缓存,主要用于处理大数据的高访问负载 | key-value键值对 | 可以通过key快速查询到其value。 | |
| 列式模型 | Hbase(Hadoop Database) BigTable(Google) Cassandra(Twitter) | 分布式文件系统 | 以列存储,将同一列数据存储在一起 | 方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 | |
| 文档模型 | MongoDB CouchDB | Web应用 | JSON格式的文档 | 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。 | |
| 图形模型 | Neo4j | 社交网络 | 节点+边 |
性能参数
PV(Page View):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次。
在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计。
UV(Unique Visitor):独立访客,统计1天内访问某站点的用户数(以cookie为依据)。
访问网站的一台电脑客户端为一个访客。可以理解成访问某网站的电脑的数量。网站判断来访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。如果用户不保存cookies访问、清除了cookies或者更换设备访问,计数会加1。00:00-24:00内相同的客户端多次访问只计为1个访客
吞吐量:吞吐量是指系统在单位时间内处理请求的数量
TPS(Transactions Per Second):每秒事务数
QPS(Query Per Second):每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求。
峰值QPS:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
并发数:并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。
响应时间(RT):响应时间是指系统对请求作出响应的时间,一般取平均响应时间
QPS(TPS)、并发数、响应时间它们三者之间的关系是
QPS(TPS)= 并发数 / 平均响应时间
并发数 = QPS * 平均响应时间
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
例如:https://kb.cnblogs.com/page/503317/
如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时。
采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型)
而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,10小后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务
一:流数据–Hbase存储数据、Elasticsearch存储索引
Hbase :
存储速度快、扩展性好、毫秒级随机读取。
结构化多条件查询性能不足。
Elasticsearch:
索引能力强,支持全文搜索和结构化搜索。
文档数据量大时效率降低。
二:数据包–Spark分布式计算框架



