首页 > 编程知识 正文

分布式关系数据库,nosql数据库原理 侯宾

时间:2023-05-04 13:44:55 阅读:44902 作者:2183

分布式NoSQL数据库的基本概念NoSQL是什么? NoSQL是一些分布式非关系数据库的总称,它采用非关系数据模型,通过削弱架构或表结构,削弱一致性约束,削弱或废除事务机制,来完全解析SQL语句

——旨在提供强大的分布式部署功能,通常包括分区容错、可扩展性和访问效率(可用性)。

什么是HBase? 全名Hadoop数据库是Google BigTable的开源实现,是一个具有高可靠性、高性能、可伸缩性、实时读写和列存储的分布式NoSQL数据库。 因此,与Hive不同,它适合存储非结构化、半结构化数据,其次是完整的列存储,支持实时读写。 当然,它们都是分布式大数据产品,并且始终支持集群动态伸缩、可靠性高、性能优异的特点。

由于HBase数据以Key-Value格式存储并组织为二维表,因此HBase表的操作与关系数据库中的数据表略有相似,但基础存储格式完全不同,而且HBase与API

Hbase适用于存储半结构化的非结构化数据。 当然,HBase也支持结构化数据存储,但相对于关系数据库,它的方面不同。 关系数据库侧重于小型数据的在线事务处理(OLTP ),而HBase侧重于大量数据的实时读/写。

HBase的基础是使用HDFS作为文件存储系统,HDFS保证了数据的可靠性。

HBase的特点海量数据存储:HBase作为大数据NoSQL数据库,可以存储PB级以上的数据; 此外,基础以Key-Value格式存储,不支持SQL,因此适用于非结构化、半结构化数据存储。列式存储:在大数据领域,减少数据量可以提高列存储的性能。 例如,对某几列的数据进行单独运算时,如果基于行存储器,则需要将表的各行的数据读取到存储器中,然后提取所需列的数据,而列存储器直接将所需列加载到存储器中即可; 这是在大量数据的背景下提高了性能。

稀疏性:由于列存储方案,HBase中的数据稀疏存储(即值为空的数据)不占用存储空间。 对于行存储,每行的数据大小是固定的,因此即使某一行的字段中数据为空,也必须用占位符替换; 但是,对于列存储,每个列数据都放在一起,并为每个列数据单独编制索引。 如果字段数据为空,则没有线存储限制,也可以不进行存储。 列存储的稀疏性大大提高了磁盘空间在大量数据背景下的利用率。

33558www.Sina.com/:hbase数据存储在HDFS中,但使用LSM树将数据缓存在内存中,以便实时读写数据,并在缓存达到阈值后将其存储在HDFS中但是,HDFS不支持修改数据。 HBase实际上是将数据的修改操作,转换为追加操作,在修改后的数据上打上时间戳,读取数据时,只需要获取最新时间戳的数据即可。 这样会增加数据冗馀,HBase会定期合并HDFS数据并删除过期的数据。

数据实时随机读写:数据将一致更新,所有数据更改将同步。 此处的同步是指客户端和服务端两个级别。 这意味着当数据写入HBase时,所有客户端看到的数据都是最新的,h base service端群集中每个节点存储的数据也是最新的。 因为HBase的数据分布在不同的节点上,但对于某些特定的数据,HBase的数据必须位于某个从节点上; 既然这意味着只要更新了该节点的数据,所有后续访问都可以获得最新的数据,那么在分布式群集上,该从节点该怎么办? 数据的可靠性如何保证? HBase的数据最终存储在HDFS中,但HDFS有复制机制,HBase不需要担心数据的可靠性。

数据强一致性:首先,HBase是高并发的,主要面向高并发进行阅读,可以支持多用户查询。 这也是其应用场景之一; 其次,在大数据产品中,高可靠性、高可扩展性是必须具备的两个特性:服务可靠、灾难恢复,集群必须随着数据和处理规模的变化而动态扩展。

因此,总之,HBase作为存储系统,必然能够进行大量数据的存储; 对于这些存储的大量数据,列存储的特性会减少提取的数据量,大大提高处理性能,列存储直接带来稀疏的特性,从而提高磁盘利用率。 其次,HBase作为数据库,满足数据的实时随机读写,提供数据的强一致性保证。 最后,作为大数据系统,它具有高可靠性、高可扩展性和高并发性的优势。

适用场景

一般在企业生产中,在以下4个场景中使用HBase。

3358 www.Sina.com/:由于h base本身使用缓存机制,客户端可以在数据写入缓存后立即从缓存中进行读取,从而确保数据的一致性。 这不能由诸如Hive之类的专用于数据批处理的产品提供。 因此,HBase通常用于实时流处理场景中,存储结果数据或中间数据的流处理场景的数据具有高实时性,当前数据的处理结果被实时写入,且在写入之后立即到达下一个高并发、高可靠、高扩展

ng>:如果在海量数据场景中,有高并发查询的要求,比如需要保证1000人同时进行数据查询,那一定会考虑HBase。但要注意,只能满足简单条件的查询,因为HBase只有单个主键(RowKey),而对于其它字段进行条件查询时均会进行全表扫描,所以对于RowKey的优化是HBase性能提升的关键,这也是为什么HBase在复杂查询场景中性能不好的原因。半结构化和非结构化数据存储:HBase本身是NoSQL数据库,不像关系型数据库一样有多种数据类型,它所有的数据都是字节数组Byte[],所以能够满足半结构化、非结构化数据的存储,如JSON、日志、图片、音频的存储。对于小于100K的数据,HBase有较好的优化,对于100K-10M的数据,则需要开启MOB功能(这里先留个印象),超过10M的文件,性能上会有折损。动态DDL结构化数据存储:HBase虽然本质是Key-Value数据库,但它使用二维表的形式进行组织,所以也可以用于存储结构化数据。而且因为HBase列式存储的特性,所以表字段的变化对数据不造成影响,比如对表临时增加一个字段、删除一个字段,而在行式存储的数据库中,会造成很大的性能影响。这也就使得HBase极其适合表结构动态变化的场景,适应频繁的DDL操作,这在互联网场景业务不确定的情况下会有很大的帮助。 访问方式

HBase可以使用Shell命令直接进行操作,它和SQL语法不同,需要一定的学习成本,这是使用最多的一种方式。但如果集成了Apache Phoenix,则支持在HBase上直接使用SQL进行操作,Phoenix会自动完成转换操作,这种方式学习成本低,易用性强,很受企业开发者的青睐。当然对于开发人员,HBase也提供编程接口HBase API,来完成对HBase的操作。

基本对HBase有一个认识后,接下来学习一下HBase的数据模型和系统架构的内容。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。