多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP数据库与数据仓库的区别

时间:2017-07-26 18:02:12 [来源]:郑州PHP培训学校

   PHP数据库与数据仓库的区别

  首先,定义三个概念:数据库软件、数据库、数据仓库。
  数据库软件:是一种软件,可以看得见,可以操作。用来实现数据库逻辑功能。属于物理层。
  数据库:是一种逻辑概念,用来存放数据的仓库。通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里可以有很多字段。字段一字排开,对应的数据就一行一行写入表中。数据库的美,在于能够用二维表现多维关系。目前市面上流行的数据库都是二维数据库。如:Oracle、DB2、MySQL、Sybase、MS SQL Server等。
  数据仓库:是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现的存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析。
  接下来,就是详细说明了。在IT的架构体系中,数据库是必须存在的。必须要有地方存放数据。比如现在的网购,淘宝,京东等等。物品的存货数量,货品的价格,用户的账户余额之类的。这些数据都是存放在后台数据库中。或者最简单理解,我们现在微博,QQ等账户的用户名和密码。在后台数据库必然有一张user表,字段起码有两个,即用户名和密码,然后我们的数据就一行一行的存在表上面。当我们登录的时候,我们填写了用户名和密码,这些数据就会被传回到后台去,去跟表上面的数据匹配,匹配成功了,你就能登录了。匹配不成功就会报错说密码错误或者没有此用户名等。这个就是数据库,数据库在生产环境就是用来干活的。凡是跟业务应用挂钩的,我们都使用数据库。
  而数据仓库则是BI下的其中一种技术。由于数据库是跟业务应用挂钩的,所以一个数据库不可能装下一家公司的所有数据。数据库的表设计往往是针对某一个应用进行设计的。比如刚才那个登录的功能,这张user表上就只有这两个字段,没有别的字段了。但是这张表符合应用,没有问题。但是这张表不符合分析。比如我想知道在哪个时间段,用户登录的量最多?哪个用户一年购物最多?诸如此类的指标。那就要重新设计数据库的表结构了。对于数据分析和数据挖掘,我们引入数据仓库概念。数据仓库的表结构是依照分析需求,分析维度,分析指标进行设计的。数据仓库的数据来源于那些后台持续不停运作的数据库表。数据的搬运就牵涉到另一个技术叫ETL。这个过程就是数据从一个数据库到了数据仓库。举个例子:
  一家公司有5个分公司,月末要进行财务统计。那每家分公司都有自己的数据库可对自己分公司进行数据统计,可是,这5家分公司各自数据库的表结构设计都不同。可以理解为数据库中的表的数量不同,表中的字段也不同。如果要统计整个公司,那势必要制定统一标准。那就用到数据仓库,数据仓库作为一个新的汇总数据库,定义表的数量和字段内容。那各家分公司就要根据总公司的标准将自己数据库中的数据向总公司的字段安排靠拢。当然这个过程就交给ETL中的T来完成,transform转换。E是extract,L是load。抽取,导入。那这样,数据就被运送到数据仓库中了。统计学告诉我们,样本要足够多,得出的结论才能更准确,更具普遍性。这也就是要将各地的数据库数据汇总到一个数据仓库之中的原因。
  数据仓库所用的数据库软件,听的比较多的是Teradata。用下来感觉Teradata也是很强悍的。数据仓库对于数据软件的要求是非常高的,对硬件要求也高,所以能够用得起数据仓库的公司都是有钱的主。Teradata是软件与硬件绑定的。也就是说TD公司会给你送来一个大机柜,里面是一台计算机服务器和存储设备。服务器中已经安装好数据库软件了。数据挖掘,数据统计映射到数据库软件这里的操作,就是排序和分组。对于海量数据库来说,排序是很可怕的事情。数据仓库每天将承受住大量的外来数据往库里插入,往数据库里插数据,也是很慢的。所以数据仓库的技术在于调优,架构不解决更本性问题。而普通生产数据,可以通过架构来调整,相对来说更注重HA,一般做数据库集群。

上一篇:PHP高并发高负载系统架构

下一篇:PHP软件中各种主流数据库的比较