NoSql的基本概念
什么是NoSQL:
NoSQL:即:not only SQL,非关系型数据库。
NoSQL是一个通用术语,指不遵循传统RDBMS模型的数据库,数据是非关系的,且不使用SQL作为主要查询语言;解决数据库的可伸缩性和可用性问题,不针对原子性或一致性问题。
为什么我们要使用NoSQL:
- 互联网的发展,传统关系型数据库存在瓶颈
- 高并发读写
- 高存储量
- 高可用性
- 高扩展性
- 低成本
NoSQL的特点
- 最终一致性
- 应用程序增加了维护一致性和处理事务等职责
- 冗余数据存储
- NoSQL != 大数据
- NoSQL产品是为了帮助解决大数据存储问题
- 大数据不仅仅包含数据存储的问题还有Hadoop、Kafka、Spark, etc
Nosql的分类和存储区别
Key-Value Stores
- The most common; not necessarily the mostpopular(最普遍的;不一定是最受欢迎的)
- Has rows each with something like a bigdictionary/associativearray(每个行都有一个大词典/关联数组)
- Common on cloud platforms(常见于云平台)
e.g. Amazon SimpleDB,Azure Table Storage(例如AmazonSimpleDB,Azure表存储) - MemcacheDBVoldemortCouchbaseDynamoDB(AWS)DynomiteRedis and Riak
Wide Column Stores
- Hastables with declared column families(具有声明列族的表)
- Each column family hascolumns"which are KV pairs that can vary from rowto row(每个列族都有“列”,这些列是KV对,可以在行与行之间变化)
- Calls column families“super columns" and tables“super column families”(将列族称为“超列”,将表称为“超列族”)
Document Stores
- Documents are typicallyJSONobjects(文档通常是JSON对象)
- Each document has properties andvalues(每个文档都有属性和值)
- Values can be scalars, arrays, links to documents in other databases or sub-documents(i.e.contained |SON objects-Allows for hierarchical storage)(值可以是数组、他数据库中的文档的链接或子文档(即包含JSON对象一-允许分层存储))
- Old versions are retained(保留旧版本)
- Most popular with developersshartusVCs(最受开发者、初创公司和风投公司欢迎)
- CouchDBMongoDBCouchBase
Nosql的分类和存储区别
Hbase介绍
什么是Hbase?
- HBase是一个领先的No-SQL数据库
- HBase is column-oriented database(HBase是面向列的数据库)
- HBase is a distributed hash map(HBase是一个分布式的HashMap)
- HBase is based on the Google Big Table paper(HBase基于Google Big Table论文)
- HBase uses HDFS as storage and leverage itsreliability(HBase使用HDFS作为存储并利用其可靠性)
- Data can be accessed quickly~2-20 millisecond response time(可以快速访问数据,响应时间约为2-20毫秒)
- Great support random read & write 20k to 100k+ops/sper node(非常好的支持随机读写每个节点20k到100k+ops/s相当于每秒10W次)
- Scales to 20000+nodes(可扩展至20个节点)
Hbase的用例
- Capturing Incremental Time Series Data(捕获增量数据-时间序列数据)
- High volume, high velocitywrites(高容量,高速写入)
- Information Exchange-Messaging(消息传递)
- High volume, high velocitywrite/read(高容量,高速写入/读取)
- Content Serving-Web Application Backend(内容服务-Web应用程序后端
- High volume, high velocity reads
HBase案例 - HBase in Alibaba Search
HBase is a core storage in Alibaba search systemsince2010(自2010年以来,HBase一直是阿里巴巴搜索系统的核心存储)
History Version
-20102014:0.20->0.94。20142015:094->0.98。2016 0.98->1.1.2
Current Scale(当前规模)
- 3 cluster each with 1000+nodes(3个集群,每个集群有1000多个节点
- Share with Flink on Yarn(在alibabaHbase和Fink在一台机器上,通过Hbase查询,Fink进行数据转换)
- Serving over 10M+/s operations everyday(每天提供超过10M+/s的操作,每秒超过1000W次的读写)
Hbase数据管理和体系结构优势
Data Management(数据管理)
- What is available is tracked in three locations(数据追踪)
- System catalog table hbase:meta(优先会查询HbaseMaster里面元数据)
- Files in HDFS directories(文件在对应的HDFS目录)
- Open region instances on servers(通过RegionServer找到Region)
Hbase的Shell操作和总结
- HBase Architecture Advantages(HBase体系结构优势)
- HBase provides the following benefits(HBase具有以下优点)
- Strong consistency model(健壮的一致性)
when a write returns, all readers will see same value - Scales automatically(自动扩展)
- Splits when regions become too large(当region变得太大时自动分裂)
- Uses HDFS to spread data and managespace(使用HDFS分散数据和管理空间) Built-in recovery(内置恢复)
- Using a Write Ahead Log,similar to journaling on file system(写日志,便于恢复) Integrated with Hadoop(与Hadoop集成)
- MapReduce on HBase is straightforward(HBase上的MapReduce非常简单)