《NoSQL实战:企业级大数据应用开发入门、实战与进阶》(WIP)

《NoSQL实战:企业级大数据应用开发入门、实战与进阶》

参考资料

https://db-engines.com/en/ranking

数据简史

数据库的诞生

数据库王者:关系数据库与SQL

大数据时代:NoSQL横空出世

如何学习和使用NoSQL数据库

数据存储基础知识

事务

ACID

并发操作与锁

CAP

BASE

NoSQL:创造数据世界新秩序

NoSQL是什么

NoSQL特性

NoSQL数据库分类

NoSQL使用场景

NoSQL生态

NoSQL在国内使用案例介绍

NoSQL在国外使用案例介绍

基于内存键值数据库Redis实现分布式锁和缓存

Redis简介

Redis概述

Redis特性

Redis基本用法

Redis适用场景

项目实战一:实现分布式锁

项目实战二:实现分布式缓存

基于OLAP数据库ClickHouse实现DMP用户标签圈选洞察平台

ClickHouse简介

ClickHouse概述

ClickHouse特性

ClickHouse基本用法

ClickHouse适用场景

基于宽列存储数据库HBase实现在线数据查询服务

https://hbase.apache.org/

HBase简介

HBase概述

宽列式数据库,基于Apache Hadoop和BigTable的概念。

Apache HBase是一种NoSQL键/值存储系统,它在Hadoop分布式文件系统(HDFS)上运行。

HBase特性

不像Hive,HBase操作在数据库上,而不是MapReduce作业上实时运行。
HBase分成表,表又细分成列族(column family)。列族必须在模式中加以声明,它将某一组列(列不需要模式定义)分为小组。比如说,“message”列族可能包括以下这几列:“to”、“from”、“date”、“subject”和“body”。HBase中的每个键/值对被定义为一个单元(cell),每个键含有行键、列族和时间戳。HBase中的行是一组键/值映射,由行键来识别。HBase可以使用Hadoop的基础设施,并使用现成服务器实现横向扩展。

HBase的工作方式是,将数据存储为键/值。它支持四种主要的操作:添加或更新行的put,检索一组单元的scan,返回某个指定行的单元的get,以及从表上删除行、列或列版本的delete。拥有版本控制功能,那样可以获取数据的之前值(历史记录可以通过HBase压缩时不时删除,以释放空间)。虽然HBase包括表,但只有表和列族才需要模式,列不需要模式,它还包括增量/计数器功能。

HBase基本用法

HBase查询用一种需要学习的自定义语言来编写。可以通过Apache Phoenix,获得类似SQL的功能,不过其代价是需要维护模式。此外,HBase并不完全符合ACID,不过它确实支持某些属性。最后但并非最不重要的是,为了运行HBase,就需要ZooKeeper――这是面向分布式协调的服务器,比如配置、维护和命名。

HBase最适合大数据的实时查询。Facebook将它用于消息传递和实时分析。Facebook甚至将它用于计数Facebook点赞。

Hbase有集中式架构, Master服务器负责监控集群中的所有RegionServer(负责服务和管理区域)实例,它也是查看所有元数据变化的界面。它提供了CAP原理中的CP(一致性和可用性)。

HBase针对读取操作进行了优化,得到单次写入master的支持,支持因而获得的严格一致性模型,以及使用支持行扫描的顺序分区(Ordered Partitioning)。HBase很适合执行基于范围的扫描。

线性可扩展性,支持大表和范围扫描--由于顺序分区,HBase很容易横向扩展,同时仍支持行键范围扫描。

辅助索引--Hbase并不直接支持辅助索引,但触发器的一个使用场合是,“put”方面的触发器会自动确保辅助索引是最新版本,因而并不给应用程序(客户端)添加负担。

简单聚合--Hbase Co Processors支持HBase中的即开即用的简单聚合。SUM、MIN、MAX、AVG和STD。如果定义java类,就可以构建其他聚合,从而执行聚合操作。

实际应用:Facebook Messanger

HBase适用场景

搭建开发环境

基于搜索引擎 ElasticSearch 实现商品搜索

https://nladuo.github.io/2018/01/05/%E4%BD%BF%E7%94%A8ElasticSearch%E6%9E%84%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%AE%8C%E6%95%B4%E7%9A%84%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/

ElasticSearch简介

ElasticSearch概述

ElasticSearch特性

ElasticSearch基本用法

ElasticSearch适用场景

搭建开发环境

基于文档数据库MongoDB实现商品评论管理

https://developer.aliyun.com/article/64352
https://www.zhihu.com/question/32071167

MongoDB简介

MongoDB概述

MongoDB特性

