HBase简介2
HBase简介2 HBase是什么? HBase 是Apache Hadoop中的一个子项目,HBase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据存储文件夹的结构,还可以通过Map/Reduce框架(算法)对HBase进行操作,如下图所示: HBase 在
HBase简介2
HBase是什么?
HBase是Apache Hadoop中的一个子项目,HBase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据存储文件夹的结构,还可以通过Map/Reduce框架(算法)对HBase进行操作,如下图所示:
HBase在产品中还包含了Jetty,在HBase启动时采用嵌入式的方式来启动Jetty,因此可以通过web界面对HBase进行管理和查看当前运行的一些状态,非常轻巧。
为什么采用HBase?
HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方便读写你的大数据内容。
HBase是介于Map Entry(key & value)和DB Row之间的一种数据存储方式。这点有点类似于现在流行的Memcache,但不仅仅是简单的一个key对应一个 value,你很可能需要存储多个属性的数据结构,但没有传统数据库表中那么多的关联关系,这就是所谓的松散数据。
简单来说,你在HBase中的表创建的可以看做是一张很大的表,而这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间关联查询。你只需要告诉你的数据存储到HBase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事务此类的功能。
Apache HBase和Google Bigtable有非常相似的地方,一个数据行拥有一个可选择的键和任意数量的列。表是疏松的存储的,因此用户可以给行定义各种不同的列,对于这样的功能在大项目中非常实用,可以简化设计和升级的成本。
列式数据库
列式数据库是以列相关存储架构进行数据存储的数据库,主要适合与批量数据处理和即席查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合与小批量的数据处理,常用于联机事务型数据处理。
描述
数据库以行、列的二维表的形式存储数据,但是却以一维字符串的方式存储,例如以下的一个表:
EmpId |
Lastname |
Firstname |
Salary |
1 |
Smith |
Joe |
40000 |
2 |
Jones |
Mary |
50000 |
3 |
Johnson |
Cathy |
44000 |
这个简单的表包括员工代码(EmpId),姓名字段(Lastname and Firstname)及工资(Salary).
这个表存储在电脑的内存(RAM)和存储(硬盘)中。虽然内存和硬盘在机制上不同,电脑的操作系统是以同样的方式存储的。数据库必须把这个二维表存储在一系列一维的“字节”中,由操作系统写到内存或硬盘中。
行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。
<span> </span>1,Smith,Joe,40000;
<span> </span>2,Jones,Mary,50000;
<span> </span>3,Johnson,Cathy,44000;
列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。
<span> </span>1,2,3;
<span> </span>Smith,Jones,Johnson;
<span> </span>Joe,Mary,Cathy;
<span> </span>40000,50000,44000;
这只是一个简化的说法。此外,partitioning, 索引,缓存机制,视图, 联机分析多维数据集,以及诸如 预写式日志 和 multiversion concurrency control 此类的事务系统都在现实的应用环境中发挥作用。一般来说,侧重于联机事务处理 (OLTP)的系统更适用行数据库,而侧重于联机分析处理 的系统就必须在行数据库和列数据库中找到适当得平衡。
特点
因为硬盘寻址时间相较于计算机上其他部件的运行速度来说慢的不是一般,所以常用相同工作负载下的硬盘访问性能来比较行数据库和列数据库。通常,顺序读取数据要比随机访问更快[1]。而且,硬盘寻址时间的提升比起CPU速度的进步要慢得多 (参看 摩尔定律),在使用硬盘作为存储媒介的系统上这种情况很可能还会持续一段时间。下面简单罗列了一些选择行数据库还是列数据库的权衡依据。当然,如果能够把数据全放在内存中,那么使用内存数据库性能会更好。
1. 在只需要根据某几列来聚合数据的时候按列的数据组织方式更有效。因为这样只需要读取一部分数据,要比读取全部数据更快.
2. 当只需要修改某一列值的时候按列的数据组织方式更有效。因为可以直接找到某列数据并修改,而与行中的其他列无关。
3. 当需要某行的多列数据的时候按行的数据组织方式更有效。当行中数据不是太多的情况下一次硬盘寻址就可以获得该行的所有数据。
4. 在新增行数据的时候,如果各列都有值,那么按行的数据组织方式会更有效,因为只需要一次硬盘寻址就可以写入整行的全部数据.
在实际应用中,面向行的数据存储架构更适用于OLTP-频繁交互事务的场景。面向列的数据存储架构更适用于OLAP-(如数据仓库)这样在海量数据((可能达到 terabyte规模:1TB=1000G))中进行有限复杂查询的场景。
列存储的好处:
1. 由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的;
2. 按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;
3. 一个字段的数据聚集存储,更容易为这种聚集存储设计更好的压缩/解压算法。
下图讲述了传统的行存储和列存储的区别:

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

要在 Apache 中设置 CGI 目录,需要执行以下步骤:创建 CGI 目录,如 "cgi-bin",并授予 Apache 写入权限。在 Apache 配置文件中添加 "ScriptAlias" 指令块,将 CGI 目录映射到 "/cgi-bin" URL。重启 Apache。

有 3 种方法可在 Apache 服务器上查看版本:通过命令行(apachectl -v 或 apache2ctl -v)、检查服务器状态页(http://<服务器IP或域名>/server-status)或查看 Apache 配置文件(ServerVersion: Apache/<版本号>)。

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。

当 Apache 80 端口被占用时,解决方法如下:找出占用该端口的进程并关闭它。检查防火墙设置以确保 Apache 未被阻止。如果以上方法无效,请重新配置 Apache 使用不同的端口。重启 Apache 服务。

如何查看 Apache 版本?启动 Apache 服务器:使用 sudo service apache2 start 启动服务器。查看版本号:使用以下方法之一查看版本:命令行:运行 apache2 -v 命令。服务器状态页面:在 Web 浏览器中访问 Apache 服务器的默认端口(通常为 80),版本信息显示在页面底部。

Apache 无法启动,原因可能有以下几点:配置文件语法错误。与其他应用程序端口冲突。权限问题。内存不足。进程死锁。守护进程故障。SELinux 权限问题。防火墙问题。软件冲突。

如何在 Apache 中配置 Zend?在 Apache Web 服务器中配置 Zend Framework 的步骤如下:安装 Zend Framework 并解压到 Web 服务器目录中。创建 .htaccess 文件。创建 Zend 应用程序目录并添加 index.php 文件。配置 Zend 应用程序(application.ini)。重新启动 Apache Web 服务器。

要从 Apache 中删除多余的 ServerName 指令,可以采取以下步骤:识别并删除多余的 ServerName 指令。重新启动 Apache 使更改生效。检查配置文件验证更改。测试服务器确保问题已解决。