MongoDB基本用法

MongoDB适用场景

MongoDB项目实战

搭建开发环境

基于宽列存储数据库Cassandra实现在线交易系统

Cassandra简介

https://cassandra.apache.org/_/index.html
https://developer.aliyun.com/article/713847
https://www.cnblogs.com/datastax/p/14160683.html

Cassandra(卡珊德拉)是希腊神话中特洛伊国王普里阿摩斯的女儿,她是一个具有预言能力的先知,却因受到阿波罗诅咒,其预言永远不得被人们相信。Cassandra预见到了特洛伊城的毁灭,却因无人相信而无力阻止。

有人曾这样评述卡珊德拉:她和古希伯来的众先知一样直视事理的真相,不论过去、现在或未来;但是她的明晰无误的眼力,和她心中负荷的宇宙事理的可怖奥秘,却使她隔绝于正常的人生,使她在世人眼中成了个疯子。这便是古来先知们一再遭遇的命运。

虽然Cassandra作为先知不被人相信,但是作为一种面向未来的技术,越来越多的开发者和科技公司已经看到了Cassandra的价值并且从中受益。

Cassandra简介

Apache Cassandra是一种开源的、分布式的NoSQL数据库。它最早是由Facebook内部开发,后来于2008年7月公开了源码。

Cassandra不仅具有现代应用所要求的持续可用性(没有宕机时间)、高性能以及线性扩展的特点,其操作也十分简易,而且可以便捷地跨数据中心和跨区域进行数据复制。

Cassandra可以支持PB级别的信息处理,也可以负载每秒上百万条的并发操作。强大的功能使得Cassandra能够帮助企业和组织在多云及混合云架构中处理巨量的数据。

作为一个在Cassandra这项技术上深耕十余年的企业,DataStax致力于同开源社区一起开创属于Cassandra的世代,并巩固其在云原生应用数据库中的领先地位。

Cassandra最早是由Facebook工程师Avinash Lakshman和Prashant Malik开发,用于提高Facebook邮件收件箱的搜索功能。通过使用Cassandra,用户可以更快地找到他们需要的邮件和内容。

Cassandra的架构结合了亚马逊Dynamo论文中提出的分发模型和Google BigTable论文中描述的日志结构存储引擎(log-structured storage engine),从而实现了在不同节点间的横向拓展。其结果是Cassandra作为一种高可拓展性的数据库,能搞定大多数数据量巨大及性能密集型的使用场景。

2008年7月,Facebook公开了Cassandra的源码。2009年3月,Cassandra成为了Apache孵化器的开源项目。之后在2010年4月,Cassandra从Apache孵化器毕业,成为了Apache基金会的最高级别项目之一。时至今日,Cassandra在Apache许可证2.0版本下可自由使用。

https://www.infoq.cn/article/j0mfq1cntskbk5rbdpvl

在《Cassandra The Definitive Guide》这本书里,有一段概括性的描述,即用 50 个 word 描述 Cassandra。它归纳了 Cassandra 的几大特性,依次为:开源、分布式、去中心化、可扩展性、高可用、容错性、可配置的一致性、行存储。

我把这几大特性分为四类:

第一类开源,这个不需要讨论。其余的三类 7 个特性,就是选讲的核心提纲。

第二类是高可用、容错性、可配置的一致性,这是围绕着多节点冗余数据的特性,换句话说,如果 Cassandra 的数据,每一行数据只有一份而没有副本,那么第二类特点就是不存在的。

第三类是分布式、去中心化、可扩展性,这三个特点围绕的是数据库的可拆分性,且各节点可以独立运行的能力。若只装一个单机的 Cassandra,那这一类特点就不存在。

第四类是行存储,是描述数据库底层存放数据的最基本的存储结构特征,也是我切入的第一个特征。

Cassandra概述

宽列式数据库,基于BigTable和DynamoDB的概念。

Apache Cassandra是一种主要的NoSQL分布式数据库管理系统,它支撑着如今的许多现代商务应用系统,它提供了持续可用性、高扩展性和高性能、强安全性和操作简单性,同时降低了总体拥有成本。

Cassandra特性

https://www.infoq.cn/article/j0mfq1cntskbk5rbdpvl

Cassandra基本用法

Cassandra适用场景

Cassandra项目实战

搭建开发环境

https://cassandra.apache.org/_/quickstart.html

基于图数据库Neo4j实现知识图谱

Neo4j简介

Neo4j概述

Neo4j特性

Neo4j基本用法

Neo4j适用场景

搭建开发环境

你可能感兴趣的:(《NoSQL实战:企业级大数据应用开发入门、实战与进阶》(WIP))